From baaf117efb6af656ce6b37e885cc4e5df4b604e1 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Thu, 30 Mar 2017 14:26:01 -0700 Subject: [PATCH 001/336] Updates to System.Linq.Expressions for ProjectN These types seem to be used in very common scenarios. --- .../src/Resources/System.Linq.Expressions.rd.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml b/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml index 2653cc9a7170..fc659968399b 100644 --- a/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml +++ b/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml @@ -6,6 +6,10 @@ + + + + From ee080f7e4194a6307668dad33b31257b3cb60f59 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Fri, 31 Mar 2017 11:59:17 -0700 Subject: [PATCH 002/336] UAPAOT AppDomain start --- .../src/System/AppDomain.cs | 98 +++++++++++++++++-- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/src/System.Runtime.Extensions/src/System/AppDomain.cs b/src/System.Runtime.Extensions/src/System/AppDomain.cs index 326e2979840b..55da74e634a4 100644 --- a/src/System.Runtime.Extensions/src/System/AppDomain.cs +++ b/src/System.Runtime.Extensions/src/System/AppDomain.cs @@ -5,6 +5,7 @@ #pragma warning disable CS0067 // events are declared but not used using System; +using System.Collections.Generic; using System.Reflection; using System.Runtime.ExceptionServices; #if !uapaot @@ -25,7 +26,6 @@ private AppDomain() { } public static AppDomain CurrentDomain => s_domain; -#if !uapaot public string BaseDirectory => AppContext.BaseDirectory; public string RelativeSearchPath => null; @@ -35,7 +35,6 @@ public event UnhandledExceptionEventHandler UnhandledException add { AppContext.UnhandledException += value; } remove { AppContext.UnhandledException -= value; } } -#endif public string DynamicDirectory => null; @@ -59,7 +58,6 @@ public string FriendlyName public event EventHandler DomainUnload; -#if !uapaot public event EventHandler FirstChanceException { add { AppContext.FirstChanceException += value; } @@ -71,7 +69,6 @@ public event EventHandler ProcessExit add { AppContext.ProcessExit += value; } remove { AppContext.ProcessExit -= value; } } -#endif public string ApplyPolicy(string assemblyName) { @@ -150,7 +147,6 @@ public int ExecuteAssemblyByName(string assemblyName) => public int ExecuteAssemblyByName(string assemblyName, params string[] args) => ExecuteAssembly(Assembly.Load(assemblyName), args); -#if !uapaot public object GetData(string name) => AppContext.GetData(name); public void SetData(string name, object data) => AppContext.SetData(name, data); @@ -160,7 +156,6 @@ public int ExecuteAssemblyByName(string assemblyName, params string[] args) => bool result; return AppContext.TryGetSwitch(value, out result) ? result : default(bool?); } -#endif public bool IsDefaultAppDomain() => true; @@ -262,6 +257,97 @@ public event ResolveEventHandler ResourceResolve add { AssemblyLoadContext.ResourceResolve += value; } remove { AssemblyLoadContext.ResourceResolve -= value; } } +#else + public Assembly[] GetAssemblies() + { + List names = new List(); + List assemblies = new List(); + List stack = new List(); + + stack.Add(Assembly.GetEntryAssembly()); + names.Add(Assembly.GetEntryAssembly().FullName); + + while (stack.Count > 0) + { + Assembly assembly = stack[stack.Count - 1]; + stack.RemoveAt(stack.Count - 1); + assemblies.Add(assembly); +/* + foreach (var reference in assembly.GetReferencedAssemblies()) + { + if (!names.Contains(reference.FullName)) + { + stack.Add(reference); + names.Add(reference.FullName); + } + } +*/ + } + + return assemblies.ToArray(); + } + + public event AssemblyLoadEventHandler AssemblyLoad + { + add { throw new PlatformNotSupportedException(); } + remove { throw new PlatformNotSupportedException(); } + } + + public event ResolveEventHandler AssemblyResolve + { + add { throw new PlatformNotSupportedException(); } + remove { throw new PlatformNotSupportedException(); } + } + + public event ResolveEventHandler ReflectionOnlyAssemblyResolve; + + public event ResolveEventHandler TypeResolve + { + add { throw new PlatformNotSupportedException(); } + remove { throw new PlatformNotSupportedException(); } + } + + public event ResolveEventHandler ResourceResolve + { + add { throw new PlatformNotSupportedException(); } + remove { throw new PlatformNotSupportedException(); } + } + + public delegate void AssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args); + public delegate Assembly ResolveEventHandler(object sender, ResolveEventArgs args); + + public class AssemblyLoadEventArgs : EventArgs + { + private Assembly _LoadedAssembly; + + public Assembly LoadedAssembly { get { return _LoadedAssembly; } } + + public AssemblyLoadEventArgs(Assembly loadedAssembly) + { + _LoadedAssembly = loadedAssembly; + } + } + + public class ResolveEventArgs : EventArgs + { + private String _Name; + private Assembly _RequestingAssembly; + + public String Name { get { return _Name; } } + + public Assembly RequestingAssembly { get { return _RequestingAssembly; } } + + public ResolveEventArgs(String name) + { + _Name = name; + } + + public ResolveEventArgs(String name, Assembly requestingAssembly) + { + _Name = name; + _RequestingAssembly = requestingAssembly; + } + } #endif public void SetPrincipalPolicy(PrincipalPolicy policy) { } From 5f26892a02321c02c5296587994c8915137084f7 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Thu, 6 Apr 2017 12:55:12 -0700 Subject: [PATCH 003/336] Unify AppDomain --- .../src/ApiCompatBaseline.uapaot.txt | 22 ----- .../src/System/AppDomain.cs | 95 ------------------- 2 files changed, 117 deletions(-) diff --git a/src/System.Runtime.Extensions/src/ApiCompatBaseline.uapaot.txt b/src/System.Runtime.Extensions/src/ApiCompatBaseline.uapaot.txt index aaaffe744f52..26243e41df20 100644 --- a/src/System.Runtime.Extensions/src/ApiCompatBaseline.uapaot.txt +++ b/src/System.Runtime.Extensions/src/ApiCompatBaseline.uapaot.txt @@ -1,26 +1,4 @@ Compat issues with assembly System.Runtime.Extensions: -MembersMustExist : Member 'System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.BaseDirectory.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetAssemblies()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.IsCompatibilitySwitchSet(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.RelativeSearchPath.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Math.Clamp(System.Byte, System.Byte, System.Byte)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Math.Clamp(System.Decimal, System.Decimal, System.Decimal)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Math.Clamp(System.Double, System.Double, System.Double)' does not exist in the implementation but it does exist in the contract. diff --git a/src/System.Runtime.Extensions/src/System/AppDomain.cs b/src/System.Runtime.Extensions/src/System/AppDomain.cs index 55da74e634a4..28cde338a872 100644 --- a/src/System.Runtime.Extensions/src/System/AppDomain.cs +++ b/src/System.Runtime.Extensions/src/System/AppDomain.cs @@ -8,9 +8,7 @@ using System.Collections.Generic; using System.Reflection; using System.Runtime.ExceptionServices; -#if !uapaot using System.Runtime.Loader; -#endif using System.IO; using System.Security.Principal; @@ -229,7 +227,6 @@ public void SetShadowCopyFiles() { } [ObsoleteAttribute("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")] public void SetShadowCopyPath(string path) { } -#if !uapaot public Assembly[] GetAssemblies() => AssemblyLoadContext.GetLoadedAssemblies(); public event AssemblyLoadEventHandler AssemblyLoad @@ -257,98 +254,6 @@ public event ResolveEventHandler ResourceResolve add { AssemblyLoadContext.ResourceResolve += value; } remove { AssemblyLoadContext.ResourceResolve -= value; } } -#else - public Assembly[] GetAssemblies() - { - List names = new List(); - List assemblies = new List(); - List stack = new List(); - - stack.Add(Assembly.GetEntryAssembly()); - names.Add(Assembly.GetEntryAssembly().FullName); - - while (stack.Count > 0) - { - Assembly assembly = stack[stack.Count - 1]; - stack.RemoveAt(stack.Count - 1); - assemblies.Add(assembly); -/* - foreach (var reference in assembly.GetReferencedAssemblies()) - { - if (!names.Contains(reference.FullName)) - { - stack.Add(reference); - names.Add(reference.FullName); - } - } -*/ - } - - return assemblies.ToArray(); - } - - public event AssemblyLoadEventHandler AssemblyLoad - { - add { throw new PlatformNotSupportedException(); } - remove { throw new PlatformNotSupportedException(); } - } - - public event ResolveEventHandler AssemblyResolve - { - add { throw new PlatformNotSupportedException(); } - remove { throw new PlatformNotSupportedException(); } - } - - public event ResolveEventHandler ReflectionOnlyAssemblyResolve; - - public event ResolveEventHandler TypeResolve - { - add { throw new PlatformNotSupportedException(); } - remove { throw new PlatformNotSupportedException(); } - } - - public event ResolveEventHandler ResourceResolve - { - add { throw new PlatformNotSupportedException(); } - remove { throw new PlatformNotSupportedException(); } - } - - public delegate void AssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args); - public delegate Assembly ResolveEventHandler(object sender, ResolveEventArgs args); - - public class AssemblyLoadEventArgs : EventArgs - { - private Assembly _LoadedAssembly; - - public Assembly LoadedAssembly { get { return _LoadedAssembly; } } - - public AssemblyLoadEventArgs(Assembly loadedAssembly) - { - _LoadedAssembly = loadedAssembly; - } - } - - public class ResolveEventArgs : EventArgs - { - private String _Name; - private Assembly _RequestingAssembly; - - public String Name { get { return _Name; } } - - public Assembly RequestingAssembly { get { return _RequestingAssembly; } } - - public ResolveEventArgs(String name) - { - _Name = name; - } - - public ResolveEventArgs(String name, Assembly requestingAssembly) - { - _Name = name; - _RequestingAssembly = requestingAssembly; - } - } -#endif public void SetPrincipalPolicy(PrincipalPolicy policy) { } From e22b2b7e5eac7ab1f087428ed8fdfe2d0034569d Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Thu, 6 Apr 2017 13:13:21 -0700 Subject: [PATCH 004/336] More baseline updates --- .../ApiCompatBaseline.netcoreapp.netfx461.txt | 3987 ++++++--- ...ompatBaseline.netcoreapp.netstandard20.txt | 7641 ++++++++++++++++- ...tBaseline.netcoreapp.netstandard20Only.txt | 2374 ++++- 3 files changed, 12980 insertions(+), 1022 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index 1ae1014a4a19..4afd0fb5938c 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -1,4 +1,21 @@ -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'mscorlib'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Core'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Composition'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.DataAnnotations'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.FileSystem'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceModel.Web'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Transactions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Windows'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Web'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Serialization'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Linq'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)'. @@ -6,451 +23,671 @@ DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: -MembersMustExist : Member 'Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.DynData' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.Win32.RegistryHive Microsoft.Win32.RegistryHive.DynData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.Registry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryHive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryKeyPermissionCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryValueKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryValueOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeAccessTokenHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeRegistryHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System._AppDomain' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AccessViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ActivationContext' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Activator' is abstract in the implementation but is not abstract in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Activator' does not implement interface 'System.Runtime.InteropServices._Activator' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String, System.Object)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AggregateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AppDomain' does not implement interface 'System._AppDomain' in the implementation but it does in the contract. -MembersMustExist : Member 'System.AppDomain.ActivationContext.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ApplicationIdentity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ApplicationTrust.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup, System.Security.PermissionSet, System.Security.Policy.StrongName[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean, System.AppDomainInitializer, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable, System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DoCallBack(System.CrossAppDomainDelegate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DomainManager.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[], System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.Reflection.AssemblyName, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetAppDomainPolicy(System.Security.Policy.PolicyLevel)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetupInformation.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainInitializer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainManagerInitializationOptions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainSetup' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AppDomainUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ApplicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentNullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArithmeticException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Attribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AttributeUsageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.BadImageFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CannotUnloadAppDomainException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CLSCompliantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ContextMarshalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ContextStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.CrossAppDomainDelegate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DataMisalignedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DivideByZeroException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DllNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DuplicateWaitObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.EntryPointNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ExecutionEngineException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FieldAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IAppDomainSetup' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IndexOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientExecutionStackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidCastException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidProgramException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.LoaderOptimizationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.MarshalByRefObject.CreateObjRef(System.Type)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MemberAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MethodAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingFieldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingMemberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingMethodException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MTAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MulticastNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NonSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotFiniteNumberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotImplementedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NullReferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ObjectDisposedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ObsoleteAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OperationCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OutOfMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ParamArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.PlatformNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.RankException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.SerializableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.StackOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.STAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.SystemException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ThreadStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Type' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeInitializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.UnauthorizedAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Collections.Generic.KeyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Deployment.Internal.InternalActivationContextHelper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Deployment.Internal.InternalApplicationIdentityHelper' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.ConditionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotMakeTypeAbstract : Type 'System.Diagnostics.Debugger' is abstract in the implementation but is not abstract in the contract. -MembersMustExist : Member 'System.Diagnostics.Debugger..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Diagnostics.StackTrace..ctor(System.Threading.Thread, System.Boolean)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.PureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.Contracts.Internal.ContractHelper' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Globalization.CultureNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.Directory.CreateDirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.SetAccessControl(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.Create(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.CreateSubdirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.SetAccessControl(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.DirectoryNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.DriveNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.EndOfStreamException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.File.Create(System.String, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.SetAccessControl(System.String, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IOException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.PathTooLongException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorage.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityOptions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityState' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AmbiguousMatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Assembly' does not implement interface 'System.Runtime.InteropServices._Assembly' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFile(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadWithPartialName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCompanyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyConfigurationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCopyrightAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCultureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDelaySignAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFileVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyFileAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyMetadataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyName' does not implement interface 'System.Runtime.InteropServices._AssemblyName' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyProductAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTitleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTrademarkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ConstructorInfo' does not implement interface 'System.Runtime.InteropServices._ConstructorInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.CustomAttributeFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.DefaultMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.EventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.FieldInfo' does not implement interface 'System.Runtime.InteropServices._FieldInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.InvalidFilterCriteriaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MemberInfo' does not implement interface 'System.Runtime.InteropServices._MemberInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodBase' does not implement interface 'System.Runtime.InteropServices._MethodBase' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodInfo' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Module' does not implement interface 'System.Runtime.InteropServices._Module' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Module.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ParameterInfo' does not implement interface 'System.Runtime.InteropServices._ParameterInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.PropertyInfo' does not implement interface 'System.Runtime.InteropServices._PropertyInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ReflectionTypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetInvocationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetParameterCountException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeDelegator' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeInfo' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.AssemblyBuilder' does not implement interface 'System.Runtime.InteropServices._AssemblyBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String, System.Reflection.PortableExecutableKinds, System.Reflection.ImageFileMachine)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.ReflectionOnly' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.Save' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ConstructorBuilder' does not implement interface 'System.Runtime.InteropServices._ConstructorBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.ReturnType.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.CustomAttributeBuilder' does not implement interface 'System.Runtime.InteropServices._CustomAttributeBuilder' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.AssemblyBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.AssemblyBuilderAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.ConstructorBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.CustomAttributeBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.DynamicILInfo' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.DynamicMethod' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.GetDynamicILInfo()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EnumBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.CreateType()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EventBuilder' does not implement interface 'System.Runtime.InteropServices._EventBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EventBuilder.GetEventToken()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.DynamicMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.EnumBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.EventBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.EventToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.ExceptionHandler' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.FieldBuilder' does not implement interface 'System.Runtime.InteropServices._FieldBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FieldBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.FieldToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.GenericTypeParameterBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ILGenerator' does not implement interface 'System.Runtime.InteropServices._ILGenerator' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.LocalBuilder' does not implement interface 'System.Runtime.InteropServices._LocalBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.MethodBuilder' does not implement interface 'System.Runtime.InteropServices._MethodBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.CreateMethodBody(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.ILGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.Label' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.LocalBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.MethodBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.MethodRental' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.MethodToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ModuleBuilder' does not implement interface 'System.Runtime.InteropServices._ModuleBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineDocument(System.String, System.Guid, System.Guid, System.Guid)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineManifestResource(System.String, System.IO.Stream, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSymWriter()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.IsTransient()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetUserEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ParameterBuilder' does not implement interface 'System.Runtime.InteropServices._ParameterBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.ModuleBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.ParameterBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.ParameterToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.PEFileKinds' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.PropertyBuilder' does not implement interface 'System.Runtime.InteropServices._PropertyBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.PropertyBuilder.PropertyToken.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PropertyBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.PropertyToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.SignatureHelper' does not implement interface 'System.Runtime.InteropServices._SignatureHelper' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.SignatureHelper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.SignatureToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.StringToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.TypeBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.TypeBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.TypeToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.UnmanagedMarshal' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingManifestResourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingSatelliteAssemblyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceManager.ResourceSets' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.String System.Resources.ResourceManager.BaseNameField' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceSet.Table' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Resources.IResourceReader System.Resources.ResourceSet.Reader' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.SatelliteContractVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.ProfileOptimization' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.IDispatchConstantAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.DesignerServices.WindowsRuntimeDesignerContext' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Hosting.ActivationArguments' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Hosting.ApplicationActivator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._Activator' does not exist in the implementation but it does exist in the contract. @@ -484,44 +721,66 @@ TypesMustExist : Type 'System.Runtime.InteropServices._SignatureHelper' does not TypesMustExist : Type 'System.Runtime.InteropServices._Thread' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._Type' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._TypeBuilder' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.AssemblyRegistrationFlags' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AutomationProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.AutomationProxyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.BIND_OPTS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.CALLCONV' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.CoClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.COMException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.DESCKIND' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DispIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DllImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.EXCEPINFO' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ExporterEventKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ExtensibleClassFactory' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ExternalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FILETIME' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCKIND' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.GuidAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDLDESC' does not exist in the implementation but it does exist in the contract. @@ -529,71 +788,48 @@ TypesMustExist : Type 'System.Runtime.InteropServices.IDLFLAG' does not exist in TypesMustExist : Type 'System.Runtime.InteropServices.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ImportedFromTypeLibAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ImporterEventKind' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.INVOKEKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IRegistrationServices' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNameProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNotifySink' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibImporterNotifySink' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetActiveObject(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComInterfaceForObjectInContext(System.Object, System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComSlotForMethodInfo(System.Reflection.MemberInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetEndComSlot(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetExceptionPointers()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIDispatchForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetITypeInfoForType(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIUnknownForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetManagedThunkForUnmanagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetMethodInfoForComSlot(System.Type, System.Int32, System.Runtime.InteropServices.ComMemberType)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetThreadFromFiberCookie(System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeForITypeInfo(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibVersionForAssembly(System.Reflection.Assembly, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetUnmanagedThunkForManagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.IsTypeVisibleFromCom(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.NumParamBytes(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.ReleaseThreadCache()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ObjectCreationDelegate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OptionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.PARAMDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationClassContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationConnectionType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationServices' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is abstract in the implementation but is not abstract in the contract. -CannotSealType : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is sealed in the implementation but not sealed in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.RuntimeEnvironment..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SEHException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.STATSTG' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.SYSKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEATTR' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibConverter' does not exist in the implementation but it does exist in the contract. @@ -622,18 +858,72 @@ TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIStream' does not exis TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeComp' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeLib' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.Expando.IExpando' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.EventRegistrationTokenTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.IActivationFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.WriteOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WriteOnlyArrayAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.ActivatedClientTypeEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.ActivatedServiceTypeEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.CustomErrorsModes' does not exist in the implementation but it does exist in the contract. @@ -776,150 +1066,464 @@ TypesMustExist : Type 'System.Runtime.Remoting.Proxies.RealProxy' does not exist TypesMustExist : Type 'System.Runtime.Remoting.Services.EnterpriseServicesHelper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.Services.ITrackingHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.Services.TrackingServices' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.SerializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.IFieldInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalRM' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalST' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ISoapMessage' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ServerFault' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapFault' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapMessage' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not implement interface 'System.Runtime.Remoting.Messaging.IRemotingFormatter' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.HostProtectionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.CodeAccessPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostProtectionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostSecurityManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostSecurityManagerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IEvidenceFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityPolicyEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IStackWalk' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.NamedPermissionSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PermissionSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PolicyLevelType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.ReadOnlyPermissionSet' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Object, System.Object, System.Reflection.MethodInfo, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Reflection.AssemblyName, System.Security.PermissionSet, System.Security.PermissionSet, System.Reflection.MethodInfo, System.Security.Permissions.SecurityAction, System.Object, System.Security.IPermission, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Action.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Action.set(System.Security.Permissions.SecurityAction)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.set(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Zone.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityRulesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecuritySafeCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTransparentAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTreatAsSafeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.UnverifiableCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.VerificationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.XmlSyntaxException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityContextSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.XmlSyntaxException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlActions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlModification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlSections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceQualifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CompoundAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CompoundAceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ControlFlags' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAccessRule' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAuditRule' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyRights' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeySecurity' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CustomAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DiscretionaryAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.InheritanceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.KnownAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.NativeObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.PropagationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.QualifiedAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RawAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RawSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ResourceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SecurityInfos' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SystemAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.CryptoAPITransform' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspKeyContainerInfo.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.HMACRIPEMD160' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.MACTripleDES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RijndaelManagedTransform' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160Managed' does not exist in the implementation but it does exist in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA1Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA256Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA384Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA512Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.HostProtectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PermissionSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UIPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.HostProtectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.HostProtectionResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageContainment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IUnrestrictedPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PermissionSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PermissionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PrincipalPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNamePublicKeyBlob' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionClipboard' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionWindow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.AllMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationDirectory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationDirectoryMembershipCondition' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrust' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrustCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrustEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationVersionMatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.CodeConnectAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.CodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Evidence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.EvidenceBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.FileCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.FirstMatchCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.GacInstalled' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.GacMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Hash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.HashMembershipCondition' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Policy.IApplicationTrustManager' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Policy.PolicyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Principal.IdentityNotMappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.IIdentityPermissionFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.IMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.NetCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PermissionRequestEvidence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyStatementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Publisher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PublisherMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Site' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.SiteMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.StrongName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.StrongNameMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.TrustManagerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.TrustManagerUIContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.UnionCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Url' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.UrlMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Zone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ZoneMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityNotMappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityReferenceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.NTAccount' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.SecurityIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenAccessLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WellKnownSidType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Principal.WindowsAccountType' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.Security.Principal.WindowsIdentity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.UserClaims.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsBuiltInRole' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsIdentity' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Principal.WindowsImpersonationContext' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.UserClaims.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.DecoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.EncoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.AbandonedMutexException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle..ctor(System.Boolean, System.Threading.EventResetMode, System.String, System.Boolean, System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.OpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.SetAccessControl(System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.TryOpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights, System.Threading.EventWaitHandle)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Mutex..ctor(System.Boolean, System.String, System.Boolean, System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.OpenExisting(System.String, System.Security.AccessControl.MutexRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.SetAccessControl(System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.TryOpenExisting(System.String, System.Security.AccessControl.MutexRights, System.Threading.Mutex)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SynchronizationLockException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Thread' does not implement interface 'System.Runtime.InteropServices._Thread' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Thread.CurrentContext.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadAbortException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadInterruptedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStartException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskSchedulerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System: +TypesMustExist : Type 'Microsoft.CSharp.CSharpCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.VBCodeProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.IntranetZoneCredentialPolicy' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventHandler' does not exist in the implementation but it does exist in the contract. @@ -940,91 +1544,488 @@ TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventArgs' does not TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventHandler' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.UriFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AmbientValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.ComponentModel.AsyncCompletedEventArgs..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AttributeProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.CategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerCategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DisplayNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ImmutableObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InheritanceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InitializationEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InstallerTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidEnumArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ListBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LocalizableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.MergablePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PropertyTabAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ProvidePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ReadOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RunInstallerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.SettingsBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeConverterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.WarningException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Win32Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.CheckoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ConfigurationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.DefaultSettingValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsManageabilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsSerializeAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SpecialSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.UserScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriIdnScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArgumentReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArrayCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArrayIndexerExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAssignStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttachEventStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeArgumentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclarationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBaseReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCastExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCatchClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCatchClauseCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeChecksumPragma' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCommentStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCommentStatementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCompileUnit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeConditionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeConstructor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDefaultValueExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDelegateCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDelegateInvokeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirectionExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirective' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirectiveCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeEntryPointMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeEventReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpressionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpressionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeFieldReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeGotoStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeIndexerExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeIterationStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeLabeledStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeLinePragma' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberField' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodInvokeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodReturnStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceImportCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeObjectCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpressionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePrimitiveExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePropertyReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePropertySetValueReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRegionDirective' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRegionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRemoveEventStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetCompileUnit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetTypeMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeStatementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeThisReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeThrowExceptionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTryCatchFinallyStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeConstructor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDeclarationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeMemberCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeOfExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeVariableDeclarationStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeVariableReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.FieldDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.MemberAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeCompiler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeDomProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeGeneratorOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerResults' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.Executor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratorSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeCompiler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.LanguageOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.TempFileCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationSettingsBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationSettingsGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.AppSettingsReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ClientSettingsSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigXmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DefaultSettingValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DictionarySectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IApplicationSettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IConfigurationSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IConfigurationSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IdnElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IgnoreSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IPersistComponentSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IriParsingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ISettingsProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.LocalFileSettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueFileSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SchemeSettingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SchemeSettingElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsAttributeDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsGroupNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsLoadedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsLoadedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsManageability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsManageabilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProviderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSavingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSerializeAs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSerializeAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingValueElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SingleTagSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SpecialSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SpecialSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UriSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UserScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UserSettingsGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.ConsoleTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterCreationData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterCreationDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CounterSample' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterSampleCalculator' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Debug.Listeners.get()' does not exist in the implementation but it does exist in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.DelimitedListTraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.DiagnosticsConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventHandler' does not exist in the implementation but it does exist in the contract. @@ -1040,56 +2041,187 @@ TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntry' does not exis TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventLogTraceListener' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventSourceCreationData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.ICollectData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceDataCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceDataCollectionCollection' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.OverflowAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.PerformanceCounter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategory' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategoryType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.PerformanceCounterInstanceLifetime' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAccess' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.Switch.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchLevelAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceSource.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. +TypesMustExist : Type 'System.Diagnostics.PerformanceCounterType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.XmlWriterTraceListener' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.InternalBufferOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.InvalidDataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.IODescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.Handshake' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.Parity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPort' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.StopBits' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SoundPlayer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SystemSound' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SystemSounds' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.DnsPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.DnsPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.EndpointPermission' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.HttpListenerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotMakeTypeAbstract : Type 'System.Net.HttpVersion' is abstract in the implementation but is not abstract in the contract. -CannotSealType : Type 'System.Net.HttpVersion' is sealed in the implementation but not sealed in the contract. -MembersMustExist : Member 'System.Net.HttpVersion..ctor()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.ICertificatePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.NetworkAccess' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.set(System.Net.ICertificatePolicy)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermissionAttribute' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.TransportContext.GetTlsTokenBindings()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.TransportType' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.WebPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.WebPermissionAttribute' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WriteStreamClosedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WriteStreamClosedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModulesSection' does not exist in the implementation but it does exist in the contract. @@ -1124,52 +2256,248 @@ TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElement' does no TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.WebRequestModulesSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.WebUtilityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpAccess' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.PingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.SocketClientAccessPolicyProtocol' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketFlags System.Net.Sockets.SocketFlags.MaxIOVectorLength' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebSockets.WebSocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.ICustomTypeProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.StandardOleMarshalObject' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.AuthenticationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.InvalidCredentialException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBinding' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBindingType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Claims.DynamicRoleClaimProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StorePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBaseEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Text.RegularExpressions.RegexCompilationInfo' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.BarrierPostPhaseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Semaphore..ctor(System.Int32, System.Int32, System.String, System.Boolean, System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.OpenExisting(System.String, System.Security.AccessControl.SemaphoreRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.SetAccessControl(System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.TryOpenExisting(System.String, System.Security.AccessControl.SemaphoreRights, System.Threading.Semaphore)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Timers.TimersDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermissionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Windows.Markup.ValueSerializerAttribute' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ComponentModel.Composition: +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.AttributedModelServices' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.CatalogReflectionContextAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.ChangeRejectedException' does not exist in the implementation but it does exist in the contract. @@ -1233,48 +2561,88 @@ TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.LazyMem TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ComponentModel.DataAnnotations: TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.BindableTypeAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.IValidatableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MetadataTypeAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldTableAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Validator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Core: -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventSchemaTraceListener' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.TraceLogRetentionOption' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.UnescapedXmlDiagnosticData' does not exist in the implementation but it does exist in the contract. @@ -1321,21 +2689,111 @@ TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstance' do TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterType' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(System.IO.FileStream, System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateOrOpen(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.SetAccessControl(System.IO.MemoryMappedFiles.MemoryMappedFileSecurity)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileSecurity' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.AnonymousPipeServerStream..ctor(System.IO.Pipes.PipeDirection, System.IO.HandleInheritability, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeClientStream..ctor(System.String, System.String, System.IO.Pipes.PipeAccessRights, System.IO.Pipes.PipeOptions, System.Security.Principal.TokenImpersonationLevel, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability, System.IO.Pipes.PipeAccessRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.PipeStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.PipeStream.SetAccessControl(System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder, System.Runtime.CompilerServices.DebugInfoGenerator)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeAccessRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstanceNotFoundException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationBaseException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationException' does not exist in the implementation but it does exist in the contract. @@ -1356,55 +2814,84 @@ TypesMustExist : Type 'System.Management.Instrumentation.ManagementReferenceAttr TypesMustExist : Type 'System.Management.Instrumentation.ManagementRemoveAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.ManagementTaskAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.WmiConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteOps' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.Closure' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.ExecutionScope' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeOps' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.ManifestKinds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithmGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngExportPolicies' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyBlobFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyHandleOpenOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyOpenOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngKeyUsages' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngPropertyOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngUIPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CngUIProtectionLevels' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellman' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCngPublicKey' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanKeyDerivationFunction' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.FromXmlString(System.String, System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.set(System.Security.Cryptography.CngAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[], System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ToXmlString(System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Int32, System.Int32, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsaCng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECKeyXmlFormat' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformationCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.MD5Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA1Cng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA256Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SignatureVerificationResult' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.StrongNameSignatureInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.AuthenticodeSignatureInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TimestampInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TrustStatus' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Data: TypesMustExist : Type 'Microsoft.SqlServer.Server.DataAccessKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.Format' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.IBinarySerialize' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.InvalidUdtException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlDataRecord' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFacetAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFunctionAttribute' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String, System.Boolean, System.Boolean, System.Data.SqlClient.SortOrder, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.DbType.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.Type.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMetaData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMethodAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlPipe' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlProcedureAttribute' does not exist in the implementation but it does exist in the contract. @@ -1414,41 +2901,167 @@ TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedAggregateAttribu TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SystemDataAccessKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.TriggerAction' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.ConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.DataSetSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataSysDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DBConcurrencyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DeletedRowInaccessibleException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DuplicateNameException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.EvaluateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InRowChangingEventException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidExpressionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.MissingPrimaryKeyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.NoNullAllowedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.OperationAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.OperationAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.ReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.RowNotInTableException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.StrongTypingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SyntaxErrorException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGenerator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGeneratorException' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.VersionNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DBDataPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DBDataPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactories' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactoriesConfigurationHandler' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.Common.DbProviderFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.Odbc.OdbcConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Odbc.OdbcException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.Odbc.OdbcFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcParameterCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbCommand' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbCommandBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbConnection' does not exist in the implementation but it does exist in the contract. @@ -1478,11 +3091,15 @@ TypesMustExist : Type 'System.Data.OleDb.OleDbTransaction' does not exist in the TypesMustExist : Type 'System.Data.OleDb.OleDbType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Sql.SqlDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Sql.SqlNotificationRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.ApplicationIntent' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.OnChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SortOrder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlAuthenticationMethod' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopyOptions System.Data.SqlClient.SqlBulkCopyOptions.AllowEncryptedValueModifications' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlClientFactory' does not implement interface 'System.IServiceProvider' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlClientFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlClientFactory' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermissionAttribute' does not exist in the implementation but it does exist in the contract. @@ -1490,83 +3107,61 @@ TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCertificateStore TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCngProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCspProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlCommand' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand..ctor(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.SqlClient.SqlCommandColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object, System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Clone()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteXmlReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.set(System.Data.Sql.SqlNotificationRequest)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ResetCommandTimeout()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlCommand' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlConnection' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection..ctor(System.String, System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.set(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.Data.SqlClient.SqlCredential, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ColumnEncryptionTrustedMasterKeyPaths.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.set(System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlConnection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.set(System.Data.SqlClient.SqlAuthenticationMethod)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.set(System.Data.SqlClient.SqlConnectionColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.set(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.set(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCredential' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlDataReader.IsCommandBehavior(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlDataReader' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SQLDebugging' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlDependency' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationSource' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationType' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlParameter' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Boolean, System.Object, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.set(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Data.SqlDbType, System.Int32, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.SqlFileStream' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNotFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNullValueException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTruncateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.SqlTypesSchemaImporterExtensionHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBigIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBinarySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBitSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. @@ -1601,6 +3196,8 @@ TypesMustExist : Type 'System.Drawing.BufferedGraphics' does not exist in the im TypesMustExist : Type 'System.Drawing.BufferedGraphicsContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.BufferedGraphicsManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CharacterRange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.ColorConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ColorTranslator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ContentAlignment' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CopyPixelOperation' does not exist in the implementation but it does exist in the contract. @@ -1617,10 +3214,21 @@ TypesMustExist : Type 'System.Drawing.Image' does not exist in the implementatio TypesMustExist : Type 'System.Drawing.ImageAnimator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageFormatConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pen' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pens' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Region' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.RotateFlipType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeFConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SolidBrush' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringAlignment' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringDigitSubstitute' does not exist in the implementation but it does exist in the contract. @@ -1629,7 +3237,7 @@ TypesMustExist : Type 'System.Drawing.StringFormatFlags' does not exist in the i TypesMustExist : Type 'System.Drawing.StringTrimming' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringUnit' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemBrushes' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Drawing.SystemColors' is abstract in the implementation but is not abstract in the contract. +TypesMustExist : Type 'System.Drawing.SystemColors' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemFonts' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemIcons' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemPens' does not exist in the implementation but it does exist in the contract. @@ -1759,18 +3367,55 @@ TypesMustExist : Type 'System.Drawing.Text.HotkeyPrefix' does not exist in the i TypesMustExist : Type 'System.Drawing.Text.InstalledFontCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Text.PrivateFontCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Text.TextRenderingHint' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Compression.FileSystem: +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Net: -CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.INetworkProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.IPEndPointCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.IUnsafeWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.NetworkProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.UiSynchronizationContext' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WriteStreamClosedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WriteStreamClosedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Cloud' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.CloudCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.PeerName' does not exist in the implementation but it does exist in the contract. @@ -1819,37 +3464,54 @@ TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.RefreshDataCompletedE TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscribeCompletedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionListChangedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.HttpPolicyDownloaderProtocol' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.SecurityCriticalAction' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.SocketPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.UdpAnySourceMulticastClient' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.UdpSingleSourceMulticastClient' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Numerics: +TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Matrix3x2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Matrix4x4' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Plane' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Quaternion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector3' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector4' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Runtime.Serialization: -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.IDataContractSurrogate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.ImportOptions' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.InvalidDataContractException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.NetDataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractImporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DataContractSerializerSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DeclaredTypeElement' does not exist in the implementation but it does exist in the contract. @@ -1860,19 +3522,35 @@ TypesMustExist : Type 'System.Runtime.Serialization.Configuration.ParameterEleme TypesMustExist : Type 'System.Runtime.Serialization.Configuration.SerializationSectionGroup' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElementCollection' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomReaderInitializer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ServiceModel.Web: -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpBinding' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpSecurity' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpSecurityMode' does not exist in the implementation but it does exist in the contract. @@ -1919,13 +3597,42 @@ TypesMustExist : Type 'System.ServiceModel.Web.WebMessageFormat' does not exist TypesMustExist : Type 'System.ServiceModel.Web.WebOperationContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.Web.WebServiceHost' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Transactions: +TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionInDoubtException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionManagerCommunicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionPromotionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.Configuration.DefaultSettingsSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.Configuration.MachineSettingsSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.Configuration.TransactionsSectionGroup' does not exist in the implementation but it does exist in the contract. @@ -1988,6 +3695,7 @@ TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionBase' does not exis TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpTaskAsyncHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpUnhandledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpValidationStatus' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpWorkerRequest' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpWriter' does not exist in the implementation but it does exist in the contract. @@ -3305,55 +5013,246 @@ TypesMustExist : Type 'System.Web.Util.WorkItemCallback' does not exist in the i TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocket' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketOptions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Windows: +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Xml: -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XmlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.XmlReaderSettings..ctor(System.Xml.XmlResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver.CreateEvidenceForUrl(System.String)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IApplicationResourceStreamResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlXapResolver' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.CodeExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SchemaImporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapCodeExporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaExporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaImporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.XmlCodeExporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlMemberMapping.GenerateTypeName(System.CodeDom.Compiler.CodeDomProvider)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaImporter' does not inherit from base type 'System.Xml.Serialization.SchemaImporter' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.CodeDom.Compiler.CodeDomProvider, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers, System.Xml.Serialization.CodeGenerationOptions)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializerFactory.CreateSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtensionCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.Configuration.DateTimeSerializationSection' does not exist in the implementation but it does exist in the contract. @@ -3365,32 +5264,82 @@ TypesMustExist : Type 'System.Xml.Serialization.Configuration.SerializationSecti TypesMustExist : Type 'System.Xml.Serialization.Configuration.XmlSerializerSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlConfiguration.XmlReaderSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlConfiguration.XsltConfigSection' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XPath.XPathException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.CompileToType(System.Xml.XmlReader, System.Xml.Xsl.XsltSettings, System.Xml.XmlResolver, System.Boolean, System.Reflection.Emit.TypeBuilder, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltCompileException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XmlReader, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.Linq: +TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Xml.Serialization: -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -Total Issues: 3374 +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +Total Issues: 5302 diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt index fcc74cf8643c..cc0cb2a90a68 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt @@ -1 +1,7640 @@ -Total Issues: 0 +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.CSharp'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.VisualBasic'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Registry.AccessControl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Registry'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'mscorlib'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'netstandard'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.AppContext'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Buffers'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.CodeDom'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.Concurrent'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.NonGeneric'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.Specialized'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Annotations'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Composition'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.EventBasedAsync'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.TypeConverter'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.AttributedModel'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Convention'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Hosting'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Runtime'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.TypedParts'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Configuration.ConfigurationManager'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Console'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Core'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.Common'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.Odbc'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.SqlClient'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Contracts'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Debug'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.DiagnosticSource'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.FileVersionInfo'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Process'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.StackTrace'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TextWriterTraceListener'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Tools'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TraceSource'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Tracing'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices.AccountManagement'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices.Protocols'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Dynamic.Runtime'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization.Calendars'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization.Extensions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.FileSystem'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.ZipFile'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.AccessControl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.DriveInfo'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Watcher'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.IsolatedStorage'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.MemoryMappedFiles'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Packaging'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Pipes.AccessControl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Pipes'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Ports'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.UnmanagedMemoryStream'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Json'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Expressions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Parallel'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Queryable'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Memory'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Http'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Http.WinHttpHandler'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.NameResolution'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.NetworkInformation'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Ping'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Requests'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Security'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Sockets'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebHeaderCollection'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets.Client'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics.Vectors'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ObjectModel'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Context'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.DispatchProxy'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Extensions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.TypeExtensions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.Reader'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.ResourceManager'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.Writer'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.CompilerServices.Unsafe'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.CompilerServices.VisualC'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Extensions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Handles'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.InteropServices'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.InteropServices.RuntimeInformation'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Numerics'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Formatters'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Json'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Xml'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.AccessControl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Claims'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Algorithms'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Csp'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Encoding'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.OpenSsl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Pkcs'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Primitives'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.ProtectedData'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.X509Certificates'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Permissions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Principal'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Principal.Windows'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.SecureString'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceModel.Web'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceProcess.ServiceController'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding.CodePages'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding.Extensions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encodings.Web'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.RegularExpressions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.AccessControl'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Overlapped'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks.Dataflow'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks.Parallel'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Thread'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.ThreadPool'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Timer'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Transactions'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ValueTuple'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Web'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Windows'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Linq'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.ReaderWriter'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Serialization'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XDocument'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XmlDocument'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XmlSerializer'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XPath'. +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XPath.XDocument'. +Compat issues with assembly Microsoft.CSharp: +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.Binder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly Microsoft.VisualBasic: +TypesMustExist : Type 'Microsoft.VisualBasic.CallType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.Constants' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.HideModuleNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.Strings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Conversions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.DesignerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.IncompleteInitialization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.NewLateBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.ObjectFlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Operators' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.OptionCompareAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.OptionTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.ProjectData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.StandardModuleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.StaticLocalInitFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Utils' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly Microsoft.Win32.Primitives: +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly Microsoft.Win32.Registry: +TypesMustExist : Type 'Microsoft.Win32.Registry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryHive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryKeyPermissionCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryValueKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryValueOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.RegistryView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeRegistryHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly Microsoft.Win32.Registry.AccessControl: +TypesMustExist : Type 'Microsoft.Win32.RegistryAclExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly mscorlib: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly netstandard: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.AppContext: +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Buffers: +TypesMustExist : Type 'System.Buffers.ArrayPool' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.CodeDom: +TypesMustExist : Type 'Microsoft.CSharp.CSharpCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.VisualBasic.VBCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArgumentReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArrayCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeArrayIndexerExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAssignStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttachEventStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeArgumentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclarationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBaseReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCastExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCatchClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCatchClauseCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeChecksumPragma' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCommentStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCommentStatementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeCompileUnit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeConditionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeConstructor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDefaultValueExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDelegateCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDelegateInvokeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirectionExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirective' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeDirectiveCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeEntryPointMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeEventReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpressionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeExpressionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeFieldReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeGotoStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeIndexerExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeIterationStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeLabeledStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeLinePragma' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberField' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMemberProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodInvokeExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeMethodReturnStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeNamespaceImportCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeObjectCreateExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpressionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePrimitiveExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePropertyReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodePropertySetValueReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRegionDirective' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRegionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeRemoveEventStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetCompileUnit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeSnippetTypeMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeStatementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeThisReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeThrowExceptionStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTryCatchFinallyStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeConstructor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDeclarationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeMemberCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeOfExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeVariableDeclarationStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.CodeVariableReferenceExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.FieldDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.MemberAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeCompiler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeDomProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeGeneratorOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CodeParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.CompilerResults' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.Executor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratorSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeCompiler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.ICodeParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.LanguageOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.TempFileCollection' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections: +TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections.Concurrent: +TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections.NonGeneric: +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections.Specialized: +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel: +TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.Annotations: +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.IValidatableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Validator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.Composition: +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.EventBasedAsync: +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.Primitives: +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.TypeConverter: +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Composition.AttributedModel: +TypesMustExist : Type 'System.Composition.ExportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ExportMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ImportingConstructorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ImportManyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ImportMetadataConstraintAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.MetadataAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.OnImportsSatisfiedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.PartMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.PartNotDiscoverableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.SharedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.SharingBoundaryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.AttributedModelProvider' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Composition.Convention: +TypesMustExist : Type 'System.Composition.Convention.ConventionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.ExportConventionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.ImportConventionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.ParameterImportConventionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.PartConventionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Convention.PartConventionBuilder' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Composition.Hosting: +TypesMustExist : Type 'System.Composition.Hosting.CompositionHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.CompositeActivator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionDependency' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.DependencyAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptorPromise' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptorProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.LifetimeContext' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Composition.Runtime: +TypesMustExist : Type 'System.Composition.CompositionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Export' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.CompositionFailedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionContract' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Composition.TypedParts: +TypesMustExist : Type 'System.Composition.CompositionContextExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Composition.Hosting.ContainerConfiguration' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Configuration.ConfigurationManager: +TypesMustExist : Type 'System.UriIdnScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationSettingsBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ApplicationSettingsGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.AppSettingsReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.AppSettingsSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.CallbackValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.CallbackValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ClientSettingsSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.CommaDelimitedStringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.CommaDelimitedStringCollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Configuration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationAllowDefinition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationAllowExeDefinition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationCollectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationConverterBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationElementCollectionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationElementProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationErrorsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationFileMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationLocationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationLockCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationPropertyOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSaveMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSectionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSectionGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSectionGroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationUserLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigurationValidatorBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConfigXmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConnectionStringSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConnectionStringSettingsCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ConnectionStringsSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ContextInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DefaultSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DefaultSettingValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DefaultValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DictionarySectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.DpapiProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ElementInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ExeConfigurationFileMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ExeContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.GenericEnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IApplicationSettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IConfigurationSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IConfigurationSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IdnElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IgnoreSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IgnoreSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.InfiniteIntConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.InfiniteTimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IntegerValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IntegerValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IPersistComponentSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.IriParsingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ISettingsProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.KeyValueConfigurationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.KeyValueConfigurationElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.LocalFileSettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.LongValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.LongValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueConfigurationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueConfigurationElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueFileSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NameValueSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.OverrideMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.PositiveTimeSpanValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.PositiveTimeSpanValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.PropertyInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.PropertyInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.PropertyValueOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProtectedConfiguration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProtectedConfigurationProviderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProtectedConfigurationSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProtectedProviderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProviderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ProviderSettingsCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.RegexStringValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.RegexStringValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.RsaProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SchemeSettingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SchemeSettingElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsAttributeDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsGroupNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsLoadedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsLoadedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsManageability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsManageabilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsProviderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSavingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSerializeAs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingsSerializeAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SettingValueElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SingleTagSectionHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SpecialSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SpecialSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.StringValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.StringValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SubclassTypeValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.SubclassTypeValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanMinutesConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanMinutesOrInfiniteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanSecondsConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanSecondsOrInfiniteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TimeSpanValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.TypeNameConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UriSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UserScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.UserSettingsGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.ValidatorCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.WhiteSpaceTrimStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.DelegatingConfigHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IConfigErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IConfigSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IConfigurationManagerHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IConfigurationManagerInternal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigClientHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigConfigurationFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigRoot' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigSettingsFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.InternalConfigEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.InternalConfigEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Internal.StreamChangeCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Provider.ProviderBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Provider.ProviderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Provider.ProviderException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Console: +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Core: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Data: +TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Data.Common: +TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Data.Odbc: +TypesMustExist : Type 'System.Data.Odbc.OdbcCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Odbc.OdbcType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Data.SqlClient: +TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMetaData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.OperationAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.ApplicationIntent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlClientFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlErrorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlClient.SqlTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Contracts: +TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Debug: +TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.DiagnosticSource: +TypesMustExist : Type 'System.Diagnostics.Activity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DiagnosticListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DiagnosticSource' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.FileVersionInfo: +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Process: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.StackTrace: +TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.TextWriterTraceListener: +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Tools: +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.TraceSource: +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Tracing: +TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.DirectoryServices: +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectorySecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectorySecurityInheritance' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AuthenticationTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.CreateChildAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DeleteChildAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DeleteTreeAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DereferenceAlias' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryEntries' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryEntryConfiguration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectorySearcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryServicesCOMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectorySynchronization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectorySynchronizationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryVirtualListView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.DirectoryVirtualListViewContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ExtendedDN' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ExtendedRightAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ListChildrenAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PasswordEncodingMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PropertyAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PropertyAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PropertySetAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.PropertyValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ReferralChasingOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ResultPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ResultPropertyValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SchemaNameCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SearchResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SearchResultCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SearchScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SecurityMasks' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SortDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.SortOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryInterSiteTransport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectExistsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryPartition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryReplicationMetadata' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryRole' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryRoleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClassCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaProperty' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkBridge' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySubnet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySubnetCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySyntax' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamInstance' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamInstanceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamRole' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamRoleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ApplicationPartition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ApplicationPartitionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AttributeMetadata' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AttributeMetadataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ConfigurationSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryServer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryServerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.Domain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainCollisionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainController' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainControllerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.Forest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustCollisionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustCollisionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainInfoCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipCollision' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipCollisionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.GlobalCatalog' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.GlobalCatalogCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.HourOfDay' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.LocatorOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.MinuteOfHour' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.NotificationStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.PropertyTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyActiveDirectorySchemaClassCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyActiveDirectorySchemaPropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteLinkBridgeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteLinkCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyStringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationConnectionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationCursor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationCursorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationFailure' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationFailureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationNeighbor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationNeighborCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationSecurityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SchemaClassType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersErrorCategory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersErrorInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncUpdateCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameCollisionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustRelationshipInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustRelationshipInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.DirectoryServices.AccountManagement: +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.AdvancedFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.AuthenticablePrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ComputerPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ContextOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryObjectClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryRdnPrefixAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.GroupPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.GroupScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.IdentityType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.MatchType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.MultipleMatchesException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.NoMatchingPrincipalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PasswordException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.Principal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalExistsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalSearcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalSearchResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalServerDownException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.AccountManagement.UserPrincipal' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.DirectoryServices.Protocols: +TypesMustExist : Type 'System.DirectoryServices.Protocols.AddRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.AddResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.AsqRequestControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.AsqResponseControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.AuthType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.BerConversionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.BerConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.CompareRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.CompareResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.CrossDomainMoveControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DeleteRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DeleteResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DereferenceAlias' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DereferenceConnectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeModification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryControlCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryNotificationControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectorySynchronizationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirSyncRequestControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DirSyncResponseControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DomainScopeControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.DsmlAuthRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedDNControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedDNFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LazyCommitControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapDirectoryIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapSessionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.LocatorFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyDNRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyDNResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.NotifyOfNewConnectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.PageResultRequestControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.PageResultResponseControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.PartialResultProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.PartialResultsCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.PermissiveModifyControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.QueryClientCertificateCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.QueryForConnectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.QuotaControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ReferralCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ReferralChasingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ResultCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchOptionsControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultEntryCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultReferenceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityDescriptorFlagControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityMasks' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityPackageContextConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityProtocol' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.ShowDeletedControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SortKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SortRequestControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.SortResponseControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.TlsOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.TreeDeleteControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.VerifyNameControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.VerifyServerCertificateCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.VlvRequestControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DirectoryServices.Protocols.VlvResponseControl' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Drawing: +TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Drawing.Primitives: +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Dynamic.Runtime: +TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Globalization: +TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Globalization.Calendars: +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Globalization.Extensions: +TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO: +TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Compression: +TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Compression.FileSystem: +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Compression.ZipFile: +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.AccessControl: +TypesMustExist : Type 'System.IO.FileSystemAclExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.DriveInfo: +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.Primitives: +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.Watcher: +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.IsolatedStorage: +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.MemoryMappedFiles: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Packaging: +TypesMustExist : Type 'System.IO.FileFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.CompressionOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.EncryptionOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.Package' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackagePart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackagePartCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackageProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackageRelationship' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipSelectorType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.PackUriHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.TargetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.ZipPackage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Packaging.ZipPackagePart' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Pipes: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Pipes.AccessControl: +TypesMustExist : Type 'System.IO.Pipes.PipeAccessRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipesAclExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeSecurity' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Ports: +TypesMustExist : Type 'System.IO.Ports.Handshake' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.Parity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.SerialPort' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Ports.StopBits' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.UnmanagedMemoryStream: +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Json: +TypesMustExist : Type 'System.Json.JsonArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Json.JsonObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Json.JsonPrimitive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Json.JsonType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Json.JsonValue' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Linq: +TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Linq.Expressions: +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Linq.Parallel: +TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Linq.Queryable: +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Memory: +TypesMustExist : Type 'System.ReadOnlySpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Span' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SpanExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net: +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Http: +TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Http.WinHttpHandler: +TypesMustExist : Type 'System.Net.Http.CookieUsePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.WindowsProxyUsePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.WinHttpHandler' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.NameResolution: +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.NetworkInformation: +TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Ping: +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Primitives: +TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Requests: +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Security: +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Sockets: +TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.WebHeaderCollection: +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.WebSockets: +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.WebSockets.Client: +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Numerics: +TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Numerics.Vectors: +TypesMustExist : Type 'System.Numerics.Matrix3x2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Matrix4x4' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Plane' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Quaternion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector3' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Vector4' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ObjectModel: +TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection: +TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection.Context: +TypesMustExist : Type 'System.Reflection.Context.CustomReflectionContext' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection.DispatchProxy: +TypesMustExist : Type 'System.Reflection.DispatchProxy' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection.Extensions: +TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection.Primitives: +TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Reflection.TypeExtensions: +TypesMustExist : Type 'System.Reflection.AssemblyExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfoExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfoExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfoExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ModuleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfoExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Resources.Reader: +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Resources.ResourceManager: +TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Resources.Writer: +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime: +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.CompilerServices.Unsafe: +TypesMustExist : Type 'System.Runtime.CompilerServices.Unsafe' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.CompilerServices.VisualC: +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Extensions: +TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Handles: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.InteropServices: +TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.InteropServices.RuntimeInformation: +TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Numerics: +TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization: +TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization.Formatters: +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization.Json: +TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization.Primitives: +TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization.Xml: +TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.AccessControl: +TypesMustExist : Type 'System.Security.AccessControl.AccessControlActions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlModification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlSections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessControlType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceQualifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CommonSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CompoundAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CompoundAceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ControlFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.CustomAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.DiscretionaryAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.GenericSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.InheritanceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.KnownAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.NativeObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAceFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.PropagationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.QualifiedAce' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RawAcl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.RawSecurityDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.ResourceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SecurityInfos' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SystemAcl' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Claims: +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Algorithms: +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Csp: +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Encoding: +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.OpenSsl: +TypesMustExist : Type 'System.Security.Cryptography.DSAOpenSsl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsaOpenSsl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOpenSsl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SafeEvpPKeyHandle' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Pkcs: +TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObjectCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObjectEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.AlgorithmIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipientCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipientEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.ContentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.EnvelopedCms' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.KeyAgreeRecipientInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.KeyTransRecipientInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9AttributeObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9DocumentDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9DocumentName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9MessageDigest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9SigningTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.PublicKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierOrKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierOrKeyType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Xml.X509IssuerSerial' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Primitives: +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.ProtectedData: +TypesMustExist : Type 'System.Security.Cryptography.DataProtectionScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ProtectedData' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.X509Certificates: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Permissions: +TypesMustExist : Type 'System.ApplicationIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.CodeAccessPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostProtectionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostSecurityManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.HostSecurityManagerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IEvidenceFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityPolicyEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IStackWalk' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.NamedPermissionSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PermissionSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PolicyLevelType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityContextSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.XmlSyntaxException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.HostProtectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.HostProtectionResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageContainment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.IUnrestrictedPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PermissionSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PermissionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PrincipalPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBaseEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StorePermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.StrongNamePublicKeyBlob' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionClipboard' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UIPermissionWindow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.AllMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationDirectory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationDirectoryMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrust' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrustCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationTrustEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ApplicationVersionMatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.CodeConnectAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.CodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Evidence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.EvidenceBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.FileCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.FirstMatchCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.GacInstalled' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.GacMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Hash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.HashMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.IIdentityPermissionFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.IMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.NetCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PermissionRequestEvidence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyStatement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PolicyStatementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Publisher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.PublisherMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Site' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.SiteMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.StrongName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.StrongNameMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.TrustManagerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.TrustManagerUIContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.UnionCodeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Url' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.UrlMembershipCondition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.Zone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Policy.ZoneMembershipCondition' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Principal: +TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Principal.Windows: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeAccessTokenHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityNotMappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IdentityReferenceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.NTAccount' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.SecurityIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenAccessLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WellKnownSidType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsBuiltInRole' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.WindowsPrincipal' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.SecureString: +TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ServiceModel.Web: +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ServiceProcess.ServiceController: +TypesMustExist : Type 'System.ServiceProcess.ServiceController' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ServiceProcess.ServiceControllerStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ServiceProcess.ServiceStartMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ServiceProcess.ServiceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ServiceProcess.TimeoutException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Text.Encoding: +TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Text.Encoding.CodePages: +TypesMustExist : Type 'System.Text.CodePagesEncodingProvider' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Text.Encoding.Extensions: +TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Text.Encodings.Web: +TypesMustExist : Type 'System.Text.Encodings.Web.HtmlEncoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encodings.Web.JavaScriptEncoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encodings.Web.TextEncoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encodings.Web.TextEncoderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encodings.Web.UrlEncoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Unicode.UnicodeRange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Unicode.UnicodeRanges' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Text.RegularExpressions: +TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading: +TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.AccessControl: +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.MutexSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAccessRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAuditRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AccessControl.SemaphoreSecurity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadingAclExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Overlapped: +TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Tasks: +TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Tasks.Dataflow: +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ActionBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchedJoinBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchedJoinBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BroadcastBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BufferBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowBlockOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowLinkOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowMessageHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowMessageStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ExecutionDataflowBlockOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IDataflowBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IPropagatorBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IReceivableSourceBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ISourceBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ITargetBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.JoinBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.JoinBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.TransformBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.TransformManyBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Dataflow.WriteOnceBlock' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Tasks.Parallel: +TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Thread: +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.ThreadPool: +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.Timer: +TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Transactions: +TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ValueTuple: +TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Web: +TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Windows: +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml: +TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.Linq: +TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.ReaderWriter: +TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.Serialization: +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XDocument: +TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XmlDocument: +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XmlSerializer: +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XPath: +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XPath.XDocument: +TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. +Total Issues: 7329 diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt index d8e0869bb4c5..e8899bb0dccf 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt @@ -1,2 +1,2372 @@ -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. -Total Issues: 0 +DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'netstandard'. +Compat issues with assembly netstandard: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. +Total Issues: 2369 From 3ff8288e7d4fff4e0fb998ab697e995fe60d4315 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Thu, 6 Apr 2017 13:36:53 -0700 Subject: [PATCH 005/336] Fix baselines --- .../ApiCompatBaseline.netcoreapp.netfx461.txt | 3987 +++------ ...ompatBaseline.netcoreapp.netstandard20.txt | 7641 +---------------- ...tBaseline.netcoreapp.netstandard20Only.txt | 2374 +---- ...ApiCompatBaseline.uapaot.netstandard20.txt | 46 +- ...ompatBaseline.uapaot.netstandard20Only.txt | 24 +- 5 files changed, 1024 insertions(+), 13048 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index 4afd0fb5938c..1ae1014a4a19 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -1,21 +1,4 @@ -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'mscorlib'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Core'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Composition'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.DataAnnotations'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.FileSystem'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceModel.Web'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Transactions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Windows'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Web'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Serialization'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Linq'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)'. @@ -23,671 +6,451 @@ DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: -TypesMustExist : Type 'Microsoft.Win32.Registry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryHive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryKeyPermissionCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryValueKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryValueOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeAccessTokenHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeRegistryHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.DynData' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.Win32.RegistryHive Microsoft.Win32.RegistryHive.DynData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System._AppDomain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.AccessViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.ActivationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. +CannotMakeTypeAbstract : Type 'System.Activator' is abstract in the implementation but is not abstract in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Activator' does not implement interface 'System.Runtime.InteropServices._Activator' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext, System.String[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String, System.Object)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.AggregateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.AppDomain' does not implement interface 'System._AppDomain' in the implementation but it does in the contract. +MembersMustExist : Member 'System.AppDomain.ActivationContext.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ApplicationIdentity.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ApplicationTrust.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup, System.Security.PermissionSet, System.Security.Policy.StrongName[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean, System.AppDomainInitializer, System.String[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable, System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DoCallBack(System.CrossAppDomainDelegate)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.DomainManager.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.Evidence.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[], System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.Reflection.AssemblyName, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.SetAppDomainPolicy(System.Security.Policy.PolicyLevel)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.AppDomain.SetupInformation.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainInitializer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainManagerInitializationOptions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.AppDomainSetup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.AppDomainUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ApplicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentNullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ArithmeticException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Attribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.AttributeUsageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.BadImageFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.CannotUnloadAppDomainException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.CLSCompliantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ContextMarshalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ContextStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.CrossAppDomainDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.DataMisalignedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.DivideByZeroException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.DllNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.DuplicateWaitObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.EntryPointNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ExecutionEngineException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.FieldAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.FlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.FormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.IAppDomainSetup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IndexOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientExecutionStackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InvalidCastException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InvalidOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InvalidProgramException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.LoaderOptimizationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.MarshalByRefObject.CreateObjRef(System.Type)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MemberAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MethodAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MissingFieldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MissingMemberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MissingMethodException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MTAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.MulticastNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.NonSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.NotFiniteNumberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.NotImplementedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.NotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.NullReferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ObjectDisposedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ObsoleteAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.OperationCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.OutOfMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.OverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ParamArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.PlatformNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.RankException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.SerializableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.StackOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.STAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.SystemException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ThreadStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Type' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TypeAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TypeInitializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TypeUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.UnauthorizedAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Collections.Generic.KeyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Deployment.Internal.InternalActivationContextHelper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Deployment.Internal.InternalApplicationIdentityHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.ConditionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotMakeTypeAbstract : Type 'System.Diagnostics.Debugger' is abstract in the implementation but is not abstract in the contract. +MembersMustExist : Member 'System.Diagnostics.Debugger..ctor()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Diagnostics.StackTrace..ctor(System.Threading.Thread, System.Boolean)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.PureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Diagnostics.Contracts.Internal.ContractHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Globalization.CultureNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.Directory.CreateDirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Directory.SetAccessControl(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.DirectoryInfo.Create(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.DirectoryInfo.CreateSubdirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.DirectoryInfo.SetAccessControl(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.DirectoryNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.DriveNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.EndOfStreamException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.File.Create(System.String, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.File.SetAccessControl(System.String, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileInfo.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.FileStream.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.IOException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.PathTooLongException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorage.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityOptions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.AssemblyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.AssemblyBuilderAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ConstructorBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.CustomAttributeBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AmbiguousMatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Assembly' does not implement interface 'System.Runtime.InteropServices._Assembly' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.Evidence.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.LoadFile(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.LoadWithPartialName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Assembly.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCompanyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyConfigurationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCopyrightAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCultureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDelaySignAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFileVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyFileAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyMetadataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyName' does not implement interface 'System.Runtime.InteropServices._AssemblyName' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyProductAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTitleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTrademarkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ConstructorInfo' does not implement interface 'System.Runtime.InteropServices._ConstructorInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.CustomAttributeFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.DefaultMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.EventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.FieldInfo' does not implement interface 'System.Runtime.InteropServices._FieldInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.InvalidFilterCriteriaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MemberInfo' does not implement interface 'System.Runtime.InteropServices._MemberInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodBase' does not implement interface 'System.Runtime.InteropServices._MethodBase' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodInfo' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Module' does not implement interface 'System.Runtime.InteropServices._Module' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Module.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ParameterInfo' does not implement interface 'System.Runtime.InteropServices._ParameterInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.PropertyInfo' does not implement interface 'System.Runtime.InteropServices._PropertyInfo' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ReflectionTypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetInvocationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetParameterCountException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeDelegator' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeInfo' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.AssemblyBuilder' does not implement interface 'System.Runtime.InteropServices._AssemblyBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Evidence.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String, System.Reflection.PortableExecutableKinds, System.Reflection.ImageFileMachine)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.ReflectionOnly' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.Save' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ConstructorBuilder' does not implement interface 'System.Runtime.InteropServices._ConstructorBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.ReturnType.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.CustomAttributeBuilder' does not implement interface 'System.Runtime.InteropServices._CustomAttributeBuilder' in the implementation but it does in the contract. TypesMustExist : Type 'System.Reflection.Emit.DynamicILInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.DynamicMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.EnumBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.EventBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.DynamicMethod' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.GetDynamicILInfo()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EnumBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.CreateType()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EventBuilder' does not implement interface 'System.Runtime.InteropServices._EventBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.EventBuilder.GetEventToken()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.EventToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.ExceptionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FieldBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.FieldBuilder' does not implement interface 'System.Runtime.InteropServices._FieldBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.FieldToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ILGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.Label' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.LocalBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.MethodBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.GenericTypeParameterBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ILGenerator' does not implement interface 'System.Runtime.InteropServices._ILGenerator' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.LocalBuilder' does not implement interface 'System.Runtime.InteropServices._LocalBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.MethodBuilder' does not implement interface 'System.Runtime.InteropServices._MethodBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.CreateMethodBody(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.MethodRental' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.MethodToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ModuleBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ParameterBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ModuleBuilder' does not implement interface 'System.Runtime.InteropServices._ModuleBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineDocument(System.String, System.Guid, System.Guid, System.Guid)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineManifestResource(System.String, System.IO.Stream, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSymWriter()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.IsTransient()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetUserEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ParameterBuilder' does not implement interface 'System.Runtime.InteropServices._ParameterBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.ParameterToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.PEFileKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PropertyBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.PropertyBuilder' does not implement interface 'System.Runtime.InteropServices._PropertyBuilder' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.PropertyBuilder.PropertyToken.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.PropertyToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.SignatureHelper' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.SignatureHelper' does not implement interface 'System.Runtime.InteropServices._SignatureHelper' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.SignatureToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.StringToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.TypeBuilder' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.TypeBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.TypeToken' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.Emit.UnmanagedMarshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingManifestResourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingSatelliteAssemblyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceManager.ResourceSets' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.String System.Resources.ResourceManager.BaseNameField' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceSet.Table' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Resources.IResourceReader System.Resources.ResourceSet.Reader' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Resources.SatelliteContractVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.ProfileOptimization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.IDispatchConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.DesignerServices.WindowsRuntimeDesignerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.Hosting.ActivationArguments' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Hosting.ApplicationActivator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._Activator' does not exist in the implementation but it does exist in the contract. @@ -721,66 +484,44 @@ TypesMustExist : Type 'System.Runtime.InteropServices._SignatureHelper' does not TypesMustExist : Type 'System.Runtime.InteropServices._Thread' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._Type' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices._TypeBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.AssemblyRegistrationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AutomationProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AutomationProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.BIND_OPTS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.CoClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.COMException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DispIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DllImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.EXCEPINFO' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ExporterEventKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ExtensibleClassFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ExternalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FILETIME' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.GuidAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IDLDESC' does not exist in the implementation but it does exist in the contract. @@ -788,48 +529,71 @@ TypesMustExist : Type 'System.Runtime.InteropServices.IDLFLAG' does not exist in TypesMustExist : Type 'System.Runtime.InteropServices.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ImportedFromTypeLibAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ImporterEventKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.INVOKEKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.IRegistrationServices' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNameProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNotifySink' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibImporterNotifySink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetActiveObject(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComInterfaceForObjectInContext(System.Object, System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComSlotForMethodInfo(System.Reflection.MemberInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetEndComSlot(System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetExceptionPointers()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIDispatchForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetITypeInfoForType(System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIUnknownForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetManagedThunkForUnmanagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetMethodInfoForComSlot(System.Type, System.Int32, System.Runtime.InteropServices.ComMemberType)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetThreadFromFiberCookie(System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeForITypeInfo(System.IntPtr)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibVersionForAssembly(System.Reflection.Assembly, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetUnmanagedThunkForManagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.IsTypeVisibleFromCom(System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.NumParamBytes(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.ReleaseThreadCache()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.ObjectCreationDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OptionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.PARAMDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationClassContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationConnectionType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. +CannotMakeTypeAbstract : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is abstract in the implementation but is not abstract in the contract. +CannotSealType : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is sealed in the implementation but not sealed in the contract. +MembersMustExist : Member 'System.Runtime.InteropServices.RuntimeEnvironment..ctor()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SEHException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.SYSKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEATTR' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEDESC' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPEKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibConverter' does not exist in the implementation but it does exist in the contract. @@ -858,72 +622,18 @@ TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIStream' does not exis TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeComp' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.Expando.IExpando' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.EventRegistrationTokenTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.IActivationFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WriteOnlyArrayAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.WriteOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.Remoting.ActivatedClientTypeEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.ActivatedServiceTypeEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.CustomErrorsModes' does not exist in the implementation but it does exist in the contract. @@ -1066,464 +776,150 @@ TypesMustExist : Type 'System.Runtime.Remoting.Proxies.RealProxy' does not exist TypesMustExist : Type 'System.Runtime.Remoting.Services.EnterpriseServicesHelper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.Services.ITrackingHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Remoting.Services.TrackingServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.IFieldInfo' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.SerializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalRM' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalST' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ISoapMessage' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ServerFault' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapFault' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.CodeAccessPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostProtectionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostSecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostSecurityManagerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IEvidenceFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityPolicyEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IStackWalk' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.NamedPermissionSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PermissionSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PolicyLevelType' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not implement interface 'System.Runtime.Remoting.Messaging.IRemotingFormatter' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.HostProtectionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.ReadOnlyPermissionSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityContextSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.XmlSyntaxException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlActions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlModification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlSections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceQualifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CompoundAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CompoundAceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ControlFlags' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Object, System.Object, System.Reflection.MethodInfo, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Reflection.AssemblyName, System.Security.PermissionSet, System.Security.PermissionSet, System.Reflection.MethodInfo, System.Security.Permissions.SecurityAction, System.Object, System.Security.IPermission, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.Action.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.Action.set(System.Security.Permissions.SecurityAction)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.set(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.Zone.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityRulesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecuritySafeCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTransparentAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTreatAsSafeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.UnverifiableCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.VerificationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.XmlSyntaxException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAccessRule' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAuditRule' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyRights' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.AccessControl.CryptoKeySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CustomAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DiscretionaryAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.InheritanceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.KnownAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.NativeObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.PropagationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.QualifiedAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RawAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RawSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ResourceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SecurityInfos' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SystemAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.Cryptography.CryptoAPITransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CspKeyContainerInfo.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.IntPtr)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.HMACRIPEMD160' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.MACTripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RijndaelManagedTransform' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.HostProtectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.HostProtectionResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageContainment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IUnrestrictedPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PermissionSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PermissionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PrincipalPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNamePublicKeyBlob' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionClipboard' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionWindow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.AllMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationDirectory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationDirectoryMembershipCondition' does not exist in the implementation but it does exist in the contract. +CannotSealType : Type 'System.Security.Cryptography.SHA1Managed' is sealed in the implementation but not sealed in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. +CannotSealType : Type 'System.Security.Cryptography.SHA256Managed' is sealed in the implementation but not sealed in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. +CannotSealType : Type 'System.Security.Cryptography.SHA384Managed' is sealed in the implementation but not sealed in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. +CannotSealType : Type 'System.Security.Cryptography.SHA512Managed' is sealed in the implementation but not sealed in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.HostProtectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PermissionSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UIPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrust' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrustCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrustEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationVersionMatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.CodeConnectAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.CodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Evidence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.EvidenceBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.FileCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.FirstMatchCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.GacInstalled' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.GacMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Hash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.HashMembershipCondition' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Policy.IApplicationTrustManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.IIdentityPermissionFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.IMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.NetCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PermissionRequestEvidence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyStatementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Publisher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PublisherMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Site' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.SiteMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.StrongName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.StrongNameMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.TrustManagerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.TrustManagerUIContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.UnionCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Url' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.UrlMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Zone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ZoneMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityNotMappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityReferenceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.NTAccount' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.SecurityIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenAccessLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WellKnownSidType' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Policy.PolicyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Principal.IdentityNotMappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Principal.WindowsAccountType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsBuiltInRole' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsIdentity' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.Security.Principal.WindowsIdentity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate(System.IntPtr)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.UserClaims.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Principal.WindowsImpersonationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.UserClaims.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Text.DecoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Text.EncoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.AbandonedMutexException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Threading.EventWaitHandle..ctor(System.Boolean, System.Threading.EventResetMode, System.String, System.Boolean, System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.EventWaitHandle.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.EventWaitHandle.OpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.EventWaitHandle.SetAccessControl(System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.EventWaitHandle.TryOpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights, System.Threading.EventWaitHandle)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Threading.Mutex..ctor(System.Boolean, System.String, System.Boolean, System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Mutex.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Mutex.OpenExisting(System.String, System.Security.AccessControl.MutexRights)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Mutex.SetAccessControl(System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Mutex.TryOpenExisting(System.String, System.Security.AccessControl.MutexRights, System.Threading.Mutex)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SynchronizationLockException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Thread' does not implement interface 'System.Runtime.InteropServices._Thread' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Threading.Thread.CurrentContext.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadAbortException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadInterruptedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStartException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskSchedulerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. Compat issues with assembly System: -TypesMustExist : Type 'Microsoft.CSharp.CSharpCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.VBCodeProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.IntranetZoneCredentialPolicy' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventHandler' does not exist in the implementation but it does exist in the contract. @@ -1544,488 +940,91 @@ TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventArgs' does not TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriIdnScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArgumentReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArrayCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArrayIndexerExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAssignStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttachEventStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeArgumentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclarationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBaseReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCastExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCatchClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCatchClauseCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeChecksumPragma' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCommentStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCommentStatementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCompileUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeConditionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeConstructor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDefaultValueExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDelegateCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDelegateInvokeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirectionExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirective' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirectiveCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeEntryPointMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeEventReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpressionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpressionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeFieldReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeGotoStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeIndexerExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeIterationStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeLabeledStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeLinePragma' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodInvokeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodReturnStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceImportCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeObjectCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpressionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePrimitiveExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePropertyReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePropertySetValueReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRegionDirective' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRegionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRemoveEventStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetCompileUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetTypeMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeStatementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeThisReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeThrowExceptionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTryCatchFinallyStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeConstructor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDeclarationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeMemberCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeOfExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeVariableDeclarationStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeVariableReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.FieldDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.MemberAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeCompiler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeDomProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeGeneratorOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerResults' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.Executor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratorSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeCompiler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.LanguageOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.TempFileCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationSettingsBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationSettingsGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.AppSettingsReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ClientSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigXmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DefaultSettingValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DictionarySectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IApplicationSettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IConfigurationSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IConfigurationSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IdnElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IgnoreSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IPersistComponentSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IriParsingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ISettingsProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.LocalFileSettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueFileSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SchemeSettingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SchemeSettingElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsAttributeDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsGroupNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsLoadedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsLoadedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsManageability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsManageabilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSavingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSerializeAs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSerializeAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingValueElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SingleTagSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SpecialSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SpecialSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UriSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UserScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UserSettingsGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.UriFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AmbientValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.ComponentModel.AsyncCompletedEventArgs..ctor()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AttributeProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.CategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerCategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DisplayNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ImmutableObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InheritanceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InitializationEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InstallerTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidEnumArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ListBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LocalizableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.MergablePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PropertyTabAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ProvidePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ReadOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RunInstallerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.SettingsBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeConverterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.WarningException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Win32Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.CheckoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ConfigurationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.DefaultSettingValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsManageabilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsSerializeAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SpecialSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.UserScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Diagnostics.ConsoleTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterCreationData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterCreationDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CounterSample' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterSampleCalculator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Diagnostics.Debug.Listeners.get()' does not exist in the implementation but it does exist in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.DelimitedListTraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. TypesMustExist : Type 'System.Diagnostics.DiagnosticsConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventHandler' does not exist in the implementation but it does exist in the contract. @@ -2041,187 +1040,56 @@ TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntry' does not exis TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventLogTraceListener' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EventSourceCreationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.ICollectData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceData' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceDataCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.InstanceDataCollectionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Diagnostics.OverflowAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategory' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategoryType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterInstanceLifetime' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAccess' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.Switch.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchLevelAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceSource.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. TypesMustExist : Type 'System.Diagnostics.XmlWriterTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.InternalBufferOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IO.InvalidDataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.IO.IODescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.Handshake' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.Parity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPort' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.StopBits' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SoundPlayer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SystemSound' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Media.SystemSounds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Net.DnsPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.DnsPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.EndpointPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.HttpListenerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotMakeTypeAbstract : Type 'System.Net.HttpVersion' is abstract in the implementation but is not abstract in the contract. +CannotSealType : Type 'System.Net.HttpVersion' is sealed in the implementation but not sealed in the contract. +MembersMustExist : Member 'System.Net.HttpVersion..ctor()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.ICertificatePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.NetworkAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.set(System.Net.ICertificatePolicy)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.SocketPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.TransportContext.GetTlsTokenBindings()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.TransportType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Net.WebPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.WebPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WriteStreamClosedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WriteStreamClosedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.AuthenticationModulesSection' does not exist in the implementation but it does exist in the contract. @@ -2256,248 +1124,52 @@ TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElement' does no TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.WebRequestModulesSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Configuration.WebUtilityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Mail.SmtpPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.PingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.SocketClientAccessPolicyProtocol' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Net.Sockets.SocketFlags System.Net.Sockets.SocketFlags.MaxIOVectorLength' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebSockets.WebSocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Reflection.ICustomTypeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.InteropServices.StandardOleMarshalObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.AuthenticationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.InvalidCredentialException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBinding' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBindingType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Claims.DynamicRoleClaimProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBaseEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StorePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Text.RegularExpressions.RegexCompilationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.BarrierPostPhaseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Threading.Semaphore..ctor(System.Int32, System.Int32, System.String, System.Boolean, System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Semaphore.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Semaphore.OpenExisting(System.String, System.Security.AccessControl.SemaphoreRights)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Semaphore.SetAccessControl(System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Semaphore.TryOpenExisting(System.String, System.Security.AccessControl.SemaphoreRights, System.Threading.Semaphore)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Timers.TimersDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.AspNetHostingPermissionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Windows.Markup.ValueSerializerAttribute' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ComponentModel.Composition: -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.AttributedModelServices' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.CatalogReflectionContextAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ComponentModel.Composition.ChangeRejectedException' does not exist in the implementation but it does exist in the contract. @@ -2561,88 +1233,48 @@ TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.LazyMem TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ComponentModel.DataAnnotations: TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.BindableTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.IValidatableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MetadataTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldTableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Validator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. Compat issues with assembly System.Core: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Diagnostics.EventSchemaTraceListener' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.TraceLogRetentionOption' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.UnescapedXmlDiagnosticData' does not exist in the implementation but it does exist in the contract. @@ -2689,111 +1321,21 @@ TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstance' do TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(System.IO.FileStream, System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateOrOpen(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.SetAccessControl(System.IO.MemoryMappedFiles.MemoryMappedFileSecurity)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeAccessRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.AnonymousPipeServerStream..ctor(System.IO.Pipes.PipeDirection, System.IO.HandleInheritability, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.NamedPipeClientStream..ctor(System.String, System.String, System.IO.Pipes.PipeAccessRights, System.IO.Pipes.PipeOptions, System.Security.Principal.TokenImpersonationLevel, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability, System.IO.Pipes.PipeAccessRights)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.PipeStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Pipes.PipeStream.SetAccessControl(System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder, System.Runtime.CompilerServices.DebugInfoGenerator)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstanceNotFoundException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationBaseException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationException' does not exist in the implementation but it does exist in the contract. @@ -2814,84 +1356,55 @@ TypesMustExist : Type 'System.Management.Instrumentation.ManagementReferenceAttr TypesMustExist : Type 'System.Management.Instrumentation.ManagementRemoveAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.ManagementTaskAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Management.Instrumentation.WmiConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteOps' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.Closure' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.ExecutionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeOps' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. TypesMustExist : Type 'System.Security.ManifestKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithmGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngExportPolicies' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyBlobFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyHandleOpenOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyOpenOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyUsages' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngPropertyOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngUIPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngUIProtectionLevels' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellman' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCngPublicKey' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanKeyDerivationFunction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsaCng' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.FromXmlString(System.String, System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.set(System.Security.Cryptography.CngAlgorithm)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[], System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ToXmlString(System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Int32, System.Int32, System.Byte[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECKeyXmlFormat' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformationCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.MD5Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA1Cng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA256Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SignatureVerificationResult' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.StrongNameSignatureInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.AuthenticodeSignatureInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TimestampInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TrustStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. Compat issues with assembly System.Data: TypesMustExist : Type 'Microsoft.SqlServer.Server.DataAccessKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.Format' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.IBinarySerialize' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.InvalidUdtException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlDataRecord' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFacetAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMetaData' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String, System.Boolean, System.Boolean, System.Data.SqlClient.SortOrder, System.Int32)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.DbType.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.Type.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMethodAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlPipe' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlProcedureAttribute' does not exist in the implementation but it does exist in the contract. @@ -2901,167 +1414,41 @@ TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedAggregateAttribu TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.SystemDataAccessKind' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Microsoft.SqlServer.Server.TriggerAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.ConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.DataSetSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OperationAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataSysDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.DBConcurrencyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.DeletedRowInaccessibleException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.DuplicateNameException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.EvaluateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.InRowChangingEventException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidExpressionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.MissingPrimaryKeyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.NoNullAllowedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.OperationAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.ReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.RowNotInTableException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.StrongTypingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SyntaxErrorException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGenerator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGeneratorException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.VersionNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.Common.DBDataPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DBDataPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactories' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactoriesConfigurationHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcParameterCollection' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.Common.DbProviderFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.Odbc.OdbcConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.Odbc.OdbcException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.Odbc.OdbcFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Odbc.OdbcPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbCommand' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbCommandBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.OleDb.OleDbConnection' does not exist in the implementation but it does exist in the contract. @@ -3091,15 +1478,11 @@ TypesMustExist : Type 'System.Data.OleDb.OleDbTransaction' does not exist in the TypesMustExist : Type 'System.Data.OleDb.OleDbType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Sql.SqlDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Sql.SqlNotificationRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.ApplicationIntent' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.OnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SortOrder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlAuthenticationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlClientFactory' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopyOptions System.Data.SqlClient.SqlBulkCopyOptions.AllowEncryptedValueModifications' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlClientFactory' does not implement interface 'System.IServiceProvider' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlClientFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermissionAttribute' does not exist in the implementation but it does exist in the contract. @@ -3107,61 +1490,83 @@ TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCertificateStore TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCngProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCspProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlCommand' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlCommand' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand..ctor(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.SqlClient.SqlCommandColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.AsyncCallback, System.Object, System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Clone()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteXmlReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.set(System.Data.Sql.SqlNotificationRequest)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ResetCommandTimeout()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlConnection' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlConnection' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection..ctor(System.String, System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.set(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.Data.SqlClient.SqlCredential, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ChangePassword(System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.ColumnEncryptionTrustedMasterKeyPaths.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.set(System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.set(System.Data.SqlClient.SqlAuthenticationMethod)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ColumnEncryptionSetting.set(System.Data.SqlClient.SqlConnectionColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ConnectionReset.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.ContextConnection.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Enlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.NetworkLibrary.set(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.set(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlDataReader' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlDataReader.IsCommandBehavior(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SQLDebugging' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlDependency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationSource' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlParameter' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Boolean, System.Object, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.set(System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Data.SqlDbType, System.Int32, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.SqlTypes.SqlFileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNotFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNullValueException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTruncateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Data.SqlTypes.SqlTypesSchemaImporterExtensionHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBigIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBinarySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlTypes.TypeBitSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. @@ -3196,8 +1601,6 @@ TypesMustExist : Type 'System.Drawing.BufferedGraphics' does not exist in the im TypesMustExist : Type 'System.Drawing.BufferedGraphicsContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.BufferedGraphicsManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CharacterRange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ColorConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ColorTranslator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ContentAlignment' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CopyPixelOperation' does not exist in the implementation but it does exist in the contract. @@ -3214,21 +1617,10 @@ TypesMustExist : Type 'System.Drawing.Image' does not exist in the implementatio TypesMustExist : Type 'System.Drawing.ImageAnimator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageFormatConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pen' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pens' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Region' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.RotateFlipType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeFConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SolidBrush' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringAlignment' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringDigitSubstitute' does not exist in the implementation but it does exist in the contract. @@ -3237,7 +1629,7 @@ TypesMustExist : Type 'System.Drawing.StringFormatFlags' does not exist in the i TypesMustExist : Type 'System.Drawing.StringTrimming' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringUnit' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemBrushes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SystemColors' does not exist in the implementation but it does exist in the contract. +CannotMakeTypeAbstract : Type 'System.Drawing.SystemColors' is abstract in the implementation but is not abstract in the contract. TypesMustExist : Type 'System.Drawing.SystemFonts' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemIcons' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemPens' does not exist in the implementation but it does exist in the contract. @@ -3367,55 +1759,18 @@ TypesMustExist : Type 'System.Drawing.Text.HotkeyPrefix' does not exist in the i TypesMustExist : Type 'System.Drawing.Text.InstalledFontCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Text.PrivateFontCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Text.TextRenderingHint' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Compression.FileSystem: -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Net: -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.INetworkProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.IPEndPointCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.IUnsafeWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.NetworkProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Net.UiSynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WriteStreamClosedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WriteStreamClosedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Cloud' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.CloudCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.PeerName' does not exist in the implementation but it does exist in the contract. @@ -3464,54 +1819,37 @@ TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.RefreshDataCompletedE TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscribeCompletedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionListChangedEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.HttpPolicyDownloaderProtocol' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.SecurityCriticalAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Net.Sockets.SocketPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.UdpAnySourceMulticastClient' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Net.Sockets.UdpSingleSourceMulticastClient' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Numerics: -TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Matrix3x2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Matrix4x4' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Plane' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Quaternion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector3' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector4' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Runtime.Serialization: -TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.IDataContractSurrogate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.Serialization.ImportOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.InvalidDataContractException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Runtime.Serialization.NetDataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractImporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DataContractSerializerSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DeclaredTypeElement' does not exist in the implementation but it does exist in the contract. @@ -3522,35 +1860,19 @@ TypesMustExist : Type 'System.Runtime.Serialization.Configuration.ParameterEleme TypesMustExist : Type 'System.Runtime.Serialization.Configuration.SerializationSectionGroup' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElement' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomReaderInitializer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ServiceModel.Web: -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpBinding' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpSecurity' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.WebHttpSecurityMode' does not exist in the implementation but it does exist in the contract. @@ -3597,42 +1919,13 @@ TypesMustExist : Type 'System.ServiceModel.Web.WebMessageFormat' does not exist TypesMustExist : Type 'System.ServiceModel.Web.WebOperationContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.ServiceModel.Web.WebServiceHost' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Transactions: -TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionInDoubtException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionManagerCommunicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionPromotionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Transactions.Configuration.DefaultSettingsSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.Configuration.MachineSettingsSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.Configuration.TransactionsSectionGroup' does not exist in the implementation but it does exist in the contract. @@ -3695,7 +1988,6 @@ TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionBase' does not exis TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionWrapper' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpTaskAsyncHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpUnhandledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpValidationStatus' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpWorkerRequest' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.HttpWriter' does not exist in the implementation but it does exist in the contract. @@ -5013,246 +3305,55 @@ TypesMustExist : Type 'System.Web.Util.WorkItemCallback' does not exist in the i TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocket' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketOptions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Windows: -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Xml: -TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IApplicationResourceStreamResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XmlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.XmlReaderSettings..ctor(System.Xml.XmlResolver)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.XmlSecureResolver.CreateEvidenceForUrl(System.String)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlXapResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. TypesMustExist : Type 'System.Xml.Serialization.CodeExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapCodeExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaExporter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Xml.Serialization.XmlCodeExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlMemberMapping.GenerateTypeName(System.CodeDom.Compiler.CodeDomProvider)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaImporter' does not inherit from base type 'System.Xml.Serialization.SchemaImporter' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.CodeDom.Compiler.CodeDomProvider, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers, System.Xml.Serialization.CodeGenerationOptions)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializerFactory.CreateSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtension' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtensionCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.Serialization.Configuration.DateTimeSerializationSection' does not exist in the implementation but it does exist in the contract. @@ -5264,82 +3365,32 @@ TypesMustExist : Type 'System.Xml.Serialization.Configuration.SerializationSecti TypesMustExist : Type 'System.Xml.Serialization.Configuration.XmlSerializerSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlConfiguration.XmlReaderSection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XmlConfiguration.XsltConfigSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.Linq: -TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XPath.XPathException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.CompileToType(System.Xml.XmlReader, System.Xml.Xsl.XsltSettings, System.Xml.XmlResolver, System.Boolean, System.Reflection.Emit.TypeBuilder, System.String)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltCompileException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XmlReader, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Xml.Serialization: -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. -Total Issues: 5302 +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +Total Issues: 3374 diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt index cc0cb2a90a68..fcc74cf8643c 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt @@ -1,7640 +1 @@ -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.CSharp'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.VisualBasic'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Registry.AccessControl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Registry'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'mscorlib'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'netstandard'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.AppContext'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Buffers'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.CodeDom'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.Concurrent'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.NonGeneric'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Collections.Specialized'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Annotations'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Composition'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.EventBasedAsync'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.TypeConverter'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.AttributedModel'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Convention'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Hosting'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.Runtime'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Composition.TypedParts'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Configuration.ConfigurationManager'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Console'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Core'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.Common'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.Odbc'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Data.SqlClient'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Contracts'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Debug'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.DiagnosticSource'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.FileVersionInfo'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Process'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.StackTrace'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TextWriterTraceListener'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Tools'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TraceSource'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Tracing'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices.AccountManagement'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.DirectoryServices.Protocols'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Drawing.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Dynamic.Runtime'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization.Calendars'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Globalization.Extensions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.FileSystem'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.ZipFile'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.AccessControl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.DriveInfo'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Watcher'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.IsolatedStorage'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.MemoryMappedFiles'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Packaging'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Pipes.AccessControl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Pipes'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.Ports'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.UnmanagedMemoryStream'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Json'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Expressions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Parallel'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Linq.Queryable'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Memory'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Http'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Http.WinHttpHandler'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.NameResolution'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.NetworkInformation'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Ping'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Requests'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Security'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.Sockets'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebHeaderCollection'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets.Client'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Numerics.Vectors'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ObjectModel'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Context'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.DispatchProxy'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Extensions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Reflection.TypeExtensions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.Reader'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.ResourceManager'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Resources.Writer'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.CompilerServices.Unsafe'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.CompilerServices.VisualC'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Extensions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Handles'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.InteropServices'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.InteropServices.RuntimeInformation'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Numerics'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Formatters'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Json'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Xml'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.AccessControl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Claims'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Algorithms'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Csp'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Encoding'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.OpenSsl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Pkcs'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Primitives'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.ProtectedData'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.X509Certificates'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Permissions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Principal'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.Principal.Windows'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Security.SecureString'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceModel.Web'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ServiceProcess.ServiceController'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding.CodePages'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encoding.Extensions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.Encodings.Web'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Text.RegularExpressions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.AccessControl'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Overlapped'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks.Dataflow'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Tasks.Parallel'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Thread'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.ThreadPool'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Threading.Timer'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Transactions'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.ValueTuple'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Web'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Windows'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Linq'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.ReaderWriter'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.Serialization'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XDocument'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XmlDocument'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XmlSerializer'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XPath'. -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.Xml.XPath.XDocument'. -Compat issues with assembly Microsoft.CSharp: -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.Binder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly Microsoft.VisualBasic: -TypesMustExist : Type 'Microsoft.VisualBasic.CallType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.Constants' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.HideModuleNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.Strings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Conversions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.DesignerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.IncompleteInitialization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.NewLateBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.ObjectFlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Operators' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.OptionCompareAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.OptionTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.ProjectData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.StandardModuleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.StaticLocalInitFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.CompilerServices.Utils' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly Microsoft.Win32.Primitives: -TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly Microsoft.Win32.Registry: -TypesMustExist : Type 'Microsoft.Win32.Registry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryHive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryKeyPermissionCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryValueKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryValueOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.RegistryView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeRegistryHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly Microsoft.Win32.Registry.AccessControl: -TypesMustExist : Type 'Microsoft.Win32.RegistryAclExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistryAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RegistrySecurity' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly mscorlib: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly netstandard: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.AppContext: -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Buffers: -TypesMustExist : Type 'System.Buffers.ArrayPool' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.CodeDom: -TypesMustExist : Type 'Microsoft.CSharp.CSharpCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.VisualBasic.VBCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArgumentReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArrayCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeArrayIndexerExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAssignStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttachEventStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeArgumentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeAttributeDeclarationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBaseReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeBinaryOperatorType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCastExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCatchClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCatchClauseCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeChecksumPragma' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCommentStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCommentStatementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeCompileUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeConditionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeConstructor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDefaultValueExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDelegateCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDelegateInvokeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirectionExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirective' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeDirectiveCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeEntryPointMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeEventReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpressionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeExpressionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeFieldReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeGotoStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeIndexerExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeIterationStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeLabeledStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeLinePragma' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMemberProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodInvokeExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeMethodReturnStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeNamespaceImportCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeObjectCreateExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeParameterDeclarationExpressionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePrimitiveExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePropertyReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodePropertySetValueReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRegionDirective' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRegionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeRemoveEventStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetCompileUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeSnippetTypeMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeStatementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeThisReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeThrowExceptionStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTryCatchFinallyStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeConstructor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDeclarationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeMemberCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeOfExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeTypeReferenceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeVariableDeclarationStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.CodeVariableReferenceExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.FieldDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.MemberAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeCompiler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeDomProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeGeneratorOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CodeParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.CompilerResults' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.Executor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratorSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeCompiler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.ICodeParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.LanguageOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.TempFileCollection' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections: -TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections.Concurrent: -TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections.NonGeneric: -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections.Specialized: -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel: -TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.Annotations: -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.IValidatableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ValidationResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Validator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.Composition: -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.EventBasedAsync: -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.Primitives: -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.TypeConverter: -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Composition.AttributedModel: -TypesMustExist : Type 'System.Composition.ExportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ExportMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ImportingConstructorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ImportManyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ImportMetadataConstraintAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.MetadataAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.OnImportsSatisfiedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.PartMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.PartNotDiscoverableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.SharedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.SharingBoundaryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.AttributedModelProvider' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Composition.Convention: -TypesMustExist : Type 'System.Composition.Convention.ConventionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.ExportConventionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.ImportConventionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.ParameterImportConventionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.PartConventionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Convention.PartConventionBuilder' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Composition.Hosting: -TypesMustExist : Type 'System.Composition.Hosting.CompositionHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.CompositeActivator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionDependency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.DependencyAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptorPromise' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.ExportDescriptorProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.LifetimeContext' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Composition.Runtime: -TypesMustExist : Type 'System.Composition.CompositionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Export' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.CompositionFailedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.Core.CompositionContract' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Composition.TypedParts: -TypesMustExist : Type 'System.Composition.CompositionContextExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Composition.Hosting.ContainerConfiguration' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Configuration.ConfigurationManager: -TypesMustExist : Type 'System.UriIdnScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationSettingsBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ApplicationSettingsGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.AppSettingsReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.AppSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.CallbackValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.CallbackValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ClientSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.CommaDelimitedStringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.CommaDelimitedStringCollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Configuration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationAllowDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationAllowExeDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationCollectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationConverterBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationElementCollectionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationElementProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationErrorsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationFileMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationLocationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationLockCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationPropertyOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSaveMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSectionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSectionGroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationUserLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigurationValidatorBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConfigXmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConnectionStringSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConnectionStringSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ConnectionStringsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ContextInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DefaultSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DefaultSettingValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DefaultValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DictionarySectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.DpapiProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ElementInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ExeConfigurationFileMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ExeContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.GenericEnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IApplicationSettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IConfigurationSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IConfigurationSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IdnElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IgnoreSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IgnoreSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.InfiniteIntConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.InfiniteTimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IntegerValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IntegerValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IPersistComponentSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.IriParsingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ISettingsProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.KeyValueConfigurationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.KeyValueConfigurationElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.LocalFileSettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.LongValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.LongValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueConfigurationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueConfigurationElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueFileSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NameValueSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.OverrideMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.PositiveTimeSpanValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.PositiveTimeSpanValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.PropertyInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.PropertyInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.PropertyValueOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProtectedConfiguration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProtectedConfigurationProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProtectedConfigurationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProtectedProviderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProviderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ProviderSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.RegexStringValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.RegexStringValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.RsaProtectedConfigurationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SchemeSettingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SchemeSettingElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsAttributeDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsGroupNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsLoadedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsLoadedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsManageability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsManageabilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSavingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSerializeAs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingsSerializeAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SettingValueElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SingleTagSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SpecialSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SpecialSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.StringValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.StringValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SubclassTypeValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.SubclassTypeValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanMinutesConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanMinutesOrInfiniteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanSecondsConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanSecondsOrInfiniteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TimeSpanValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.TypeNameConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UriSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UserScopedSettingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.UserSettingsGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.ValidatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.WhiteSpaceTrimStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.DelegatingConfigHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IConfigErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IConfigSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IConfigurationManagerHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IConfigurationManagerInternal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigClientHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigConfigurationFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigRoot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigSettingsFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.IInternalConfigSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.InternalConfigEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.InternalConfigEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Internal.StreamChangeCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Provider.ProviderBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Provider.ProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Provider.ProviderException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Console: -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Core: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Data: -TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Data.Common: -TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Data.Odbc: -TypesMustExist : Type 'System.Data.Odbc.OdbcCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Data.SqlClient: -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMetaData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OperationAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.ApplicationIntent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlBulkCopyOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlClientFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowsCopiedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Contracts: -TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Debug: -TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.DiagnosticSource: -TypesMustExist : Type 'System.Diagnostics.Activity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DiagnosticListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DiagnosticSource' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.FileVersionInfo: -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Process: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.StackTrace: -TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.TextWriterTraceListener: -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Tools: -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.TraceSource: -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Tracing: -TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.DirectoryServices: -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectoryRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectorySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectorySecurityInheritance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AuthenticationTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.CreateChildAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DeleteChildAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DeleteTreeAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DereferenceAlias' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryEntries' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryEntryConfiguration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectorySearcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryServicesCOMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectorySynchronization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectorySynchronizationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryVirtualListView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.DirectoryVirtualListViewContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ExtendedDN' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ExtendedRightAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ListChildrenAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PasswordEncodingMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PropertyAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PropertyAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PropertySetAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.PropertyValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ReferralChasingOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ResultPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ResultPropertyValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SchemaNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SearchResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SearchResultCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SearchScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SecurityMasks' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.SortOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryInterSiteTransport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectExistsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryPartition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryReplicationMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryRole' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryRoleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClassCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkBridge' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySubnet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySubnetCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySyntax' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamInstance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamInstanceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamRole' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AdamRoleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ApplicationPartition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ApplicationPartitionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AttributeMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.AttributeMetadataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ConfigurationSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryServer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DirectoryServerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.Domain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainCollisionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainController' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainControllerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.DomainMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.Forest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustCollisionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustCollisionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainInfoCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustDomainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipCollision' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipCollisionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.GlobalCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.GlobalCatalogCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.HourOfDay' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.LocatorOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.MinuteOfHour' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.NotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.PropertyTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyActiveDirectorySchemaClassCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyActiveDirectorySchemaPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteLinkBridgeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlySiteLinkCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReadOnlyStringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationConnectionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationCursor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationCursorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationFailure' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationFailureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationNeighbor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationNeighborCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationOperationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationSecurityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.ReplicationSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SchemaClassType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersErrorCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersErrorInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncFromAllServersOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.SyncUpdateCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameCollisionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TopLevelNameStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustRelationshipInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustRelationshipInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.ActiveDirectory.TrustType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.DirectoryServices.AccountManagement: -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.AdvancedFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.AuthenticablePrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ComputerPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ContextOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.ContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryObjectClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.DirectoryRdnPrefixAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.GroupPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.GroupScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.IdentityType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.MatchType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.MultipleMatchesException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.NoMatchingPrincipalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PasswordException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.Principal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalExistsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalSearcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalSearchResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalServerDownException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.PrincipalValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.AccountManagement.UserPrincipal' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.DirectoryServices.Protocols: -TypesMustExist : Type 'System.DirectoryServices.Protocols.AddRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.AddResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.AsqRequestControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.AsqResponseControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.AuthType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.BerConversionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.BerConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.CompareRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.CompareResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.CrossDomainMoveControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DeleteRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DeleteResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DereferenceAlias' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DereferenceConnectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeModification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryAttributeOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryControlCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryNotificationControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectoryResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirectorySynchronizationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirSyncRequestControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DirSyncResponseControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DomainScopeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.DsmlAuthRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedDNControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedDNFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ExtendedResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LazyCommitControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapDirectoryIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LdapSessionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.LocatorFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyDNRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyDNResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ModifyResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.NotifyOfNewConnectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.PageResultRequestControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.PageResultResponseControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.PartialResultProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.PartialResultsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.PermissiveModifyControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.QueryClientCertificateCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.QueryForConnectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.QuotaControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ReferralCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ReferralChasingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ResultCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchOptionsControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchResultReferenceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SearchScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityDescriptorFlagControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityMasks' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityPackageContextConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SecurityProtocol' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.ShowDeletedControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SortKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SortRequestControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.SortResponseControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.TlsOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.TreeDeleteControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.VerifyNameControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.VerifyServerCertificateCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.VlvRequestControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DirectoryServices.Protocols.VlvResponseControl' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Drawing: -TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Drawing.Primitives: -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Dynamic.Runtime: -TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Globalization: -TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Globalization.Calendars: -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Globalization.Extensions: -TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO: -TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Compression: -TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Compression.FileSystem: -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Compression.ZipFile: -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.AccessControl: -TypesMustExist : Type 'System.IO.FileSystemAclExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.DriveInfo: -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.Primitives: -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.Watcher: -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.IsolatedStorage: -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.MemoryMappedFiles: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Packaging: -TypesMustExist : Type 'System.IO.FileFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.CompressionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.EncryptionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.Package' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackagePart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackagePartCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackageProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackageRelationship' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackageRelationshipSelectorType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.PackUriHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.TargetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.ZipPackage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Packaging.ZipPackagePart' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Pipes: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Pipes.AccessControl: -TypesMustExist : Type 'System.IO.Pipes.PipeAccessRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipesAclExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeSecurity' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Ports: -TypesMustExist : Type 'System.IO.Ports.Handshake' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.Parity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialDataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialErrorReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPinChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.SerialPort' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Ports.StopBits' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.UnmanagedMemoryStream: -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Json: -TypesMustExist : Type 'System.Json.JsonArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Json.JsonObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Json.JsonPrimitive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Json.JsonType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Json.JsonValue' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq: -TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq.Expressions: -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq.Parallel: -TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq.Queryable: -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Memory: -TypesMustExist : Type 'System.ReadOnlySpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Span' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SpanExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net: -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Http: -TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Http.WinHttpHandler: -TypesMustExist : Type 'System.Net.Http.CookieUsePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.WindowsProxyUsePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.WinHttpHandler' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.NameResolution: -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.NetworkInformation: -TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Ping: -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Primitives: -TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Requests: -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Security: -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Sockets: -TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.WebHeaderCollection: -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.WebSockets: -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.WebSockets.Client: -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Numerics: -TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Numerics.Vectors: -TypesMustExist : Type 'System.Numerics.Matrix3x2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Matrix4x4' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Plane' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Quaternion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector3' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Vector4' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ObjectModel: -TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection: -TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.Context: -TypesMustExist : Type 'System.Reflection.Context.CustomReflectionContext' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.DispatchProxy: -TypesMustExist : Type 'System.Reflection.DispatchProxy' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.Extensions: -TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.Primitives: -TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.TypeExtensions: -TypesMustExist : Type 'System.Reflection.AssemblyExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Resources.Reader: -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Resources.ResourceManager: -TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Resources.Writer: -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime: -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.CompilerServices.Unsafe: -TypesMustExist : Type 'System.Runtime.CompilerServices.Unsafe' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.CompilerServices.VisualC: -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Extensions: -TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Handles: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.InteropServices: -TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.InteropServices.RuntimeInformation: -TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Numerics: -TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization: -TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization.Formatters: -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization.Json: -TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization.Primitives: -TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization.Xml: -TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.AccessControl: -TypesMustExist : Type 'System.Security.AccessControl.AccessControlActions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlModification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlSections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessControlType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceQualifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.AuthorizationRuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CommonSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CompoundAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CompoundAceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ControlFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CustomAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DiscretionaryAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.GenericSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.InheritanceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.KnownAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.NativeObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAceFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.PropagationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.QualifiedAce' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RawAcl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.RawSecurityDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.ResourceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SecurityInfos' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SystemAcl' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Claims: -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Algorithms: -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Csp: -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Encoding: -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.OpenSsl: -TypesMustExist : Type 'System.Security.Cryptography.DSAOpenSsl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsaOpenSsl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOpenSsl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SafeEvpPKeyHandle' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Pkcs: -TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicAttributeObjectEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.AlgorithmIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipientCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.CmsRecipientEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.ContentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.EnvelopedCms' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.KeyAgreeRecipientInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.KeyTransRecipientInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9AttributeObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9DocumentDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9DocumentName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9MessageDigest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.Pkcs9SigningTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.PublicKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.RecipientInfoType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierOrKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierOrKeyType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Pkcs.SubjectIdentifierType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Xml.X509IssuerSerial' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Primitives: -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.ProtectedData: -TypesMustExist : Type 'System.Security.Cryptography.DataProtectionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ProtectedData' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.X509Certificates: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Permissions: -TypesMustExist : Type 'System.ApplicationIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.CodeAccessPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostProtectionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostSecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.HostSecurityManagerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IEvidenceFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityPolicyEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IStackWalk' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.NamedPermissionSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PermissionSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PolicyLevelType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityContextSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.XmlSyntaxException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.HostProtectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.HostProtectionResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageContainment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.IUnrestrictedPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAccessEntryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.KeyContainerPermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PermissionSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PermissionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PrincipalPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ReflectionPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ResourcePermissionBaseEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StorePermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.StrongNamePublicKeyBlob' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.TypeDescriptorPermissionFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionClipboard' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UIPermissionWindow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.AllMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationDirectory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationDirectoryMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrust' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrustCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationTrustEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationVersionMatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.CodeConnectAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.CodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Evidence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.EvidenceBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.FileCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.FirstMatchCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.GacInstalled' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.GacMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Hash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.HashMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.IIdentityPermissionFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.IMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.NetCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PermissionRequestEvidence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyStatement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PolicyStatementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Publisher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.PublisherMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Site' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.SiteMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.StrongName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.StrongNameMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.TrustManagerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.TrustManagerUIContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.UnionCodeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Url' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.UrlMembershipCondition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.Zone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ZoneMembershipCondition' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Principal: -TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Principal.Windows: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeAccessTokenHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityNotMappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IdentityReferenceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.NTAccount' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.SecurityIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenAccessLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WellKnownSidType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsBuiltInRole' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsPrincipal' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.SecureString: -TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ServiceModel.Web: -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ServiceProcess.ServiceController: -TypesMustExist : Type 'System.ServiceProcess.ServiceController' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceProcess.ServiceControllerStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceProcess.ServiceStartMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceProcess.ServiceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceProcess.TimeoutException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.Encoding: -TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.Encoding.CodePages: -TypesMustExist : Type 'System.Text.CodePagesEncodingProvider' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.Encoding.Extensions: -TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.Encodings.Web: -TypesMustExist : Type 'System.Text.Encodings.Web.HtmlEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encodings.Web.JavaScriptEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encodings.Web.TextEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encodings.Web.TextEncoderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encodings.Web.UrlEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Unicode.UnicodeRange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Unicode.UnicodeRanges' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.RegularExpressions: -TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading: -TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.AccessControl: -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.EventWaitHandleSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.MutexSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.SemaphoreSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadingAclExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Overlapped: -TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Tasks: -TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Tasks.Dataflow: -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ActionBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchedJoinBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BatchedJoinBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BroadcastBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.BufferBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowBlockOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowLinkOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowMessageHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.DataflowMessageStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ExecutionDataflowBlockOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IDataflowBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IPropagatorBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.IReceivableSourceBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ISourceBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.ITargetBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.JoinBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.JoinBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.TransformBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.TransformManyBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Dataflow.WriteOnceBlock' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Tasks.Parallel: -TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Thread: -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.ThreadPool: -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Timer: -TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Transactions: -TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ValueTuple: -TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Web: -TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Windows: -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml: -TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.Linq: -TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.ReaderWriter: -TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.Serialization: -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XDocument: -TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XmlDocument: -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XmlSerializer: -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XPath: -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XPath.XDocument: -TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. -Total Issues: 7329 +Total Issues: 0 diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt index e8899bb0dccf..d8e0869bb4c5 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt @@ -1,2372 +1,2 @@ -DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'netstandard'. -Compat issues with assembly netstandard: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AccessViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Action' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AggregateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ApplicationId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentNullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArgumentOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArithmeticException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Array' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArraySegment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AssemblyLoadEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AsyncCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeTargets' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AttributeUsageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BadImageFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Base64FormattingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.BitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Boolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Buffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Byte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CannotUnloadAppDomainException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Char' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CharEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CLSCompliantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Comparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextBoundObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextMarshalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ContextStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Convert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DataMisalignedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DateTimeOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DBNull' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Decimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Delegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DivideByZeroException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DllNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Double' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.DuplicateWaitObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EntryPointNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Enum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Environment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EnvironmentVariableTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.EventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ExecutionEngineException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FieldAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FileStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FormattableString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.FtpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Func' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCCollectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GCNotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GenericUriParserOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.GopherStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Guid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.HttpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IAsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICloneable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IConvertible' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ICustomFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IDisposable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormatProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IFormattable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IndexOutOfRangeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientExecutionStackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InsufficientMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Int64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidCastException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidProgramException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.InvalidTimeZoneException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObservable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IObserver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Lazy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LdapStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LoaderOptimizationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.LocalDataStoreSlot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MarshalByRefObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Math' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MemberAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MethodAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MidpointRounding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingFieldException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMemberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MissingMethodException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ModuleHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MTAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.MulticastNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetPipeStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NetTcpStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NewsStyleUriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotFiniteNumberException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotImplementedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Nullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.NullReferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Object' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObjectDisposedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ObsoleteAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperatingSystem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OperationCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OutOfMemoryException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.OverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ParamArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.PlatformNotSupportedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Predicate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Progress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Random' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RankException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeFieldHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeMethodHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.RuntimeTypeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Single' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StackOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.STAThreadAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.String' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringComparison' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringNormalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.StringSplitOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SystemException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ThreadStaticAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeSpan' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TimeZoneNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Tuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TupleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeInitializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypeUnloadedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UIntPtr' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnauthorizedAccessException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UnhandledExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Uri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriComponents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriHostNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriPartial' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueTuple' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Version' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Void' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.WeakReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.CodeDom.Compiler.IndentedTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.BitArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IDictionaryEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IHashCodeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralComparable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.IStructuralEquatable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.StructuralComparisons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.BlockingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentQueue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.ConcurrentStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.EnumerablePartitionerOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.IProducerConsumerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.OrderablePartitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Concurrent.Partitioner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Dictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.EqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.HashSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ICollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.IReadOnlyList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.ISet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.KeyValuePair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.LinkedListNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.List' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.SortedSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Generic.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.KeyedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyObservableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.INotifyCollectionChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NotifyCollectionChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AddingNewEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AmbientValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AsyncOperationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BackgroundWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindableSupport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Component' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Container' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ContainerFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CultureInfoConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataErrorsChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DataObjectMethodType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoWorkEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EditorBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExpandableObjectConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IBindingListView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICancelAddNew' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComNativeDescriptorHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IEditableObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IIntellisenseBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INestedSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InheritanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyDataErrorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.INotifyPropertyChanging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstallerTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InstanceCreationEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidEnumArgumentException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRaiseItemChangedEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IRevertibleChangeTracking' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitialize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISupportInitializeNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISynchronizeInvoke' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.License' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicenseUsageMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LicFileLicenseProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListChangedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDescriptionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ListSortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MarshalByValueComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MaskedTextResultHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NestedContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyTabScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReferenceConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunInstallerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RunWorkerCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SettingsBindableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SyntaxCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ToolboxItemFilterType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.WarningException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ActiveDesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CheckoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.CommandID' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentChangingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ComponentRenameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerTransactionCloseEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerb' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesignerVerbCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.DesigntimeLicenseContextSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpContextType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.HelpKeywordType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentChangeService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IComponentInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerEventService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerHostTransactionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDesignerOptionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IDictionaryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IEventBindingService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderListService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IExtenderProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IHelpService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IInheritanceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IMenuCommandService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IReferenceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IResourceService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IRootDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ISelectionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.IServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITreeDesigner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDescriptorFilterService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeDiscoveryService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ITypeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.MenuCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.SelectionTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ServiceCreatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardCommands' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.StandardToolWindows' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.TypeDescriptionProviderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.ViewTechnology' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ComponentSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ContextStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerLoader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderHost2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerLoaderService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.IDesignerSerializationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.INameCreationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.InstanceDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationship' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.MemberRelationshipService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.ResolveNameEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Design.Serialization.SerializationStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyVersionCompatibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.AcceptRejectRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.CommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConflictOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConnectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Constraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataColumnCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRelationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataRowView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSetDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataSysDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableClearEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableNewRowEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataTableReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSetting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DataViewSettingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DBConcurrencyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DeletedRowInaccessibleException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.DuplicateNameException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.EvaluateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.FillErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ForeignKeyConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbDataParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InRowChangingEventException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InternalDataCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidConstraintException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.InvalidExpressionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ITableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.KeyRestrictionBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.LoadOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MappingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MergeFailedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingMappingAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingPrimaryKeyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.MissingSchemaAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.NoNullAllowedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ParameterDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.PropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.ReadOnlyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.RowNotInTableException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Rule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SerializationFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StateChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StatementType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.StrongTypingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SyntaxErrorException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UniqueConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateRowSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.UpdateStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.VersionNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlReadMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.XmlWriteMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.CatalogLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataColumnMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DataTableMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataReaderExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.GroupByBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IDbColumnSchemaGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.IdentifierCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.RowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SchemaTableOptionalColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.SupportedJoinOperators' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.INullable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBoolean' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlChars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlCompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDecimal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlDouble' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt16' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlInt64' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlMoney' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNotFilledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlNullValueException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlSingle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTruncateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlXml' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.StorageState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ConditionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CorrelationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debug' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Debugger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerBrowsableState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessWindowStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrame' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackFrameExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.StackTrace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Stopwatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SwitchLevelAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.Contract' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractFailureKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.PureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolBinder1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolDocumentWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.ISymbolWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymAddressKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymbolToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SymbolStore.SymLanguageVendor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventActivityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventCounter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventFieldTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventManifestOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventSourceSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.EventWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Color' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BinaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.BindingRestrictions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CallInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ConvertBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.CreateInstanceBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DeleteMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicMetaObjectBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.DynamicObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.ExpandoObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.GetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IDynamicMetaObjectProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.IInvokeOnGetBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.InvokeMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetIndexBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.SetMemberBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Dynamic.UnaryOperationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CalendarWeekRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CharUnicodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CompareOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.CultureTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DateTimeStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DaylightTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.DigitShapes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GlobalizationExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.IdnMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberFormatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.NumberStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.RegionInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.SortVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.StringInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TextInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TimeSpanStyles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UnicodeCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BinaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.EndOfStreamException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.HandleInheritability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InternalBufferOverflowException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.InvalidDataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IOException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Path' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.PathTooLongException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SeekOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Stream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StreamWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.StringWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.TextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.CompressionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.DeflateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.GZipStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchive' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipArchiveMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.INormalizeForIsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStreamImpersonationWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Enumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableExecutor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.EnumerableQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IGrouping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ILookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IOrderedQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.IQueryProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Lookup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.OrderedParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelExecutionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelMergeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.ParallelQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Queryable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.BlockExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.CatchBlock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConditionalExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ConstantExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DebugInfoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DefaultExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.DynamicExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ElementInit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.Expression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ExpressionVisitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.GotoExpressionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IArgumentProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IDynamicExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.IndexExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.InvocationExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LabelTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LambdaExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ListInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.LoopExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberAssignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberInitExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberListBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MemberMemberBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.MethodCallExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewArrayExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.NewExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.ParameterExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.RuntimeVariablesExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchCase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SwitchExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.SymbolDocumentInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.TypeBinaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Linq.Expressions.UnaryExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.AuthenticationSchemeSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Authorization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.BindIPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CookieException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.CredentialCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DecompressionMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DownloadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FileWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.FtpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.GlobalProxySelection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpContinueDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerBasicIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerPrefixCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpListenerTimeoutManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpRequestHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpResponseHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpVersion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.HttpWebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICredentialsByHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebProxyScript' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkCredential' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenReadCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.OpenWriteCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ProtocolViolationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SecurityProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ServicePointManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadDataCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadFileCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadProgressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadStringCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.UploadValuesCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebExceptionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebHeaderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebRequestMethods' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpCacheAgeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.HttpRequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCacheLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Cache.RequestCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.ByteArrayContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.ClientCertificateOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.DelegatingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.FormUrlEncodedContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpClientHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpCompletionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMessageInvoker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpRequestMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.HttpResponseMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MessageProcessingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.MultipartFormDataContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StreamContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.StringContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.AuthenticationHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.CacheControlHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentDispositionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ContentRangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.EntityTagHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpContentHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpHeaderValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpRequestHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.HttpResponseHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.MediaTypeWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.NameValueWithParametersHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ProductInfoHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RangeItemHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.RetryConditionHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.StringWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.TransferCodingWithQualityHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.ViaHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Http.Headers.WarningHeaderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AlternateViewCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.Attachment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.AttachmentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.DeliveryNotificationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.LinkedResourceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SendCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpDeliveryMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpStatusCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentDisposition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.DispositionTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.MediaTypeNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mime.TransferEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.DuplicateAddressDetectionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.GatewayIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV4Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IcmpV6Statistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPGlobalStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPInterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv4InterfaceStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.IPv6InterfaceProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.MulticastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetBiosNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAddressChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkAvailabilityEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInformationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.NetworkInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.OperationalStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PhysicalAddress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PrefixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.ScopeLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.SuffixOrigin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpConnectionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.TcpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UdpStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.UnicastIPAddressInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.AuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslPolicyErrors' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.AddressFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IOControlCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPPacketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.IPv6MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.LingerOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.MulticastOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.NetworkStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.ProtocolType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SelectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SendPacketsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.Socket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketAsyncOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketInformationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketOptionName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketReceiveMessageFromResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketShutdown' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketTaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TcpListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.TransmitFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.HttpListenerWebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.BigInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Numerics.Complex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AmbiguousMatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCompanyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCopyrightAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyCultureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDelaySignAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFileVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyFlagsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyFileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyKeyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyNameProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyProductAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTitleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyTrademarkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.AssemblyVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Binder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CallingConventions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeFormatException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeNamedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.CustomAttributeTypedArgument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.DefaultMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClause' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ExceptionHandlingClauseOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.GenericParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ImageFileMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InterfaceMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IntrospectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflect' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.IReflectableType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.LocalVariableInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ManifestResourceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodBody' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodImplAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Missing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ObfuscationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Pointer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PortableExecutableKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ProcessorArchitecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ReflectionTypeLoadException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ResourceLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.RuntimeReflectionExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.StrongNameKeyPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetInvocationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetParameterCountException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeDelegator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OpCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.OperandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PackingSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StackBehaviour' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.IResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingManifestResourceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.MissingSatelliteAssemblyException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.SatelliteContractVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Resources.UltimateResourceFallbackLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLargeObjectHeapCompactionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCLatencyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.GCSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.AsyncVoidMethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxations' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CompilerMarshalOverride' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConditionalWeakTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ConfiguredTaskAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ContractHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DebugInfoGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.FormattableStringFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IAsyncStateMachine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ICriticalNotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.INotifyCompletion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IRuntimeVariables' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsConst' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsPinned' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IStrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsVolatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.LoadHint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodCodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.MethodImplOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReadOnlyCollectionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuleCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeHelpers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.StrongBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TaskAwaiter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.YieldAwaitable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Cer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.Consistency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.CriticalFinalizerObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.ExceptionDispatchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Architecture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ArrayWithOffset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BStrWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CallingConvention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CharSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ClassInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CoClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComEventsHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.COMException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComInterfaceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComMemberType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CriticalHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CurrencyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CustomQueryInterfaceResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispatchWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DispIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DllImportSearchPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ErrorWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExternalException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GCHandleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.GuidAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleCollector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.HandleRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomMarshaler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ICustomQueryInterface' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LayoutKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Marshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OptionalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OSPlatform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.OutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeEnvironment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RuntimeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SafeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SEHException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnknownWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UnmanagedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VarEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VariantWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ADVF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CALLCONV' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DATADIR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DESCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.DVASPECT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.FUNCKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IAdviseSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumSTATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.IStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.ITypeLib2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATDATA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STATSTG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYMED' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ComTypes.VARKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataContractSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.DateTimeFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EmitTypeInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExportOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ExtensionDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.FormatterServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IExtensibleDataObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.InvalidDataContractException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IObjectReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISafeSerializationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializationSurrogateProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectIDGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SafeSerializationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationObjectManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.StreamingContextStates' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlObjectSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XmlSerializableServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XPathQueryGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.FormatterTypeStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.TypeFilterLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.IXmlJsonWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Json.JsonReaderWriterFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ComponentGuaranteesOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.FrameworkName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.ResourceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Versioning.VersioningHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.IPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.ISecurityEncodable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.PartialTrustVisibilityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecureStringMarshal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityCriticalScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRulesAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityRuleSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecuritySafeCriticalAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTransparentAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SecurityTreatAsSafeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.UnverifiableCodeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.VerificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.CipherAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExchangeAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.HashAlgorithmType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.SslProtocols' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ChannelBindingKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicyTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Aes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AesManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricSignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoConfig' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.DSASignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanPublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsa' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.FromBase64TransformMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACMD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACSHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.IncrementalHash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PasswordDeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PKCS1MaskGenerationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RandomNumberGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RC2CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rfc2898DeriveBytes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Rijndael' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RijndaelManaged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RNGCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSA' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAEncryptionPaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAOAEPKeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureDeformatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSAPKCS1SignatureFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePadding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSASignaturePaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512Managed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SignatureDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ToBase64Transform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.TripleDESCryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509IncludeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Permissions.SecurityPermissionFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.IPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.PrincipalPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.TokenImpersonationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.ASCIIEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Decoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.DecoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderExceptionFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderFallbackException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncoderReplacementFallbackBuffer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.NormalizationForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.StringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UnicodeEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF32Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF7Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.UTF8Encoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Capture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.CaptureCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Group' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.GroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Match' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.MatchEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.Regex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AbandonedMutexException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ApartmentState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncFlowControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AsyncLocalValueChangedArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.AutoResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Barrier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.BarrierPostPhaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CancellationTokenSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CompressedStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ContextCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.CountdownEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventResetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.EventWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.HostExecutionContextManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Interlocked' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.IOCompletionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LazyThreadSafetyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockCookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.LockRecursionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ManualResetEventSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Monitor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Mutex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.NativeOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.PreAllocatedOverlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ReaderWriterLockSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Semaphore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreFullException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SemaphoreSlim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SendOrPostCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinLock' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SpinWait' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.SynchronizationLockException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadAbortException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadExceptionEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadInterruptedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadLocal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPoolBoundHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timeout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.TimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Volatile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitHandleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ConcurrentExclusiveSchedulerPair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Parallel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelLoopState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.ParallelOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.Task' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCanceledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCompletionSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskContinuationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskScheduler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskSchedulerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.TaskStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Tasks.UnobservedTaskExceptionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.ElapsedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.Timer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Timers.TimersDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.CommittableTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentCloneOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DependentTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Enlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnlistmentOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.EnterpriseServicesInteropOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.HostCurrentTransactionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IDtcTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IEnlistmentNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IPromotableSinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISimpleTransactionSuperior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ISinglePhaseNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.IsolationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.ITransactionPromoter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.PreparingEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SinglePhaseEnlistment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.SubordinateTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Transaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionAbortedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionCompletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInDoubtException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionInterop' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionManagerCommunicationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionPromotionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeAsyncFlowOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionScopeOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStartedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.TransactionStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Input.ICommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ConformanceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.DtdProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.EntityHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Formatting' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IFragmentCapableXmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IHasXmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IStreamProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlBinaryWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlLineInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlNamespaceResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlTextWriterInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NamespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.NewLineHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.OnXmlDictionaryReaderClose' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ReadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.UniqueId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.ValidationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WhitespaceHandling' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.WriteState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryReaderSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlBinaryWriterSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDateTimeSerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryReaderQuotaTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDictionaryWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlEntityReference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNameTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlOutputMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlParserContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlQualifiedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlReaderSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSecureResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlTokenizedType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlUrlResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlValidatingReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWriterSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.LoadOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.ReaderOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.SaveOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XCData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XDocumentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNamespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeDocumentOrderComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XNodeEqualityComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XObjectChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XStreamingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Linq.XText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlKnownDtds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Resolvers.XmlPreloadedResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.IXmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.ValidationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlAtomicValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchema' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAll' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotated' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnnotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAny' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAnyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAppInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaAttributeGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaChoice' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCollectionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaCompilationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaComplexType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatype' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDatatypeVariety' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDerivationMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaDocumentation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaEnumerationFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaExternal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaFractionDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaGroupRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaIdentityConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaImport' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInclude' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInference' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaKeyref' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMaxLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinExclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinInclusiveFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaMinLengthFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaNumericFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaParticle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaPatternFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaRedefine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSequence' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleContentRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeContent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeRestriction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaSimpleTypeUnion' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaTotalDigitsFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUnique' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaUse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaValidity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaWhiteSpaceFacet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSchemaXPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlSeverityType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlTypeCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Schema.XmlValueGetter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeGenerationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeIdentifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.ImportContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlSerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.IXmlTextParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.UnreferencedObjectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAnyElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlArrayItemAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributeOverrides' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlDeserializationEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlElementEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlEnumAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMappingAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMemberMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlMembersMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlNodeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlReflectionMember' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlRootAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSchemas' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationCollectionFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationFixupCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationGeneratedCode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReadCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriteCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializationWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerNamespaces' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlTypeMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.Extensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XDocumentExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextFunction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.IXsltContextVariable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslCompiledTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltArgumentList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltCompileException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltMessageEncounteredEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XslTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Xsl.XsltSettings' does not exist in the implementation but it does exist in the contract. -Total Issues: 2369 +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. +Total Issues: 0 diff --git a/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt b/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt index 6796815377be..8df09861493b 100644 --- a/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt @@ -2,28 +2,6 @@ DEFAULT_APPNAME Error: 0 : Failed to find or load matching assembly 'System.IO.F DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=System.DirectoryServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. Compat issues with assembly mscorlib: -MembersMustExist : Member 'System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.BaseDirectory.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetAssemblies()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.IsCompatibilitySwitchSet(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.RelativeSearchPath.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String System.Diagnostics.Debugger.DefaultCategory' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debugger.IsLogging()' does not exist in the implementation but it does exist in the contract. @@ -102,28 +80,6 @@ MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSing MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly netstandard: -MembersMustExist : Member 'System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.BaseDirectory.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetAssemblies()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.IsCompatibilitySwitchSet(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.RelativeSearchPath.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debug.AutoFlush.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debug.AutoFlush.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. @@ -382,4 +338,4 @@ MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSing MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Total Issues: 357 +Total Issues: 313 diff --git a/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt b/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt index defbe34dff81..46b9c536ea4f 100644 --- a/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt +++ b/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt @@ -1,26 +1,4 @@ Compat issues with assembly netstandard: -MembersMustExist : Member 'System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.BaseDirectory.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetAssemblies()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.IsCompatibilitySwitchSet(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.RelativeSearchPath.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_AssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_FirstChanceException(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ProcessExit(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_ResourceResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_TypeResolve(System.ResolveEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.remove_UnhandledException(System.UnhandledExceptionEventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debug.AutoFlush.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debug.AutoFlush.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. @@ -123,4 +101,4 @@ MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSing MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Total Issues: 124 +Total Issues: 102 From 398c80d620182e90a914382ae8f1a98f8389f7e4 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Thu, 6 Apr 2017 13:49:30 -0700 Subject: [PATCH 006/336] Removing unnecessary uapaot define --- .../src/System.Runtime.Extensions.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj index 3a20dc54ffad..baf5db7294f6 100644 --- a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj +++ b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj @@ -8,7 +8,6 @@ true true true - $(DefineConstants);uapaot From 664933bdb280a8c294c92624f56bf3bd8a606efa Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sat, 1 Apr 2017 13:49:46 +0700 Subject: [PATCH 007/336] Fix Assembly tests for netfx --- .../tests/System/Reflection/AssemblyTests.cs | 90 +++++++++++++++---- 1 file changed, 71 insertions(+), 19 deletions(-) diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index 42e2fed723a1..6f95dedbce2a 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -201,8 +201,16 @@ public static void GetModules_GetModule(Assembly assembly) Assert.NotEmpty(assembly.GetModules()); foreach (Module module in assembly.GetModules()) { - Assert.NotNull(module); - Assert.Equal(module, assembly.GetModule(module.Name)); + if (PlatformDetection.IsFullFramework) + { + Assert.Null(assembly.GetModule(module.Name)); + Assert.Equal(module, assembly.GetModule(module.ToString())); + } + else + { + Assert.Equal(module, assembly.GetModule(module.Name)); + Assert.Equal(module, assembly.GetModule(module.ToString())); + } } } @@ -261,25 +269,33 @@ public static void GetManifestResourceStream() public static void Test_GlobalAssemblyCache() { Assert.False(typeof(AssemblyTests).Assembly.GlobalAssemblyCache); - } + } [Fact] public static void Test_HostContext() { Assert.Equal(0, typeof(AssemblyTests).Assembly.HostContext); - } + } [Fact] public static void Test_IsFullyTrusted() { Assert.True(typeof(AssemblyTests).Assembly.IsFullyTrusted); - } + } [Fact] - public static void Test_SecurityRuleSet() + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports SecurityRuleSet")] + public static void Test_SecurityRuleSet_Netcore() { Assert.Equal(SecurityRuleSet.None, typeof(AssemblyTests).Assembly.SecurityRuleSet); - } + } + + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "SecurityRuleSet is ignored in .NET core")] + public static void Test_SecurityRuleSet_Netfx() + { + Assert.Equal(SecurityRuleSet.Level2, typeof(AssemblyTests).Assembly.SecurityRuleSet); + } [Fact] public static void Test_LoadFile() @@ -287,29 +303,65 @@ public static void Test_LoadFile() var assem = typeof(AssemblyTests).Assembly; string path = "System.Runtime.Tests.dll"; string fullpath = Path.GetFullPath(path); - Assert.Throws("path", () => Assembly.LoadFile(null)); - Assert.Throws(() => Assembly.LoadFile(path)); var loadfile1 = Assembly.LoadFile(fullpath); - Assert.NotEqual(assem, loadfile1); + Assert.Equal(assem.FullName, loadfile1.FullName); string dir = Path.GetDirectoryName(fullpath); fullpath = Path.Combine(dir, ".", path); var loadfile2 = Assembly.LoadFile(fullpath); - Assert.Equal(loadfile1,loadfile2); - } + Assert.Equal(loadfile1.FullName, loadfile2.FullName); + } [Fact] - public static void Test_LoadFromUsingHashValue() + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework has a bug and throws a NullReferenceException")] + public static void LoadFile_NullPath_Netcore_ThrowsArgumentNullException() + { + Assert.Throws("path", () => Assembly.LoadFile(null)); + } + + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ".NET core fixed a bug where LoadFile(null) throws a NullReferenceException")] + public static void LoadFile_NullPath_Netfx_ThrowsNullReferenceException() + { + Assert.Throws(() => Assembly.LoadFile(null)); + } + + [Fact] + public static void LoadFile_NoSuchPath_ThrowsArgumentException() + { + Assert.Throws(() => Assembly.LoadFile("System.Runtime.Tests.dll")); + } + + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports Assembly.LoadFrom")] + public static void Test_LoadFromUsingHashValue_Netcore() { Assert.Throws(() => Assembly.LoadFrom("abc", null, System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); - } + } [Fact] - public static void Test_LoadModule() + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The implementation of Assembly.LoadFrom is stubbed out in .NET core")] + public static void Test_LoadFromUsingHashValue_Netfx() { - var assem = typeof(AssemblyTests).Assembly; - Assert.Throws(() => assem.LoadModule("abc", null)); - Assert.Throws(() => assem.LoadModule("abc", null, null)); - } + Assert.Throws(() => Assembly.LoadFrom("abc", null, System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); + } + + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports more than one module per assembly")] + public static void Test_LoadModule_Netcore() + { + Assembly assembly = typeof(AssemblyTests).Assembly; + Assert.Throws(() => assembly.LoadModule("abc", null)); + Assert.Throws(() => assembly.LoadModule("abc", null, null)); + } + + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The coreclr doesn't support more than one module per assembly")] + public static void Test_LoadModule_Netfx() + { + Assembly assembly = typeof(AssemblyTests).Assembly; + Assert.Throws(null, () => assembly.LoadModule("abc", null)); + Assert.Throws(null, () => assembly.LoadModule("abc", null, null)); + } #pragma warning disable 618 [Fact] From c03251050414df4f278b7bd4e50f9f08bc7bd238 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Wed, 12 Apr 2017 21:33:00 +0300 Subject: [PATCH 008/336] Move SQLResource.cs to Common (remove two almost identical files from System.Data.Common and System.Data.SqlClient) --- .../src/System/Data/Common}/SQLResource.cs | 8 +-- .../src/System.Data.Common.csproj | 4 +- .../src/System/Data/SQLTypes/SQLBinary.cs | 2 +- .../src/System/Data/SQLTypes/SQLBoolean.cs | 4 +- .../src/System/Data/SQLTypes/SQLByte.cs | 24 +++---- .../src/System/Data/SQLTypes/SQLDateTime.cs | 16 ++--- .../src/System/Data/SQLTypes/SQLDecimal.cs | 56 +++++++-------- .../src/System/Data/SQLTypes/SQLDouble.cs | 16 ++--- .../src/System/Data/SQLTypes/SQLGuid.cs | 8 +-- .../src/System/Data/SQLTypes/SQLInt16.cs | 26 +++---- .../src/System/Data/SQLTypes/SQLInt32.cs | 26 +++---- .../src/System/Data/SQLTypes/SQLInt64.cs | 34 ++++----- .../src/System/Data/SQLTypes/SQLMoney.cs | 16 ++--- .../src/System/Data/SQLTypes/SQLResource.cs | 71 ------------------- .../src/System/Data/SQLTypes/SQLSingle.cs | 16 ++--- .../src/System/Data/SQLTypes/SQLString.cs | 6 +- .../src/System/Data/SQLTypes/SQLUtility.cs | 8 +-- .../src/System/Data/SQLTypes/SqlXml.cs | 2 +- .../src/System.Data.SqlClient.csproj | 4 +- 19 files changed, 140 insertions(+), 207 deletions(-) rename src/{System.Data.SqlClient/src/System/Data/SqlTypes => Common/src/System/Data/Common}/SQLResource.cs (89%) delete mode 100644 src/System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs diff --git a/src/System.Data.SqlClient/src/System/Data/SqlTypes/SQLResource.cs b/src/Common/src/System/Data/Common/SQLResource.cs similarity index 89% rename from src/System.Data.SqlClient/src/System/Data/SqlTypes/SQLResource.cs rename to src/Common/src/System/Data/Common/SQLResource.cs index a8afd22efe0c..d4df9b4a49f1 100644 --- a/src/System.Data.SqlClient/src/System/Data/SqlTypes/SQLResource.cs +++ b/src/Common/src/System/Data/Common/SQLResource.cs @@ -56,22 +56,22 @@ internal static class SQLResource internal static string InvalidOpStreamClosed(string method) { - return SR.GetString(SR.SqlMisc_InvalidOpStreamClosed, method); + return SR.Format(SR.SqlMisc_InvalidOpStreamClosed, method); } internal static string InvalidOpStreamNonWritable(string method) { - return SR.GetString(SR.SqlMisc_InvalidOpStreamNonWritable, method); + return SR.Format(SR.SqlMisc_InvalidOpStreamNonWritable, method); } internal static string InvalidOpStreamNonReadable(string method) { - return SR.GetString(SR.SqlMisc_InvalidOpStreamNonReadable, method); + return SR.Format(SR.SqlMisc_InvalidOpStreamNonReadable, method); } internal static string InvalidOpStreamNonSeekable(string method) { - return SR.GetString(SR.SqlMisc_InvalidOpStreamNonSeekable, method); + return SR.Format(SR.SqlMisc_InvalidOpStreamNonSeekable, method); } } // SqlResource } // namespace System diff --git a/src/System.Data.Common/src/System.Data.Common.csproj b/src/System.Data.Common/src/System.Data.Common.csproj index 73d3d007c170..e4b1a71b6c85 100644 --- a/src/System.Data.Common/src/System.Data.Common.csproj +++ b/src/System.Data.Common/src/System.Data.Common.csproj @@ -253,7 +253,9 @@ - + + System\Data\SQLTypes\SQLResource.cs + diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLBinary.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLBinary.cs index f1de51e2558d..eb0c997a5644 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLBinary.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLBinary.cs @@ -121,7 +121,7 @@ public int Length /// Returns a string describing a object. /// public override string ToString() => - IsNull ? SQLResource.s_nullString : "SqlBinary(" + _value.Length.ToString(CultureInfo.InvariantCulture) + ")"; + IsNull ? SQLResource.NullString : "SqlBinary(" + _value.Length.ToString(CultureInfo.InvariantCulture) + ")"; // Unary operators diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLBoolean.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLBoolean.cs index 101e644f4103..15d0b531c27c 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLBoolean.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLBoolean.cs @@ -191,7 +191,7 @@ public byte ByteValue public override string ToString() { - return IsNull ? SQLResource.s_nullString : Value.ToString(); + return IsNull ? SQLResource.NullString : Value.ToString(); } public static SqlBoolean Parse(string s) @@ -199,7 +199,7 @@ public static SqlBoolean Parse(string s) if (null == s) // Let Boolean.Parse throw exception return new SqlBoolean(bool.Parse(s)); - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlBoolean.Null; s = s.TrimStart(); diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLByte.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLByte.cs index 68fcdc33e7a6..b13646275580 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLByte.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLByte.cs @@ -70,12 +70,12 @@ public static explicit operator byte (SqlByte x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlByte Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlByte.Null; else return new SqlByte(byte.Parse(s, null)); @@ -98,7 +98,7 @@ public static SqlByte Parse(string s) int iResult = x._value + y._value; if ((iResult & s_iBitNotByteMax) != 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlByte((byte)iResult); } @@ -110,7 +110,7 @@ public static SqlByte Parse(string s) int iResult = x._value - y._value; if ((iResult & s_iBitNotByteMax) != 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlByte((byte)iResult); } @@ -122,7 +122,7 @@ public static SqlByte Parse(string s) int iResult = x._value * y._value; if ((iResult & s_iBitNotByteMax) != 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlByte((byte)iResult); } @@ -137,7 +137,7 @@ public static SqlByte Parse(string s) return new SqlByte((byte)(x._value / y._value)); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } public static SqlByte operator %(SqlByte x, SqlByte y) @@ -150,7 +150,7 @@ public static SqlByte Parse(string s) return new SqlByte((byte)(x._value % y._value)); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } // Bitwise operators @@ -195,7 +195,7 @@ public static explicit operator SqlByte(SqlInt16 x) return Null; if (x.Value > byte.MaxValue || x.Value < byte.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return x.IsNull ? Null : new SqlByte((byte)(x.Value)); } @@ -207,7 +207,7 @@ public static explicit operator SqlByte(SqlInt32 x) return Null; if (x.Value > byte.MaxValue || x.Value < byte.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return x.IsNull ? Null : new SqlByte((byte)(x.Value)); } @@ -219,7 +219,7 @@ public static explicit operator SqlByte(SqlInt64 x) return Null; if (x.Value > byte.MaxValue || x.Value < byte.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return x.IsNull ? Null : new SqlByte((byte)(x.Value)); } @@ -231,7 +231,7 @@ public static explicit operator SqlByte(SqlSingle x) return Null; if (x.Value > byte.MaxValue || x.Value < byte.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return x.IsNull ? Null : new SqlByte((byte)(x.Value)); } @@ -243,7 +243,7 @@ public static explicit operator SqlByte(SqlDouble x) return Null; if (x.Value > byte.MaxValue || x.Value < byte.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return x.IsNull ? Null : new SqlByte((byte)(x.Value)); } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDateTime.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDateTime.cs index 8e377b1ba843..95757d677e81 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDateTime.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDateTime.cs @@ -137,7 +137,7 @@ public SqlDateTime(int year, int month, int day, int hour, int minute, int secon } } - throw new SqlTypeException(SQLResource.s_invalidDateTimeMessage); + throw new SqlTypeException(SQLResource.InvalidDateTimeMessage); } // constructor that take DBTIMESTAMP data members @@ -153,7 +153,7 @@ public SqlDateTime(int dayTicks, int timeTicks) if (dayTicks < s_minDay || dayTicks > s_maxDay || timeTicks < s_minTime || timeTicks > s_maxTime) { _fNotNull = false; - throw new OverflowException(SQLResource.s_dateTimeOverflowMessage); + throw new OverflowException(SQLResource.DateTimeOverflowMessage); } _day = dayTicks; @@ -164,7 +164,7 @@ public SqlDateTime(int dayTicks, int timeTicks) internal SqlDateTime(double dblVal) { if ((dblVal < s_minDay) || (dblVal >= s_maxDay + 1)) - throw new OverflowException(SQLResource.s_dateTimeOverflowMessage); + throw new OverflowException(SQLResource.DateTimeOverflowMessage); int day = (int)dblVal; int time = (int)((dblVal - day) * s_SQLTicksPerDay); @@ -217,7 +217,7 @@ internal static DateTime ToDateTime(int daypart, int timepart) { if (daypart < s_minDay || daypart > s_maxDay || timepart < s_minTime || timepart > s_maxTime) { - throw new OverflowException(SQLResource.s_dateTimeOverflowMessage); + throw new OverflowException(SQLResource.DateTimeOverflowMessage); } long dayticks = daypart * TimeSpan.TicksPerDay; long timeticks = ((long)(timepart / s_SQLTicksPerMillisecond + 0.5)) * TimeSpan.TicksPerMillisecond; @@ -230,7 +230,7 @@ internal static DateTime ToDateTime(int daypart, int timepart) private static SqlDateTime FromTimeSpan(TimeSpan value) { if (value < s_minTimeSpan || value > s_maxTimeSpan) - throw new SqlTypeException(SQLResource.s_dateTimeOverflowMessage); + throw new SqlTypeException(SQLResource.DateTimeOverflowMessage); int day = value.Days; @@ -340,7 +340,7 @@ public static explicit operator DateTime(SqlDateTime x) public override string ToString() { if (IsNull) - return SQLResource.s_nullString; + return SQLResource.NullString; DateTime dateTime = ToDateTime(this); return dateTime.ToString((IFormatProvider)null); } @@ -349,7 +349,7 @@ public static SqlDateTime Parse(string s) { DateTime dt; - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlDateTime.Null; try @@ -664,7 +664,7 @@ void IXmlSerializable.ReadXml(XmlReader reader) // if (dt.Kind != System.DateTimeKind.Unspecified) { - throw new SqlTypeException(SQLResource.s_timeZoneSpecifiedMessage); + throw new SqlTypeException(SQLResource.TimeZoneSpecifiedMessage); } SqlDateTime st = FromDateTime(dt); diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDecimal.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDecimal.cs index 20f83d398e3a..5fbbd3ad8775 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDecimal.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDecimal.cs @@ -583,7 +583,7 @@ public SqlDecimal(byte bPrecision, byte bScale, bool fPositive, int[] bits) if (bits == null) throw new ArgumentNullException(nameof(bits)); else if (bits.Length != 4) - throw new ArgumentException(SQLResource.s_invalidArraySizeMessage, nameof(bits)); + throw new ArgumentException(SQLResource.InvalidArraySizeMessage, nameof(bits)); _bPrec = bPrecision; _bScale = bScale; @@ -615,7 +615,7 @@ public SqlDecimal(byte bPrecision, byte bScale, bool fPositive, int[] bits) SetPositive(); if (bPrecision < CalculatePrecision()) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } public SqlDecimal(byte bPrecision, byte bScale, bool fPositive, int data1, int data2, int data3, int data4) @@ -655,7 +655,7 @@ public SqlDecimal(byte bPrecision, byte bScale, bool fPositive, int data1, int d SetPositive(); if (bPrecision < CalculatePrecision()) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } public SqlDecimal(double dVal) : this(false) @@ -672,7 +672,7 @@ public SqlDecimal(double dVal) : this(false) // If it will not fit into numeric(NUMERIC_MAX_PRECISION,0), overflow. if (dVal >= s_DMAX_NUME) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); double dInt = Math.Floor(dVal); double dFrac = dVal - dInt; @@ -921,7 +921,7 @@ public byte[] BinData public override string ToString() { if (IsNull) - return SQLResource.s_nullString; + return SQLResource.NullString; AssertValid(); // Make local copy of data to avoid modifying input. @@ -992,7 +992,7 @@ public static SqlDecimal Parse(string s) if (s == null) throw new ArgumentNullException(nameof(s)); - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlDecimal.Null; SqlDecimal snResult = SqlDecimal.Null; @@ -1018,7 +1018,7 @@ public static SqlDecimal Parse(string s) // If string contains only spaces, stop if (cwchStr == 0) - throw new FormatException(SQLResource.s_formatMessage); + throw new FormatException(SQLResource.FormatMessage); // Trim leading blanks. while (rgwchStr[iCurChar] == ' ') @@ -1058,7 +1058,7 @@ public static SqlDecimal Parse(string s) // Invalid string? if (cwchStr == 0 || cwchStr > s_NUMERIC_MAX_PRECISION + 1) - throw new FormatException(SQLResource.s_formatMessage); + throw new FormatException(SQLResource.FormatMessage); // Trim leading zeros. (There shouldn't be any except for floats // less than 1. e.g. 0.01) @@ -1082,7 +1082,7 @@ public static SqlDecimal Parse(string s) continue; } else - throw new FormatException(SQLResource.s_formatMessage); + throw new FormatException(SQLResource.FormatMessage); snResult.MultByULong(s_ulBase10); snResult.AddULong(usChar); @@ -1102,12 +1102,12 @@ public static SqlDecimal Parse(string s) //Check for overflow condition if (snResult._bPrec > s_NUMERIC_MAX_PRECISION) - throw new FormatException(SQLResource.s_formatMessage); + throw new FormatException(SQLResource.FormatMessage); // Check for invalid precision for numeric value. // e.g., when string is ".", precision will be 0 if (snResult._bPrec == 0) - throw new FormatException(SQLResource.s_formatMessage); + throw new FormatException(SQLResource.FormatMessage); // If result is -0, adjust sign to positive. if (snResult.FZero()) @@ -1141,7 +1141,7 @@ private decimal ToDecimal() throw new SqlNullValueException(); if ((int)_data4 != 0 || _bScale > 28) - throw new OverflowException(SQLResource.s_conversionOverflowMessage); + throw new OverflowException(SQLResource.ConversionOverflowMessage); unchecked { @@ -1294,7 +1294,7 @@ public static explicit operator decimal (SqlDecimal x) //Either overflowed if (iulData == s_cNumeMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); // Or extended length rglData1[iulData] = (uint)dwlAccum; @@ -1341,7 +1341,7 @@ public static explicit operator decimal (SqlDecimal x) SqlDecimal ret = new SqlDecimal(rglData1, bLen, (byte)ResPrec, (byte)ResScale, fResSignPos); if (ret.FGt10_38() || ret.CalculatePrecision() > s_NUMERIC_MAX_PRECISION) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); if (ret.FZero()) ret.SetPositive(); @@ -1535,7 +1535,7 @@ public static explicit operator decimal (SqlDecimal x) // Still do not fit? if (culRes > s_cNumeMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); for (idRes = culRes; idRes < s_cNumeMax; idRes++) rgulRes[idRes] = 0; @@ -1543,7 +1543,7 @@ public static explicit operator decimal (SqlDecimal x) // Is it greater than 10**38? if (ret.FGt10_38()) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); ret.AssertValid(); @@ -1560,7 +1560,7 @@ public static explicit operator decimal (SqlDecimal x) // Otherwise call AdjustScale if (culRes > s_cNumeMax) // Do not fit now, so will not fit after asjustement - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); // NOTE: Have not check for value in the range (10**38..2**128), // as we'll call AdjustScale with positive argument, and it'll // return "normal" overflow @@ -1581,7 +1581,7 @@ public static explicit operator decimal (SqlDecimal x) else { if (culRes > s_cNumeMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); for (idRes = culRes; idRes < s_cNumeMax; idRes++) rgulRes[idRes] = 0; @@ -1589,7 +1589,7 @@ public static explicit operator decimal (SqlDecimal x) // Is it greater than 10**38? if (ret.FGt10_38()) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); if (ret.FZero()) ret.SetPositive(); @@ -1652,7 +1652,7 @@ public static explicit operator decimal (SqlDecimal x) // 0) Check for Div by 0 if (y.FZero()) - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); // 1) Figure out result prec,scale,sign.. fResSignPos = (x.IsPositive == y.IsPositive);//sign of result @@ -2114,14 +2114,14 @@ private void AddULong(uint ulAdd) // Either overflowed if (iData == s_cNumeMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); // Or need to extend length by 1 UI4 rguiData[iData] = (uint)dwlAccum; _bLen++; if (FGt10_38(rguiData)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); StoreFromWorkingArray(rguiData); } @@ -2158,7 +2158,7 @@ private void MultByULong(uint uiMultiplier) // Either overflowed Debug.Assert(dwlAccum < s_ulInt32Base, "dwlAccum < x_dwlBaseUI4", "Integer overflow"); if (iDataMax == s_cNumeMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); // Or extend length by one uint rguiData[iDataMax] = (uint)dwlAccum; @@ -2166,7 +2166,7 @@ private void MultByULong(uint uiMultiplier) } if (FGt10_38(rguiData)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); StoreFromWorkingArray(rguiData); } @@ -2192,7 +2192,7 @@ private uint DivByULong(uint iDivisor) // Check for zero divisor. if (dwlDivisor == 0) - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); // Copy into array, so that we can iterate through the data uint[] rguiData = new uint[4] { _data1, _data2, _data3, _data4 }; @@ -2265,7 +2265,7 @@ internal void AdjustScale(int digits, bool fRound) //If uphifting causes scale overflow if (lAdjust + _bScale > s_NUMERIC_MAX_PRECISION) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); bNewScale = (byte)(lAdjust + _bScale); bNewPrec = (byte)(Math.Min(s_NUMERIC_MAX_PRECISION, Math.Max(1, lAdjust + _bPrec))); @@ -2826,13 +2826,13 @@ SqlDecimal snumOp private static void CheckValidPrecScale(byte bPrec, byte bScale) { if (bPrec < 1 || bPrec > MaxPrecision || bScale < 0 || bScale > MaxScale || bScale > bPrec) - throw new SqlTypeException(SQLResource.s_invalidPrecScaleMessage); + throw new SqlTypeException(SQLResource.InvalidPrecScaleMessage); } private static void CheckValidPrecScale(int iPrec, int iScale) { if (iPrec < 1 || iPrec > MaxPrecision || iScale < 0 || iScale > MaxScale || iScale > iPrec) - throw new SqlTypeException(SQLResource.s_invalidPrecScaleMessage); + throw new SqlTypeException(SQLResource.InvalidPrecScaleMessage); } // Overloading comparison operators diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDouble.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDouble.cs index 66b1040b6e02..d46963eafa3c 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLDouble.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLDouble.cs @@ -34,7 +34,7 @@ private SqlDouble(bool fNull) public SqlDouble(double value) { if (double.IsInfinity(value) || double.IsNaN(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else { _value = value; @@ -74,12 +74,12 @@ public static explicit operator double (SqlDouble x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlDouble Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlDouble.Null; else return new SqlDouble(double.Parse(s, CultureInfo.InvariantCulture)); @@ -104,7 +104,7 @@ public static SqlDouble Parse(string s) double value = x._value + y._value; if (double.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlDouble(value); } @@ -117,7 +117,7 @@ public static SqlDouble Parse(string s) double value = x._value - y._value; if (double.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlDouble(value); } @@ -130,7 +130,7 @@ public static SqlDouble Parse(string s) double value = x._value * y._value; if (double.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlDouble(value); } @@ -141,12 +141,12 @@ public static SqlDouble Parse(string s) return Null; if (y._value == 0.0) - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); double value = x._value / y._value; if (double.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlDouble(value); } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLGuid.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLGuid.cs index 51b7a04187a7..4035eda293fc 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLGuid.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLGuid.cs @@ -36,7 +36,7 @@ private SqlGuid(bool fNull) public SqlGuid(byte[] value) { if (value == null || value.Length != s_sizeOfGuid) - throw new ArgumentException(SQLResource.s_invalidArraySizeMessage); + throw new ArgumentException(SQLResource.InvalidArraySizeMessage); _value = new byte[s_sizeOfGuid]; value.CopyTo(_value, 0); @@ -45,7 +45,7 @@ public SqlGuid(byte[] value) internal SqlGuid(byte[] value, bool ignored) { if (value == null || value.Length != s_sizeOfGuid) - throw new ArgumentException(SQLResource.s_invalidArraySizeMessage); + throw new ArgumentException(SQLResource.InvalidArraySizeMessage); _value = value; } @@ -106,7 +106,7 @@ public byte[] ToByteArray() public override string ToString() { if (IsNull) - return SQLResource.s_nullString; + return SQLResource.NullString; Guid g = new Guid(_value); return g.ToString(); @@ -114,7 +114,7 @@ public override string ToString() public static SqlGuid Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlGuid.Null; else return new SqlGuid(s); diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt16.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt16.cs index 780bc216f102..237a2126a2ed 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt16.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt16.cs @@ -69,12 +69,12 @@ public static explicit operator short (SqlInt16 x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlInt16 Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlInt16.Null; else return new SqlInt16(short.Parse(s, null)); @@ -103,7 +103,7 @@ public static SqlInt16 Parse(string s) int iResult = x._value + y._value; if ((((iResult >> 15) ^ (iResult >> 16)) & 1) != 0) // Bit 15 != bit 16 - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)iResult); } @@ -115,7 +115,7 @@ public static SqlInt16 Parse(string s) int iResult = x._value - y._value; if ((((iResult >> 15) ^ (iResult >> 16)) & 1) != 0) // Bit 15 != bit 16 - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)iResult); } @@ -128,7 +128,7 @@ public static SqlInt16 Parse(string s) int iResult = x._value * y._value; int iTemp = iResult & s_MASKI2; if (iTemp != 0 && iTemp != s_MASKI2) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)iResult); } @@ -141,12 +141,12 @@ public static SqlInt16 Parse(string s) if (y._value != 0) { if ((x._value == short.MinValue) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt16((short)(x._value / y._value)); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } public static SqlInt16 operator %(SqlInt16 x, SqlInt16 y) @@ -157,12 +157,12 @@ public static SqlInt16 Parse(string s) if (y._value != 0) { if ((x._value == short.MinValue) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt16((short)(x._value % y._value)); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } // Bitwise operators @@ -207,7 +207,7 @@ public static explicit operator SqlInt16(SqlInt32 x) int value = x.Value; if (value > short.MaxValue || value < short.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)value); } @@ -220,7 +220,7 @@ public static explicit operator SqlInt16(SqlInt64 x) long value = x.Value; if (value > short.MaxValue || value < short.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)value); } @@ -233,7 +233,7 @@ public static explicit operator SqlInt16(SqlSingle x) float value = x.Value; if (value < short.MinValue || value > short.MaxValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)value); } @@ -246,7 +246,7 @@ public static explicit operator SqlInt16(SqlDouble x) double value = x.Value; if (value < short.MinValue || value > short.MaxValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt16((short)value); } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt32.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt32.cs index c06a98b719ec..be703a852fc7 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt32.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt32.cs @@ -71,12 +71,12 @@ public static explicit operator int (SqlInt32 x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlInt32 Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlInt32.Null; else return new SqlInt32(int.Parse(s, null)); @@ -105,7 +105,7 @@ public static SqlInt32 Parse(string s) int iResult = x._value + y._value; if (SameSignInt(x._value, y._value) && !SameSignInt(x._value, iResult)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32(iResult); } @@ -117,7 +117,7 @@ public static SqlInt32 Parse(string s) int iResult = x._value - y._value; if (!SameSignInt(x._value, y._value) && SameSignInt(y._value, iResult)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32(iResult); } @@ -130,7 +130,7 @@ public static SqlInt32 Parse(string s) long lResult = x._value * (long)y._value; long lTemp = lResult & s_lBitNotIntMax; if (lTemp != 0 && lTemp != s_lBitNotIntMax) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32((int)lResult); } @@ -143,12 +143,12 @@ public static SqlInt32 Parse(string s) if (y._value != 0) { if ((x._value == s_iIntMin) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt32(x._value / y._value); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } public static SqlInt32 operator %(SqlInt32 x, SqlInt32 y) @@ -159,12 +159,12 @@ public static SqlInt32 Parse(string s) if (y._value != 0) { if ((x._value == s_iIntMin) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt32(x._value % y._value); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } // Bitwise operators @@ -215,7 +215,7 @@ public static explicit operator SqlInt32(SqlInt64 x) long value = x.Value; if (value > int.MaxValue || value < int.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32((int)value); } @@ -228,7 +228,7 @@ public static explicit operator SqlInt32(SqlSingle x) float value = x.Value; if (value > int.MaxValue || value < int.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32((int)value); } @@ -241,7 +241,7 @@ public static explicit operator SqlInt32(SqlDouble x) double value = x.Value; if (value > int.MaxValue || value < int.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt32((int)value); } @@ -265,7 +265,7 @@ public static explicit operator SqlInt32(SqlDecimal x) ret = -ret; if (x._bLen > 1 || ret > int.MaxValue || ret < int.MinValue) - throw new OverflowException(SQLResource.s_conversionOverflowMessage); + throw new OverflowException(SQLResource.ConversionOverflowMessage); return new SqlInt32((int)ret); } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt64.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt64.cs index 36304bf9cd4c..c662a4437088 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt64.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLInt64.cs @@ -72,12 +72,12 @@ public static explicit operator long (SqlInt64 x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlInt64 Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlInt64.Null; else return new SqlInt64(long.Parse(s, null)); @@ -106,7 +106,7 @@ public static SqlInt64 Parse(string s) long lResult = x._value + y._value; if (SameSignLong(x._value, y._value) && !SameSignLong(x._value, lResult)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt64(lResult); } @@ -118,7 +118,7 @@ public static SqlInt64 Parse(string s) long lResult = x._value - y._value; if (!SameSignLong(x._value, y._value) && SameSignLong(y._value, lResult)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt64(lResult); } @@ -154,31 +154,31 @@ public static SqlInt64 Parse(string s) // if both of the high order dwords are non-zero then overflow results if (lHigh1 != 0 && lHigh2 != 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); lResult = lLow1 * lLow2; if (lResult < 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); if (lHigh1 != 0) { Debug.Assert(lHigh2 == 0); lPartialResult = lHigh1 * lLow2; if (lPartialResult < 0 || lPartialResult > long.MaxValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } else if (lHigh2 != 0) { Debug.Assert(lHigh1 == 0); lPartialResult = lLow1 * lHigh2; if (lPartialResult < 0 || lPartialResult > long.MaxValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } lResult += lPartialResult << 32; if (lResult < 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); if (fNeg) lResult = -lResult; @@ -194,12 +194,12 @@ public static SqlInt64 Parse(string s) if (y._value != 0) { if ((x._value == long.MinValue) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt64(x._value / y._value); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } public static SqlInt64 operator %(SqlInt64 x, SqlInt64 y) @@ -210,12 +210,12 @@ public static SqlInt64 Parse(string s) if (y._value != 0) { if ((x._value == long.MinValue) && (y._value == -1)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlInt64(x._value % y._value); } else - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); } // Bitwise operators @@ -272,7 +272,7 @@ public static explicit operator SqlInt64(SqlSingle x) float value = x.Value; if (value > long.MaxValue || value < long.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt64((long)value); } @@ -285,7 +285,7 @@ public static explicit operator SqlInt64(SqlDouble x) double value = x.Value; if (value > long.MaxValue || value < long.MinValue) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else return new SqlInt64((long)value); } @@ -310,14 +310,14 @@ public static explicit operator SqlInt64(SqlDecimal x) // More than 8 bytes of data will always overflow if (ssnumTemp._bLen > 2) - throw new OverflowException(SQLResource.s_conversionOverflowMessage); + throw new OverflowException(SQLResource.ConversionOverflowMessage); // If 8 bytes of data, see if fits in LONGLONG if (ssnumTemp._bLen == 2) { ulong dwl = SqlDecimal.DWL(ssnumTemp._data1, ssnumTemp._data2); if (dwl > SqlDecimal.s_llMax && (ssnumTemp.IsPositive || dwl != 1 + SqlDecimal.s_llMax)) - throw new OverflowException(SQLResource.s_conversionOverflowMessage); + throw new OverflowException(SQLResource.ConversionOverflowMessage); llRetVal = (long)dwl; } // 4 bytes of data always fits in a LONGLONG diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLMoney.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLMoney.cs index 0f28570582a5..e8955966fb04 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLMoney.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLMoney.cs @@ -68,7 +68,7 @@ public SqlMoney(int value) public SqlMoney(long value) { if (value < s_minLong || value > s_maxLong) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); _value = value * s_lTickBase; _fNotNull = true; } @@ -84,13 +84,13 @@ public SqlMoney(decimal value) Debug.Assert(snum.Scale == s_iMoneyScale); if (snum._data3 != 0 || snum._data4 != 0) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); bool fPositive = snum.IsPositive; ulong ulValue = snum._data1 + (((ulong)snum._data2) << 32); if (fPositive && ulValue > long.MaxValue || !fPositive && ulValue > unchecked((ulong)(long.MinValue))) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); _value = fPositive ? (long)ulValue : unchecked(-(long)ulValue); _fNotNull = true; @@ -210,7 +210,7 @@ public override string ToString() { if (IsNull) { - return SQLResource.s_nullString; + return SQLResource.NullString; } decimal money = ToDecimal(); // Formatting of SqlMoney: At least two digits after decimal point @@ -234,7 +234,7 @@ public static SqlMoney Parse(string s) NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite; - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) { money = SqlMoney.Null; } @@ -256,7 +256,7 @@ public static SqlMoney Parse(string s) if (x.IsNull) return Null; if (x._value == s_minLong) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlMoney(-x._value, 0); } @@ -272,7 +272,7 @@ public static SqlMoney Parse(string s) } catch (OverflowException) { - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } } @@ -284,7 +284,7 @@ public static SqlMoney Parse(string s) } catch (OverflowException) { - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); } } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs deleted file mode 100644 index d767856697fc..000000000000 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLResource.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace System.Data.SqlTypes -{ - internal sealed class SQLResource - { - private SQLResource() { /* prevent utility class from being insantiated*/ } - - internal static readonly string s_nullString = SR.SqlMisc_NullString; - - internal static readonly string s_messageString = SR.SqlMisc_MessageString; - - internal static readonly string s_arithOverflowMessage = SR.SqlMisc_ArithOverflowMessage; - - internal static readonly string s_divideByZeroMessage = SR.SqlMisc_DivideByZeroMessage; - - internal static readonly string s_nullValueMessage = SR.SqlMisc_NullValueMessage; - - internal static readonly string s_truncationMessage = SR.SqlMisc_TruncationMessage; - - internal static readonly string s_dateTimeOverflowMessage = SR.SqlMisc_DateTimeOverflowMessage; - - internal static readonly string s_concatDiffCollationMessage = SR.SqlMisc_ConcatDiffCollationMessage; - - internal static readonly string s_compareDiffCollationMessage = SR.SqlMisc_CompareDiffCollationMessage; - - internal static readonly string s_invalidFlagMessage = SR.SqlMisc_InvalidFlagMessage; - - internal static readonly string s_numeToDecOverflowMessage = SR.SqlMisc_NumeToDecOverflowMessage; - - internal static readonly string s_conversionOverflowMessage = SR.SqlMisc_ConversionOverflowMessage; - - internal static readonly string s_invalidDateTimeMessage = SR.SqlMisc_InvalidDateTimeMessage; - - internal static readonly string s_timeZoneSpecifiedMessage = SR.SqlMisc_TimeZoneSpecifiedMessage; - - internal static readonly string s_invalidArraySizeMessage = SR.SqlMisc_InvalidArraySizeMessage; - - internal static readonly string s_invalidPrecScaleMessage = SR.SqlMisc_InvalidPrecScaleMessage; - - internal static readonly string s_formatMessage = SR.SqlMisc_FormatMessage; - - internal static readonly string s_notFilledMessage = SR.SqlMisc_NotFilledMessage; - - internal static readonly string s_alreadyFilledMessage = SR.SqlMisc_AlreadyFilledMessage; - - internal static readonly string s_closedXmlReaderMessage = SR.SqlMisc_ClosedXmlReaderMessage; - - internal static string InvalidOpStreamClosed(string method) - { - return SR.Format(SR.SqlMisc_InvalidOpStreamClosed, method); - } - - internal static string InvalidOpStreamNonWritable(string method) - { - return SR.Format(SR.SqlMisc_InvalidOpStreamNonWritable, method); - } - - internal static string InvalidOpStreamNonReadable(string method) - { - return SR.Format(SR.SqlMisc_InvalidOpStreamNonReadable, method); - } - - internal static string InvalidOpStreamNonSeekable(string method) - { - return SR.Format(SR.SqlMisc_InvalidOpStreamNonSeekable, method); - } - } // SqlResource -} // namespace System diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLSingle.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLSingle.cs index 4ca2d91fa77d..643ff22407f9 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLSingle.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLSingle.cs @@ -33,7 +33,7 @@ private SqlSingle(bool fNull) public SqlSingle(float value) { if (float.IsInfinity(value) || float.IsNaN(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); else { _fNotNull = true; @@ -77,12 +77,12 @@ public static explicit operator float (SqlSingle x) public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value.ToString((IFormatProvider)null); + return IsNull ? SQLResource.NullString : _value.ToString((IFormatProvider)null); } public static SqlSingle Parse(string s) { - if (s == SQLResource.s_nullString) + if (s == SQLResource.NullString) return SqlSingle.Null; else return new SqlSingle(float.Parse(s, CultureInfo.InvariantCulture)); @@ -107,7 +107,7 @@ public static SqlSingle Parse(string s) float value = x._value + y._value; if (float.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } @@ -120,7 +120,7 @@ public static SqlSingle Parse(string s) float value = x._value - y._value; if (float.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } @@ -133,7 +133,7 @@ public static SqlSingle Parse(string s) float value = x._value * y._value; if (float.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } @@ -144,12 +144,12 @@ public static SqlSingle Parse(string s) return Null; if (y._value == (float)0.0) - throw new DivideByZeroException(SQLResource.s_divideByZeroMessage); + throw new DivideByZeroException(SQLResource.DivideByZeroMessage); float value = x._value / y._value; if (float.IsInfinity(value)) - throw new OverflowException(SQLResource.s_arithOverflowMessage); + throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLString.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLString.cs index 1dffe857374b..88f1789da0c7 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLString.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLString.cs @@ -305,7 +305,7 @@ public static explicit operator string (SqlString x) /// public override string ToString() { - return IsNull ? SQLResource.s_nullString : _value; + return IsNull ? SQLResource.NullString : _value; } public byte[] GetUnicodeBytes() @@ -346,7 +346,7 @@ internal int GetSQLCID() { return SqlString.Null; if (x._lcid != y._lcid || x._flag != y._flag) - throw new SqlTypeException(SQLResource.s_concatDiffCollationMessage); + throw new SqlTypeException(SQLResource.ConcatDiffCollationMessage); return new SqlString(x._lcid, x._flag, x._value + y._value, (x._cmpInfo == null) ? y._cmpInfo : x._cmpInfo); @@ -362,7 +362,7 @@ private static int StringCompare(SqlString x, SqlString y) "!x.IsNull && !y.IsNull", "Null condition should be handled by the caller of StringCompare method"); if (x._lcid != y._lcid || x._flag != y._flag) - throw new SqlTypeException(SQLResource.s_compareDiffCollationMessage); + throw new SqlTypeException(SQLResource.CompareDiffCollationMessage); x.SetCompareInfo(); y.SetCompareInfo(); diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SQLUtility.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SQLUtility.cs index 77fce60f8841..53237485bf89 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SQLUtility.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SQLUtility.cs @@ -63,7 +63,7 @@ private static SerializationInfo SqlTypeExceptionSerialization(SerializationInfo public sealed class SqlNullValueException : SqlTypeException { // Creates a new SqlNullValueException with its message string set to the common string. - public SqlNullValueException() : this(SQLResource.s_nullValueMessage, null) + public SqlNullValueException() : this(SQLResource.NullValueMessage, null) { } @@ -99,7 +99,7 @@ private static SerializationInfo SqlNullValueExceptionSerialization(Serializatio public sealed class SqlTruncateException : SqlTypeException { // Creates a new SqlTruncateException with its message string set to the empty string. - public SqlTruncateException() : this(SQLResource.s_truncationMessage, null) + public SqlTruncateException() : this(SQLResource.TruncationMessage, null) { } @@ -135,7 +135,7 @@ private static SerializationInfo SqlTruncateExceptionSerialization(Serialization public sealed class SqlNotFilledException : SqlTypeException { // Creates a new SqlNotFilledException with its message string set to the common string. - public SqlNotFilledException() : this(SQLResource.s_notFilledMessage, null) + public SqlNotFilledException() : this(SQLResource.NotFilledMessage, null) { } @@ -160,7 +160,7 @@ private SqlNotFilledException(SerializationInfo si, StreamingContext sc) : base( public sealed class SqlAlreadyFilledException : SqlTypeException { // Creates a new SqlNotFilledException with its message string set to the common string. - public SqlAlreadyFilledException() : this(SQLResource.s_alreadyFilledMessage, null) + public SqlAlreadyFilledException() : this(SQLResource.AlreadyFilledMessage, null) { } diff --git a/src/System.Data.Common/src/System/Data/SQLTypes/SqlXml.cs b/src/System.Data.Common/src/System/Data/SQLTypes/SqlXml.cs index 673b97c1114b..8a9b90508b47 100644 --- a/src/System.Data.Common/src/System/Data/SQLTypes/SqlXml.cs +++ b/src/System.Data.Common/src/System/Data/SQLTypes/SqlXml.cs @@ -198,7 +198,7 @@ private Stream CreateMemoryStreamFromXmlReader(XmlReader reader) XmlWriter ww = XmlWriter.Create(writerStream, writerSettings); if (reader.ReadState == ReadState.Closed) - throw new InvalidOperationException(SQLResource.s_closedXmlReaderMessage); + throw new InvalidOperationException(SQLResource.ClosedXmlReaderMessage); if (reader.ReadState == ReadState.Initial) reader.Read(); diff --git a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj index 8c2efdcd857a..9f2cbbe81de6 100644 --- a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj +++ b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj @@ -122,7 +122,9 @@ - + + System\Data\SQLTypes\SQLResource.cs + Common\System\Threading\Tasks\TaskToApm.cs From f681374bf4ab792b383ab5afca9255a7bac1199f Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Wed, 12 Apr 2017 23:36:41 -0700 Subject: [PATCH 009/336] Add PreferInbox=true to corefx assemblies This adds `[assembly:System.Reflection.AssemblyMetadata("PreferInbox", "True")]` to all corefx assemblies. Mono will use this to ignore the assembly if it's in the application directory and it has the same assembly in its framework. --- Tools-Override/Build.Common.targets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Tools-Override/Build.Common.targets b/Tools-Override/Build.Common.targets index 25da3b5c5508..3fcab14bf29d 100644 --- a/Tools-Override/Build.Common.targets +++ b/Tools-Override/Build.Common.targets @@ -32,6 +32,9 @@ True + + True + - + + + + diff --git a/src/System.Memory/dir.props b/src/System.Memory/dir.props index c149c4d67d6c..f507626379e5 100644 --- a/src/System.Memory/dir.props +++ b/src/System.Memory/dir.props @@ -4,5 +4,8 @@ 4.0.0.0 Open + + true + false From 0d66618b560a5f3bbbca9845dbae64ee64e1e6b7 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 13 Apr 2017 11:07:58 -0700 Subject: [PATCH 012/336] Revert "Delete Microsoft.NETCore.Targets" This reverts commit e1289e6c985bd0482c28f6e5d84470fc013707b2. --- .../Microsoft.NETCore.Targets.builds | 8 ++ .../Microsoft.NETCore.Targets.pkgproj | 19 ++++ pkg/Microsoft.NETCore.Targets/runtime.json | 92 +++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.builds create mode 100644 pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.pkgproj create mode 100644 pkg/Microsoft.NETCore.Targets/runtime.json diff --git a/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.builds b/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.builds new file mode 100644 index 000000000000..a280e2a6665c --- /dev/null +++ b/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.builds @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.pkgproj b/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.pkgproj new file mode 100644 index 000000000000..f8c9764de7d5 --- /dev/null +++ b/pkg/Microsoft.NETCore.Targets/Microsoft.NETCore.Targets.pkgproj @@ -0,0 +1,19 @@ + + + + + + 2.0.0 + true + + + + + + lib/netstandard1.0 + + + + + + diff --git a/pkg/Microsoft.NETCore.Targets/runtime.json b/pkg/Microsoft.NETCore.Targets/runtime.json new file mode 100644 index 000000000000..925514c3611f --- /dev/null +++ b/pkg/Microsoft.NETCore.Targets/runtime.json @@ -0,0 +1,92 @@ +{ + "supports": { + "uwp.10.0.app": { + "uap10.0": [ + "win10-x86", + "win10-x86-aot", + "win10-x64", + "win10-x64-aot", + "win10-arm", + "win10-arm-aot" + ] + }, + "net45.app": { + "net45": [ + "", + "win-x86", + "win-x64" + ] + }, + "net451.app": { + "net451": [ + "", + "win-x86", + "win-x64" + ] + }, + "net452.app": { + "net452": [ + "", + "win-x86", + "win-x64" + ] + }, + "net46.app": { + "net46": [ + "", + "win-x86", + "win-x64" + ] + }, + "net461.app": { + "net461": [ + "", + "win-x86", + "win-x64" + ] + }, + "net462.app": { + "net462": [ + "", + "win-x86", + "win-x64" + ] + }, + "netcoreapp1.0.app": { + "netcoreapp1.0": [ + "win7-x86", + "win7-x64", + "osx.10.11-x64", + "centos.7-x64", + "debian.8-x64", + "linuxmint.17-x64", + "opensuse.13.2-x64", + "rhel.7.2-x64", + "ubuntu.14.04-x64", + "ubuntu.16.04-x64" + ] + }, + "win8.app": { + "win8": "" + }, + "win81.app": { + "win81": "" + }, + "wp8.app": { + "wp8": "" + }, + "wp81.app": { + "wp81": "" + }, + "wpa81.app": { + "wpa81": "" + }, + "dnxcore50.app": { + "dnxcore50": [ + "win7-x86", + "win7-x64" + ] + } + } + } + From 9213b06755f3f0074bb54d5085e79f7a0caaa289 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 13 Apr 2017 11:16:34 -0700 Subject: [PATCH 013/336] Reference Microsoft.NETCore.Targets in NETCore.App Include the update to v1 lineup package, which now has no runtime package mappings. This will reduce the number of packages downloaded when mixing v1 and later packages as well as reduce our dependence on conflict resolution for dropping those v1 runtime packages. --- pkg/frameworkPackage.targets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/frameworkPackage.targets b/pkg/frameworkPackage.targets index 11d880d8bf59..a91948724608 100644 --- a/pkg/frameworkPackage.targets +++ b/pkg/frameworkPackage.targets @@ -43,6 +43,15 @@ $(PlatformPackageVersion) $(TargetFramework) + + + + 2.0.0 + $(TargetFramework) + From 7f601f5637bfbef8a9297b00a26139183df6fb41 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Thu, 13 Apr 2017 11:30:24 -0700 Subject: [PATCH 014/336] Only build netfx package on allconfigurations (#18337) * Only build netfx package on allconfigurations * PR Feedback --- .../NETStandard.Library.NETFramework.builds | 3 ++- src/publish.proj | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.builds b/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.builds index 65816c1d8b24..17bb6bfebc2e 100644 --- a/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.builds +++ b/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.builds @@ -2,7 +2,8 @@ - + + diff --git a/src/publish.proj b/src/publish.proj index b1908aa0d8e2..8bcf4c83d950 100644 --- a/src/publish.proj +++ b/src/publish.proj @@ -8,6 +8,10 @@ $(PackageOutputRoot)**\*.nupkg + + <_PackagesToPublish Include="$(PublishPattern)" /> + + @@ -16,5 +20,8 @@ - + + + + From 226f972465ee44264e6203d1b66c502a7ec8518e Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Thu, 13 Apr 2017 13:48:47 -0500 Subject: [PATCH 015/336] Fix IBC data package restore by moving it to Sync --- Tools-Override/codeOptimization.targets | 7 ++++--- buildpipeline/DotNet-CoreFx-Trusted-Windows.json | 2 +- buildpipeline/pipeline.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Tools-Override/codeOptimization.targets b/Tools-Override/codeOptimization.targets index 7ff597595798..254280d26361 100644 --- a/Tools-Override/codeOptimization.targets +++ b/Tools-Override/codeOptimization.targets @@ -13,7 +13,7 @@ @@ -44,7 +44,7 @@ @@ -81,7 +81,8 @@ - diff --git a/buildpipeline/DotNet-CoreFx-Trusted-Windows.json b/buildpipeline/DotNet-CoreFx-Trusted-Windows.json index c1c35a21ea6e..e4fa0749b350 100644 --- a/buildpipeline/DotNet-CoreFx-Trusted-Windows.json +++ b/buildpipeline/DotNet-CoreFx-Trusted-Windows.json @@ -105,7 +105,7 @@ }, "inputs": { "filename": "$(Build.SourcesDirectory)\\corefx\\sync.cmd", - "arguments": "$(PB_SyncArguments) $(PB_OptionalToolingSyncArguments)", + "arguments": "$(PB_SyncArguments) $(PB_OptionalToolingSyncArguments) $(PB_PipelineBuildMSBuildArguments)", "workingFolder": "corefx", "failOnStandardError": "false" } diff --git a/buildpipeline/pipeline.json b/buildpipeline/pipeline.json index 87eb58ce3c4c..f5a670f303ca 100644 --- a/buildpipeline/pipeline.json +++ b/buildpipeline/pipeline.json @@ -221,7 +221,7 @@ }, "BuildParameters": { "PB_ConfigurationGroup": "Release", - "PB_PipelineBuildMSBuildArguments": "/p:EnableProfileGuidedOptimization=false" + "PB_PipelineBuildMSBuildArguments": "/p:EnableProfileGuidedOptimization=true" }, "Definitions": [ { From f22c2c5c724bddb5d4db34a3eae50ec6dd1d3377 Mon Sep 17 00:00:00 2001 From: vitek-karas Date: Thu, 13 Apr 2017 13:31:04 -0700 Subject: [PATCH 016/336] Remove .rd.xml directive from System.Linq.Expression which requires full reflection for Microsoft.CSharp.RuntimeBinder.RuntimeBinderException. Since System.Linq.Expressions doesn't have Microsoft.CSharp in its closure, it should not have directives for types from it, since those directives might not be always resolvable. --- .../src/Resources/System.Linq.Expressions.rd.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml b/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml index 51e5037edd9d..157afeea1565 100644 --- a/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml +++ b/src/System.Linq.Expressions/src/Resources/System.Linq.Expressions.rd.xml @@ -2,7 +2,6 @@ - From 0ec38a5d61fed6ca61713b8ee43493212ca9f080 Mon Sep 17 00:00:00 2001 From: Tarun Pothulapati Date: Thu, 13 Apr 2017 13:54:37 -0700 Subject: [PATCH 017/336] Removed Dictionary.GetValueOrDefault From ref contract (#18115) * Removed Dictionary.GetValueOrDefault Api's From ref contract --- .../ref/System.Collections.cs | 2 - .../src/ApiCompatBaseline.uapaot.txt | 26 +++++- .../ApiCompatBaseline.netcoreapp.netfx461.txt | 87 +++++-------------- 3 files changed, 48 insertions(+), 67 deletions(-) diff --git a/src/System.Collections/ref/System.Collections.cs b/src/System.Collections/ref/System.Collections.cs index f7f38e2bd2a4..4b0599c1a43d 100644 --- a/src/System.Collections/ref/System.Collections.cs +++ b/src/System.Collections/ref/System.Collections.cs @@ -107,8 +107,6 @@ void System.Collections.IDictionary.Add(object key, object value) { } void System.Collections.IDictionary.Remove(object key) { } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } public bool TryGetValue(TKey key, out TValue value) { throw null; } - public TValue GetValueOrDefault(TKey key) { throw null; } - public TValue GetValueOrDefault(TKey key, TValue defaultValue) { throw null; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public partial struct Enumerator : System.Collections.Generic.IEnumerator>, System.Collections.IDictionaryEnumerator, System.Collections.IEnumerator, System.IDisposable { diff --git a/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt b/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt index c666d7c0c4f7..8d25411ef3a4 100644 --- a/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt +++ b/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt @@ -1,20 +1,44 @@ Compat issues with assembly System.Runtime: +TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Decimal.FromOACurrency(System.Int64)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Decimal.ToOACurrency(System.Decimal)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Exception.add_SerializeObjectState(System.EventHandler)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Exception.remove_SerializeObjectState(System.EventHandler)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Exception.TargetSite.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.GC.GetAllocatedBytesForCurrentThread()' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.IntPtr' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. +TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.EndsWith(System.Char)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.StartsWith(System.Char)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.UIntPtr' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.SByte)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt16)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt64)' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Globalization.CompareInfo' does not implement interface 'System.Runtime.Serialization.IDeserializationCallback' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. +MembersMustExist : Member 'System.IO.Stream.CreateWaitHandle()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Stream.ObjectInvariant()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.IO.Stream.Synchronized(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.FieldInfo.GetValueDirect(System.TypedReference)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Reflection.FieldInfo.SetValueDirect(System.TypedReference, System.Object)' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Decoder.GetCharCount(System.Byte*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Decoder.GetChars(System.Byte*, System.Int32, System.Char*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Encoder.GetBytes(System.Char*, System.Int32, System.Byte*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Encoding.Default.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Encoding.IsAlwaysNormalized()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Text.Encoding.IsAlwaysNormalized(System.Text.NormalizationForm)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. -Total Issues: 18 +TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. +Total Issues: 42 diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index fca87f6432c1..ede5a2e15e4e 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -1,10 +1,9 @@ -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. +DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: MembersMustExist : Member 'Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.DynData' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.Win32.RegistryHive Microsoft.Win32.RegistryHive.DynData' does not exist in the implementation but it does exist in the contract. @@ -1024,6 +1023,7 @@ TypesMustExist : Type 'System.Diagnostics.CounterCreationData' does not exist in TypesMustExist : Type 'System.Diagnostics.CounterCreationDataCollection' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.CounterSampleCalculator' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Debug.Listeners.get()' does not exist in the implementation but it does exist in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.DelimitedListTraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. TypesMustExist : Type 'System.Diagnostics.DiagnosticsConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventHandler' does not exist in the implementation but it does exist in the contract. @@ -1045,6 +1045,10 @@ TypesMustExist : Type 'System.Diagnostics.InstanceDataCollection' does not exist TypesMustExist : Type 'System.Diagnostics.InstanceDataCollectionCollection' does not exist in the implementation but it does exist in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. TypesMustExist : Type 'System.Diagnostics.OverflowAction' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.PerformanceCounter' does not inherit from base type 'System.ComponentModel.Component' in the implementation but it does in the contract. +MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.CloseSharedResources()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.Decrement()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.Dispose(System.Boolean)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategory' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategoryType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterManager' does not exist in the implementation but it does exist in the contract. @@ -1053,8 +1057,11 @@ TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAccess' do TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntry' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.Switch.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchLevelAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. +CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceSource.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. TypesMustExist : Type 'System.Diagnostics.XmlWriterTraceListener' does not exist in the implementation but it does exist in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.IO.InternalBufferOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. @@ -1380,8 +1387,11 @@ TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformation TypesMustExist : Type 'System.Security.Cryptography.MD5Cng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA1Cng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA256Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512Cng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SignatureVerificationResult' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.StrongNameSignatureInformation' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.AuthenticodeSignatureInformation' does not exist in the implementation but it does exist in the contract. @@ -1486,6 +1496,7 @@ TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCertificateStore TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCngProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCspProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlCommand' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand..ctor(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.SqlClient.SqlCommandColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. @@ -1495,6 +1506,7 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(S MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Clone()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. @@ -1506,6 +1518,7 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnli MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ResetCommandTimeout()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandBuilder' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlCommandColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlConnection' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection..ctor(System.String, System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.set(System.String)' does not exist in the implementation but it does exist in the contract. @@ -1544,6 +1557,7 @@ TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationEventArgs' does not TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationInfo' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationSource' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationType' does not exist in the implementation but it does exist in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlParameter' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Boolean, System.Object, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.get()' does not exist in the implementation but it does exist in the contract. @@ -1593,10 +1607,6 @@ TypesMustExist : Type 'System.Drawing.BufferedGraphics' does not exist in the im TypesMustExist : Type 'System.Drawing.BufferedGraphicsContext' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.BufferedGraphicsManager' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CharacterRange' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Drawing.Color.IsKnownColor.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Drawing.Color.IsSystemColor.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Drawing.Color.ToKnownColor()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ColorTranslator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ContentAlignment' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.CopyPixelOperation' does not exist in the implementation but it does exist in the contract. @@ -1613,7 +1623,6 @@ TypesMustExist : Type 'System.Drawing.Image' does not exist in the implementatio TypesMustExist : Type 'System.Drawing.ImageAnimator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageConverter' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.ImageFormatConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.KnownColor' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pen' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Pens' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Region' does not exist in the implementation but it does exist in the contract. @@ -1626,7 +1635,7 @@ TypesMustExist : Type 'System.Drawing.StringFormatFlags' does not exist in the i TypesMustExist : Type 'System.Drawing.StringTrimming' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.StringUnit' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemBrushes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SystemColors' does not exist in the implementation but it does exist in the contract. +CannotMakeTypeAbstract : Type 'System.Drawing.SystemColors' is abstract in the implementation but is not abstract in the contract. TypesMustExist : Type 'System.Drawing.SystemFonts' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemIcons' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.SystemPens' does not exist in the implementation but it does exist in the contract. @@ -1865,56 +1874,6 @@ MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSer MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomReaderInitializer' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.IXmlMtomWriterInitializer' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ServiceModel.Web: -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.WebHttpBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.WebHttpSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.WebHttpSecurityMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Activation.WebScriptServiceHostFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Activation.WebServiceHostFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.JavascriptCallbackResponseMessageProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.StreamBodyWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.WebBodyFormatMessageProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.WebContentFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.WebContentTypeMapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Channels.WebMessageEncodingBindingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpBindingCollectionElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpBindingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpEndpointCollectionElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpEndpointElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebHttpSecurityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebMessageEncodingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebScriptEnablingElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebScriptEndpointCollectionElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Configuration.WebScriptEndpointElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.JsonFaultDetail' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.WebHttpBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.WebHttpEndpoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.WebScriptEnablingBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.WebScriptEndpoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Description.WebServiceEndpoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Dispatcher.JsonQueryStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Dispatcher.QueryStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Dispatcher.WebHttpDispatchOperationSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.AspNetCacheProfileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.IncomingWebRequestContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.IncomingWebResponseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.JavascriptCallbackBehaviorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.OutgoingWebRequestContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.OutgoingWebResponseContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebChannelFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebFaultException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebFaultException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebGetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebInvokeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebMessageBodyStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebMessageFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebOperationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ServiceModel.Web.WebServiceHost' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Transactions: TypesMustExist : Type 'System.Transactions.DistributedTransactionPermission' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Transactions.DistributedTransactionPermissionAttribute' does not exist in the implementation but it does exist in the contract. @@ -3390,4 +3349,4 @@ MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerial MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -Total Issues: 3371 +Total Issues: 3332 From 101ebfeeaab6ee4cb2c54f276091def63dde81f5 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Thu, 13 Apr 2017 14:33:31 -0700 Subject: [PATCH 018/336] Update Docker images for crossbuilds --- buildpipeline/pipeline.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/buildpipeline/pipeline.json b/buildpipeline/pipeline.json index 87eb58ce3c4c..71ad846074ee 100644 --- a/buildpipeline/pipeline.json +++ b/buildpipeline/pipeline.json @@ -134,7 +134,7 @@ { "Name": "DotNet-CoreFx-Trusted-Linux-Crossbuild", "Parameters": { - "PB_DockerTag": "ubuntu1404_cross_prereqs_v2", + "PB_DockerTag": "ubuntu-14.04-cross-0cd4667-20172211042239", "PB_Architecture": "arm" }, "ReportingParameters": { @@ -147,7 +147,7 @@ { "Name": "DotNet-CoreFx-Trusted-Linux-Crossbuild", "Parameters": { - "PB_DockerTag": "ubuntu1404_cross_prereqs_v2", + "PB_DockerTag": "ubuntu-14.04-cross-0cd4667-20172211042239", "PB_Architecture": "arm", "PB_BuildArguments": "-portable", "PB_SyncArguments": "-p -portable -- /p:ArchGroup=arm" @@ -162,7 +162,7 @@ { "Name": "DotNet-CoreFx-Trusted-Linux-Crossbuild", "Parameters": { - "PB_DockerTag": "ubuntu1604_cross_prereqs_v2", + "PB_DockerTag": "ubuntu-16.04-cross-ef0ac75-20175511035548", "PB_Architecture": "arm" }, "ReportingParameters": { @@ -631,7 +631,7 @@ { "Name": "DotNet-CoreFx-Trusted-Linux-Crossbuild", "Parameters": { - "PB_DockerTag": "ubuntu1404_cross_prereqs_v2", + "PB_DockerTag": "ubuntu-14.04-cross-0cd4667-20172211042239", "PB_Architecture": "arm" }, "ReportingParameters": { @@ -644,7 +644,7 @@ { "Name": "DotNet-CoreFx-Trusted-Linux-Crossbuild", "Parameters": { - "PB_DockerTag": "ubuntu1604_cross_prereqs_v2", + "PB_DockerTag": "ubuntu-16.04-cross-ef0ac75-20175511035548", "PB_Architecture": "arm" }, "ReportingParameters": { From 785dc8114ab5a2de245aaf2a638f0d5c03e3c5ca Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Thu, 13 Apr 2017 15:44:08 -0700 Subject: [PATCH 019/336] Update CoreClr, CoreFx, Standard to preview1-25213-04, preview1-25213-06, preview1-25213-01, respectively --- dependencies.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.props b/dependencies.props index f5ce34114633..99d0fee2eb55 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,24 +9,24 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - e92f146e291cdddd764887db41dcdf95263300a8 - adb21e771c22d9d771cbd18f6df2798c66217a86 + 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 + 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 adb21e771c22d9d771cbd18f6df2798c66217a86 adb21e771c22d9d771cbd18f6df2798c66217a86 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 528245d3da66e5a75b8be1ec81bf61f420051f68 + 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 - preview1-25210-01 - preview1-25213-02 + preview1-25213-06 + preview1-25213-04 beta-25016-01 beta-25213-00 beta-25213-00 1.0.0-beta-25213-00 - 2.0.0-preview1-25212-02 + 2.0.0-preview1-25213-01 NETStandard.Library 4.4.0-beta-25007-02 From 09de5a2ade5d60ad7ec71ef4197d5f634ae25bc7 Mon Sep 17 00:00:00 2001 From: Ahson Ahmed Khan Date: Thu, 13 Apr 2017 16:09:42 -0700 Subject: [PATCH 020/336] Re-enable string AsSpan tests. (#18348) --- src/System.Memory/tests/ReadOnlySpan/AsSpan.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/System.Memory/tests/ReadOnlySpan/AsSpan.cs b/src/System.Memory/tests/ReadOnlySpan/AsSpan.cs index 65c28ba27733..ebb23e782050 100644 --- a/src/System.Memory/tests/ReadOnlySpan/AsSpan.cs +++ b/src/System.Memory/tests/ReadOnlySpan/AsSpan.cs @@ -9,7 +9,7 @@ namespace System.SpanTests { public static partial class ReadOnlySpanTests { - [Fact(Skip = "AsSpan not in coreclr yet, PR #10544")] + [Fact] public static void StringAsSpanNullary() { string s = "Hello"; @@ -18,7 +18,7 @@ public static void StringAsSpanNullary() span.Validate(expected); } - [Fact(Skip = "AsSpan not in coreclr yet, PR #10544")] + [Fact] public static void StringAsSpanEmptyString() { string s = ""; @@ -27,7 +27,7 @@ public static void StringAsSpanEmptyString() span.Validate(expected); } - [Fact(Skip= "AsSpan not in coreclr yet, PR #10544")] + [Fact] public static void StringAsSpanNullChecked() { string s = null; From 383fd295e65bf51265cca5d75dc31cc3a515d10f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 14 Apr 2017 01:41:50 +0200 Subject: [PATCH 021/336] Refining ApiCompat results by adding a baseline file (ignore file) (#18339) * ApiCompat ignore file added * merge --- src/shims/ApiCompat.proj | 2 + .../ApiCompatBaseline.netcoreapp.netfx461.txt | 3268 +---------------- 2 files changed, 10 insertions(+), 3260 deletions(-) diff --git a/src/shims/ApiCompat.proj b/src/shims/ApiCompat.proj index 194bad2a1044..67f1d46c1b0f 100644 --- a/src/shims/ApiCompat.proj +++ b/src/shims/ApiCompat.proj @@ -5,6 +5,7 @@ $(IntermediateOutputPath)/apicompat.rsp $(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netfx461.txt + $(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netfx461.ignore.txt $(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard20.txt $(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard20Only.txt $(RefPath),$(GenFacadesOutputPath) @@ -23,6 +24,7 @@ > $(ApiCompatArgs) -implDirs:"$(ApiCompatImplementationDirs)" + $(ApiCompatArgs) -baseline:"$(ApiCompatBaselineIgnoreFile)" 0 $(ToolHostCmd) "$(ToolsDir)ApiCompat.exe" diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index ede5a2e15e4e..876979f8391b 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -1,887 +1,16 @@ -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. -DEFAULT_APPNAME Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)' referenced by the implementation assembly 'Microsoft.Cci.DummyModule'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. +ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: -MembersMustExist : Member 'Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.DynData' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'Microsoft.Win32.RegistryHive Microsoft.Win32.RegistryHive.DynData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System._AppDomain' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AccessViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.ActivationContext' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Activator' is abstract in the implementation but is not abstract in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Activator' does not implement interface 'System.Runtime.InteropServices._Activator' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.ActivationContext, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.AppDomain, System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Activator.GetObject(System.Type, System.String, System.Object)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AggregateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AppDomain' does not implement interface 'System._AppDomain' in the implementation but it does in the contract. -MembersMustExist : Member 'System.AppDomain.ActivationContext.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ApplicationIdentity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ApplicationTrust.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateComInstanceFrom(System.String, System.String, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup, System.Security.PermissionSet, System.Security.Policy.StrongName[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean, System.AppDomainInitializer, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstance(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFrom(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.CreateInstanceFromAndUnwrap(System.String, System.String, System.Object[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Collections.Generic.IEnumerable, System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DoCallBack(System.CrossAppDomainDelegate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.DomainManager.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[], System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.Reflection.AssemblyName, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.ExecuteAssemblyByName(System.String, System.Security.Policy.Evidence, System.String[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetAppDomainPolicy(System.Security.Policy.PolicyLevel)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetData(System.String, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppDomain.SetupInformation.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainManagerInitializationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.AppDomainSetup' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AppDomainUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ApplicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentNullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArgumentOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArithmeticException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Attribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.AttributeUsageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.BadImageFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CannotUnloadAppDomainException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CLSCompliantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ContextMarshalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ContextStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.CrossAppDomainDelegate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DataMisalignedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DivideByZeroException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DllNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.DuplicateWaitObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.EntryPointNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ExecutionEngineException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FieldAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.FormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.IAppDomainSetup' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IndexOutOfRangeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientExecutionStackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InsufficientMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidCastException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidProgramException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.LoaderOptimizationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.MarshalByRefObject.CreateObjRef(System.Type)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MemberAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MethodAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingFieldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingMemberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MissingMethodException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MTAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.MulticastNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NonSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotFiniteNumberException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotImplementedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.NullReferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ObjectDisposedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ObsoleteAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OperationCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OutOfMemoryException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.OverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ParamArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.PlatformNotSupportedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.RankException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.SerializableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.StackOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.STAThreadAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.SystemException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ThreadStaticAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Type' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeInitializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TypeUnloadedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.UnauthorizedAccessException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Collections.Generic.KeyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Configuration.Assemblies.AssemblyHash' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Deployment.Internal.InternalActivationContextHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Deployment.Internal.InternalApplicationIdentityHelper' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.ConditionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotMakeTypeAbstract : Type 'System.Diagnostics.Debugger' is abstract in the implementation but is not abstract in the contract. -MembersMustExist : Member 'System.Diagnostics.Debugger..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerDisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerHiddenAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerNonUserCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepperBoundaryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerStepThroughAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerTypeProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.DebuggerVisualizerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Diagnostics.StackTrace..ctor(System.Threading.Thread, System.Boolean)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.SuppressMessageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractAbbreviatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractArgumentValidatorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractClassForAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractInvariantMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractOptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.ContractVerificationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Contracts.PureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Diagnostics.Contracts.Internal.ContractHelper' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventDataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.EventSourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.Tracing.NonEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Globalization.CultureNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.Directory.CreateDirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Directory.SetAccessControl(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.Create(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.CreateSubdirectory(System.String, System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.DirectoryInfo.SetAccessControl(System.Security.AccessControl.DirectorySecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.DirectoryNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.DriveNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.EndOfStreamException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.File.Create(System.String, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.GetAccessControl(System.String, System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.File.SetAccessControl(System.String, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.GetAccessControl(System.Security.AccessControl.AccessControlSections)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileInfo.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.Security.AccessControl.FileSystemRights, System.IO.FileShare, System.Int32, System.IO.FileOptions, System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.FileStream.SetAccessControl(System.Security.AccessControl.FileSecurity)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IOException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.PathTooLongException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorage.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetPermission(System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageSecurityState' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AmbiguousMatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Assembly' does not implement interface 'System.Runtime.InteropServices._Assembly' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Byte[], System.Byte[], System.Security.SecurityContextSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.Load(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFile(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadFrom(System.String, System.Security.Policy.Evidence, System.Byte[], System.Configuration.Assemblies.AssemblyHashAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.LoadWithPartialName(System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Assembly.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyAlgorithmIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCompanyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyConfigurationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCopyrightAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyCultureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDefaultAliasAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDelaySignAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFileVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyFlagsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyInformationalVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyFileAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyKeyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyMetadataAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyName' does not implement interface 'System.Runtime.InteropServices._AssemblyName' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyProductAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblySignatureKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTitleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyTrademarkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.AssemblyVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ConstructorInfo' does not implement interface 'System.Runtime.InteropServices._ConstructorInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.CustomAttributeFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.DefaultMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.EventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.FieldInfo' does not implement interface 'System.Runtime.InteropServices._FieldInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.InvalidFilterCriteriaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MemberInfo' does not implement interface 'System.Runtime.InteropServices._MemberInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodBase' does not implement interface 'System.Runtime.InteropServices._MethodBase' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.MethodInfo' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Module' does not implement interface 'System.Runtime.InteropServices._Module' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Module.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscateAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ObfuscationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ParameterInfo' does not implement interface 'System.Runtime.InteropServices._ParameterInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.PropertyInfo' does not implement interface 'System.Runtime.InteropServices._PropertyInfo' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.ReflectionTypeLoadException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetInvocationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TargetParameterCountException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeDelegator' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.TypeInfo' does not implement interface 'System.Runtime.InteropServices._Type' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.AssemblyBuilder' does not implement interface 'System.Runtime.InteropServices._AssemblyBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String, System.String, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Evidence.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.PermissionSet.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.Save(System.String, System.Reflection.PortableExecutableKinds, System.Reflection.ImageFileMachine)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilder.SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.ReflectionOnly' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.AssemblyBuilderAccess System.Reflection.Emit.AssemblyBuilderAccess.Save' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ConstructorBuilder' does not implement interface 'System.Runtime.InteropServices._ConstructorBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.ReturnType.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ConstructorBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.CustomAttributeBuilder' does not implement interface 'System.Runtime.InteropServices._CustomAttributeBuilder' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Reflection.Emit.DynamicILInfo' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.DynamicMethod' does not implement interface 'System.Runtime.InteropServices._MethodInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.DynamicMethod.GetDynamicILInfo()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EnumBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.CreateType()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EnumBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.EventBuilder' does not implement interface 'System.Runtime.InteropServices._EventBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.EventBuilder.GetEventToken()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.EventToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ExceptionHandler' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.FieldBuilder' does not implement interface 'System.Runtime.InteropServices._FieldBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.FieldBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.FieldToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.GenericTypeParameterBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ILGenerator' does not implement interface 'System.Runtime.InteropServices._ILGenerator' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ILGenerator.MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.LocalBuilder' does not implement interface 'System.Runtime.InteropServices._LocalBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.MethodBuilder' does not implement interface 'System.Runtime.InteropServices._MethodBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.CreateMethodBody(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetModule()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetMethodBody(System.Byte[], System.Int32, System.Byte[], System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.MethodBuilder.Signature.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.MethodRental' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.MethodToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ModuleBuilder' does not implement interface 'System.Runtime.InteropServices._ModuleBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineDocument(System.String, System.Guid, System.Guid, System.Guid)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineManifestResource(System.String, System.IO.Stream, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.DefineUnmanagedResource(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo, System.Collections.Generic.IEnumerable)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Byte[], System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSignerCertificate()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetSymWriter()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.IsTransient()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetSymCustomAttribute(System.String, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ModuleBuilder.SetUserEntryPoint(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.ParameterBuilder' does not implement interface 'System.Runtime.InteropServices._ParameterBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.GetToken()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.ParameterBuilder.SetMarshal(System.Reflection.Emit.UnmanagedMarshal)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.ParameterToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PEFileKinds' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.PropertyBuilder' does not implement interface 'System.Runtime.InteropServices._PropertyBuilder' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.PropertyBuilder.PropertyToken.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.PropertyToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.SignatureHelper' does not implement interface 'System.Runtime.InteropServices._SignatureHelper' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Runtime.InteropServices.CallingConvention, System.Type)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.SignatureToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.StringToken' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Reflection.Emit.TypeBuilder' does not inherit from base type 'System.Reflection.TypeInfo' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.IsAssignableFrom(System.Reflection.TypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.TypeToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.Emit.UnmanagedMarshal' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingManifestResourceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.MissingSatelliteAssemblyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.NeutralResourcesLanguageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceManager.ResourceSets' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.String System.Resources.ResourceManager.BaseNameField' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Collections.Hashtable System.Resources.ResourceSet.Table' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Resources.IResourceReader System.Resources.ResourceSet.Reader' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Resources.SatelliteContractVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.AssemblyTargetedPatchBandAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.ProfileOptimization' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.TargetedPatchingOptOutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AccessedThroughPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerFilePathAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerLineNumberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilationRelaxationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.CustomConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DateTimeConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DecimalConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DefaultDependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DependencyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DisablePrivateReflectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DiscardableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedAddressValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.FixedBufferAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.HasCopySemanticsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IDispatchConstantAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IndexerNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.InternalsVisibleToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IteratorStateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.IUnknownConstantAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.MethodImplAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ReferenceAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeCompatibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.RuntimeWrappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ScopelessEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SpecialNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StateMachineAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.StringFreezingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.SuppressIldasmAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedFromAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.TypeForwardedToAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.UnsafeValueTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ConstrainedExecution.ReliabilityContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.DesignerServices.WindowsRuntimeDesignerContext' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.Hosting.ActivationArguments' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Hosting.ApplicationActivator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._AssemblyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ConstructorBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._CustomAttributeBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EnumBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EventBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._FieldBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ILGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._LocalBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodRental' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ModuleBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ParameterBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._PropertyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._SignatureHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._TypeBuilder' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.AssemblyRegistrationFlags' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.AutomationProxyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.BestFitMappingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BIND_OPTS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.BINDPTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CALLCONV' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ClassInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.CoClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAliasNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComCompatibleVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComConversionLossAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComDefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComEventInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.COMException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComRegisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComUnregisterFunctionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.CONNECTDATA' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultCharSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DESCKIND' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DispIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.DISPPARAMS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DllImportAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ELEMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.EXCEPINFO' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExporterEventKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ExtensibleClassFactory' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ExternalException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.FieldOffsetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FILETIME' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FUNCDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FUNCFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.FUNCKIND' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.GuidAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IDispatchImplType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IDLDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IDLFLAG' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IMPLTYPEFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ImportedFromTypeLibAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ImporterEventKind' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InterfaceTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidComObjectException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.InvalidOleVariantTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.INVOKEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.IRegistrationServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNameProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibExporterNotifySink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ITypeLibImporterNotifySink' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.LCIDConversionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.LIBFLAGS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetActiveObject(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComInterfaceForObjectInContext(System.Object, System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetComSlotForMethodInfo(System.Reflection.MemberInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetEndComSlot(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetExceptionPointers()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIDispatchForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetITypeInfoForType(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetIUnknownForObjectInContext(System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetManagedThunkForUnmanagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetMethodInfoForComSlot(System.Type, System.Int32, System.Runtime.InteropServices.ComMemberType)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetThreadFromFiberCookie(System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeForITypeInfo(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.ComTypes.ITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetTypeLibVersionForAssembly(System.Reflection.Assembly, System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.GetUnmanagedThunkForManagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.IsTypeVisibleFromCom(System.Type)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.NumParamBytes(System.Reflection.MethodInfo)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.Marshal.ReleaseThreadCache()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.MarshalDirectiveException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.ObjectCreationDelegate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OptionalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.OutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PARAMDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.PARAMFLAG' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PreserveSigAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ProgIdAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationClassContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationConnectionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.RegistrationServices' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is abstract in the implementation but is not abstract in the contract. -CannotSealType : Type 'System.Runtime.InteropServices.RuntimeEnvironment' is sealed in the implementation but not sealed in the contract. -MembersMustExist : Member 'System.Runtime.InteropServices.RuntimeEnvironment..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayRankMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.SEHException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.STATSTG' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.StructLayoutAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.SYSKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TYPEATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TYPEDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TYPEFLAGS' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TYPEKIND' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TYPELIBATTR' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibExporterFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibFuncAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibFuncFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibImportClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibImporterFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibTypeFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibVarAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibVarFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.TypeLibVersionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIBindCtx' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIConnectionPointContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIEnumConnectionPoints' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIEnumConnections' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIEnumMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIEnumString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIEnumVARIANT' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIMoniker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIPersistFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIRunningObjectTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMIStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeComp' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.UCOMITypeLib' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VARDESC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.VARFLAGS' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.Expando.IExpando' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.DefaultInterfaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.DesignerNamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.InterfaceImplementedInVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.NamespaceResolveEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMetadata' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.WindowsRuntime.WriteOnlyArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.ActivatedClientTypeEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.ActivatedServiceTypeEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.CustomErrorsModes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.IChannelInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.IEnvoyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.InternalRemotingServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.IObjectHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.IRemotingTypeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.ObjectHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.ObjRef' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.RemotingConfiguration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.RemotingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.RemotingServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.RemotingTimeoutException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.ServerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.SoapServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.TypeEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.WellKnownClientTypeEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.WellKnownObjectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.WellKnownServiceTypeEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Activation.ActivatorLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Activation.IActivator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Activation.IConstructionCallMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Activation.IConstructionReturnMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Activation.UrlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.BaseChannelSinkWithProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.BaseChannelWithProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ChannelDataStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ChannelServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ClientChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannelDataStore' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannelReceiver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannelReceiverHook' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannelSender' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IChannelSinkBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientChannelSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientChannelSinkProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientFormatterSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientFormatterSinkProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ISecurableChannel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IServerChannelSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IServerChannelSinkProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IServerChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IServerFormatterSinkProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ITransportHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ServerChannelSinkStack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.ServerProcessing' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.SinkProviderData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Channels.TransportHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.Context' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.ContextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.ContextProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.CrossContextDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContextProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContextPropertyActivator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContributeClientContextSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContributeDynamicSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContributeEnvoySink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContributeObjectSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IContributeServerContextSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IDynamicMessageSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.IDynamicProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Contexts.SynchronizationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Lifetime.ClientSponsor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Lifetime.ILease' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Lifetime.ISponsor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Lifetime.LeaseState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Lifetime.LifetimeServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.AsyncResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.CallContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.ConstructionCall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.ConstructionResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.Header' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.HeaderHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.ILogicalThreadAffinative' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMessageCtrl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMessageSink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMethodCallMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMethodMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IMethodReturnMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.InternalMessageWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.IRemotingFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.LogicalCallContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.MessageSurrogateFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.MethodCall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.MethodCallMessageWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.MethodResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.MethodReturnMessageWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.OneWayAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.RemotingSurrogateSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Messaging.ReturnMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapFieldAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapParameterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.SoapTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.XmlFieldOrderOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.ISoapXsd' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapAnyUri' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDay' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDuration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntities' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapId' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdref' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdrefs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapLanguage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonth' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonthDay' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNcName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNegativeInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtoken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtokens' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonNegativeInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonPositiveInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNormalizedString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNotation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapPositiveInteger' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapQName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapTime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYear' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYearMonth' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Proxies.ProxyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Proxies.RealProxy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Services.EnterpriseServicesHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Services.ITrackingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Remoting.Services.TrackingServices' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnDeserializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OnSerializingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.OptionalFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.SerializationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalRM' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.InternalST' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ISoapMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.ServerFault' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapFault' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Formatters.SoapMessage' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter' does not implement interface 'System.Runtime.Remoting.Messaging.IRemotingFormatter' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ComponentGuaranteesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceConsumptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.ResourceExposureAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Versioning.TargetFrameworkAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.AllowPartiallyTrustedCallersAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.HostProtectionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.ReadOnlyPermissionSet' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Object, System.Object, System.Reflection.MethodInfo, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Reflection.AssemblyName, System.Security.PermissionSet, System.Security.PermissionSet, System.Reflection.MethodInfo, System.Security.Permissions.SecurityAction, System.Object, System.Security.IPermission, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Action.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Action.set(System.Security.Permissions.SecurityAction)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.set(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Zone.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityRulesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecuritySafeCriticalAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTransparentAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SecurityTreatAsSafeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.SuppressUnmanagedCodeSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.UnverifiableCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.VerificationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.XmlSyntaxException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CryptoKeyRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.CryptoKeySecurity' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.AccessControl.PrivilegeNotHeldException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoAPITransform' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptographicUnexpectedOperationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspKeyContainerInfo.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMACRIPEMD160' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MACTripleDES' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RijndaelManagedTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RIPEMD160Managed' does not exist in the implementation but it does exist in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA1Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA1Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA256Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA256Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA384Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA384Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotSealType : Type 'System.Security.Cryptography.SHA512Managed' is sealed in the implementation but not sealed in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashCore(System.Byte[], System.Int32, System.Int32)' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.HashFinal()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Security.Cryptography.SHA512Managed.Initialize()' is non-virtual in the implementation but is virtual in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.CodeAccessSecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.EnvironmentPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileDialogPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.FileIOPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.GacIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.HostProtectionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStorageFilePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.IsolatedStoragePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.KeyContainerPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PermissionSetAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PrincipalPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.PublisherIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ReflectionPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.RegistryPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SecurityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.SiteIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StrongNameIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UIPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.UrlIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.ZoneIdentityPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.ApplicationSecurityManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Policy.IApplicationTrustManager' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Policy.PolicyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Principal.IdentityNotMappedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsAccountType' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.Security.Principal.WindowsIdentity)' does not exist in the implementation but it does exist in the contract. @@ -890,613 +19,26 @@ MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.DeviceClaim MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.Impersonate(System.IntPtr)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity.UserClaims.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.WindowsImpersonationContext' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.DeviceClaims.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsPrincipal.UserClaims.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.DecoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.EncoderFallbackException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.AbandonedMutexException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle..ctor(System.Boolean, System.Threading.EventResetMode, System.String, System.Boolean, System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.OpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.SetAccessControl(System.Security.AccessControl.EventWaitHandleSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.EventWaitHandle.TryOpenExisting(System.String, System.Security.AccessControl.EventWaitHandleRights, System.Threading.EventWaitHandle)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Mutex..ctor(System.Boolean, System.String, System.Boolean, System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.OpenExisting(System.String, System.Security.AccessControl.MutexRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.SetAccessControl(System.Security.AccessControl.MutexSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Mutex.TryOpenExisting(System.String, System.Security.AccessControl.MutexRights, System.Threading.Mutex)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SynchronizationLockException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Thread' does not implement interface 'System.Runtime.InteropServices._Thread' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Thread.CurrentContext.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadAbortException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadInterruptedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStartException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.ThreadStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.WaitHandleCannotBeOpenedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskCanceledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.Tasks.TaskSchedulerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. Compat issues with assembly System: -TypesMustExist : Type 'Microsoft.Win32.IntranetZoneCredentialPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.PowerModeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.PowerModes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionEndedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionEndedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionEndingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionEndingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionEndReasons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionSwitchEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionSwitchEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SessionSwitchReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SystemEvents' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.TimerElapsedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.TimerElapsedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.UserPreferenceCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.UserPreferenceChangingEventHandler' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.UriFormatException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.CodeDom.Compiler.GeneratedCodeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AmbientValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.ComponentModel.AsyncCompletedEventArgs..ctor()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.AttributeProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.BrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.CategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ComplexBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectFieldAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataObjectMethodAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultBindingPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DefaultValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerCategoryAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DesignTimeVisibleAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DisplayNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.EditorBrowsableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ImmutableObjectAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InheritanceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InitializationEventAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InstallerTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.InvalidEnumArgumentException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LicenseProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ListBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LocalizableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.LookupBindingPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.MergablePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PasswordPropertyTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.PropertyTabAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ProvidePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ReadOnlyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RecommendedAsConfigurableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.RunInstallerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.SettingsBindableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.ToolboxItemFilterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeConverterAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.WarningException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Win32Exception' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.CheckoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.HelpKeywordAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DefaultSerializationProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.DesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ApplicationScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.ConfigurationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.DefaultSettingValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.NoSettingsVersionUpgradeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsGroupNameAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsManageabilityAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyIsReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsPropertyWrongTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SettingsSerializeAsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.SpecialSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Configuration.UserScopedSettingAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Diagnostics.ConsoleTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CounterCreationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CounterCreationDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.CounterSampleCalculator' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Debug.Listeners.get()' does not exist in the implementation but it does exist in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.DelimitedListTraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -TypesMustExist : Type 'System.Diagnostics.DiagnosticsConfigurationHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EntryWrittenEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventInstance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogEntryType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventLogTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventSourceCreationData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ICollectData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.InstanceData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.InstanceDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.InstanceDataCollectionCollection' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.MonitoringDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Diagnostics.OverflowAction' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.PerformanceCounter' does not inherit from base type 'System.ComponentModel.Component' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.CloseSharedResources()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.Decrement()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.PerformanceCounter.Dispose(System.Boolean)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterCategoryType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceCounterPermissionEntryCollection' does not exist in the implementation but it does exist in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.Switch.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.SwitchLevelAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceListener.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -CannotMakeMoreVisible : Visibility of member 'System.Diagnostics.TraceSource.GetSupportedAttributes()' is 'Family' in the implementation but 'FamilyOrAssembly' in the contract. -TypesMustExist : Type 'System.Diagnostics.XmlWriterTraceListener' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.InternalBufferOverflowException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.InvalidDataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.IO.IODescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Media.SoundPlayer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Media.SystemSound' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Media.SystemSounds' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Net.DnsPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.DnsPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.EndpointPermission' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.HttpListenerException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotMakeTypeAbstract : Type 'System.Net.HttpVersion' is abstract in the implementation but is not abstract in the contract. -CannotSealType : Type 'System.Net.HttpVersion' is sealed in the implementation but not sealed in the contract. -MembersMustExist : Member 'System.Net.HttpVersion..ctor()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.ICertificatePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkAccess' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.ServicePointManager.CertificatePolicy.set(System.Net.ICertificatePolicy)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.SocketPermissionAttribute' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.TransportContext.GetTlsTokenBindings()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.TransportType' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Net.WebPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebPermissionAttribute' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.AuthenticationModuleElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.AuthenticationModulesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.BypassElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.BypassElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ConnectionManagementElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ConnectionManagementElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ConnectionManagementSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.DefaultProxySection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.FtpCachePolicyElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.HttpCachePolicyElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.HttpListenerElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.HttpListenerTimeoutsElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.HttpWebRequestElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.Ipv6Element' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.MailSettingsSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ModuleElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.NetSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.PerformanceCountersElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ProxyElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.RequestCachingSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.ServicePointManagerElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.SettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.SmtpNetworkElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.SmtpSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.SmtpSpecifiedPickupDirectoryElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.SocketElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.UnicodeDecodingConformance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.UnicodeEncodingConformance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.WebProxyScriptElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.WebRequestModuleElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.WebRequestModulesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Configuration.WebUtilityElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpAccess' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Mail.SmtpFailedRecipientsException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Mail.SmtpPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.NetworkInformationPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.PingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketClientAccessPolicyProtocol' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketFlags System.Net.Sockets.SocketFlags.MaxIOVectorLength' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebSockets.WebSocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Reflection.ICustomTypeProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.DefaultParameterValueAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices.StandardOleMarshalObject' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.AuthenticationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Authentication.InvalidCredentialException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.TokenBindingType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.DynamicRoleClaimProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.StorePermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Permissions.TypeDescriptorPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexCompilationInfo' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Text.RegularExpressions.RegexMatchTimeoutException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.BarrierPostPhaseException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Threading.Semaphore..ctor(System.Int32, System.Int32, System.String, System.Boolean, System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.OpenExisting(System.String, System.Security.AccessControl.SemaphoreRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.SetAccessControl(System.Security.AccessControl.SemaphoreSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.Semaphore.TryOpenExisting(System.String, System.Security.AccessControl.SemaphoreRights, System.Threading.Semaphore)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.SemaphoreFullException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Timers.TimersDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Web.AspNetHostingPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.AspNetHostingPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.AspNetHostingPermissionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Windows.Markup.ValueSerializerAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.Composition: -TypesMustExist : Type 'System.ComponentModel.Composition.AttributedModelServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.CatalogReflectionContextAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ChangeRejectedException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.CompositionContractMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.CompositionError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.CompositionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.CreationPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ExportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ExportFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ExportLifetimeContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ExportMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ICompositionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ImportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ImportCardinalityMismatchException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ImportingConstructorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ImportManyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ImportSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.InheritedExportAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.IPartImportsSatisfiedNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.MetadataAttributeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.MetadataViewImplementationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.PartCreationPolicyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.PartMetadataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.PartNotDiscoverableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.AggregateCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.AggregateExportProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ApplicationCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.AssemblyCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.AtomicComposition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CatalogExportProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CatalogExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ComposablePartExportProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionBatch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionConstants' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionScopeDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.CompositionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.DirectoryCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ExportProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.FilteredCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ImportEngine' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.INotifyComposablePartCatalogChanged' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.ScopingExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Hosting.TypeCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ComposablePart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ComposablePartCatalog' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ComposablePartDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ComposablePartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.Export' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ExportDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ExportedDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ICompositionElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ImportCardinality' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.Primitives.ImportDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.ComponentModel.DataAnnotations: -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.AssociationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.BindableTypeAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CompareAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CreditCardAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.CustomValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.DisplayFormatAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EditableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EmailAddressAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.EnumDataTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FileExtensionsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.FilterUIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.KeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.MetadataTypeAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.MinLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.PhoneAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RangeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.RequiredAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ScaffoldColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.ComponentModel.DataAnnotations.ScaffoldTableAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.StringLengthAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.TimestampAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UIHintAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.UrlAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.ValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ComplexTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.InversePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -Compat issues with assembly System.Core: -CannotRemoveBaseTypeOrInterface : Type 'System.InvalidTimeZoneException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.TimeZoneNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Diagnostics.EventSchemaTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLogRetentionOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.UnescapedXmlDiagnosticData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.EventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.EventProviderTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventBookmark' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventKeyword' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogConfiguration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogInvalidDataException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogIsolation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogLink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogPropertySelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogProviderDisabledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogReadingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogSession' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventLogWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventRecordWrittenEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.EventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.PathType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.ProviderMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.SessionAuthentication' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.StandardEventKeywords' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.StandardEventLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.StandardEventOpcode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Eventing.Reader.StandardEventTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterSetInstanceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.PerformanceData.CounterType' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(System.IO.FileStream, System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.CreateOrOpen(System.String, System.Int64, System.IO.MemoryMappedFiles.MemoryMappedFileAccess, System.IO.MemoryMappedFiles.MemoryMappedFileOptions, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.MemoryMappedFiles.MemoryMappedFile.SetAccessControl(System.IO.MemoryMappedFiles.MemoryMappedFileSecurity)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileSecurity' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.AnonymousPipeServerStream..ctor(System.IO.Pipes.PipeDirection, System.IO.HandleInheritability, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeClientStream..ctor(System.String, System.String, System.IO.Pipes.PipeAccessRights, System.IO.Pipes.PipeOptions, System.Security.Principal.TokenImpersonationLevel, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.NamedPipeServerStream..ctor(System.String, System.IO.Pipes.PipeDirection, System.Int32, System.IO.Pipes.PipeTransmissionMode, System.IO.Pipes.PipeOptions, System.Int32, System.Int32, System.IO.Pipes.PipeSecurity, System.IO.HandleInheritability, System.IO.Pipes.PipeAccessRights)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.PipeStream.GetAccessControl()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Pipes.PipeStream.SetAccessControl(System.IO.Pipes.PipeSecurity)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.CompileToMethod(System.Reflection.Emit.MethodBuilder, System.Runtime.CompilerServices.DebugInfoGenerator)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.InstanceNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationBaseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.InstrumentationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementBindAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementCommitAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementConfigurationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementCreateAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementEntityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementEnumeratorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementHostingModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementKeyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementMemberAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementNewInstanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementProbeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementReferenceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementRemoveAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.ManagementTaskAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Management.Instrumentation.WmiConfigurationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallSiteOps' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.Closure' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.DynamicAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.ExecutionScope' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.CompilerServices.ExtensionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RuntimeOps' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ComAwareEventInfo' does not implement interface 'System.Runtime.InteropServices._EventInfo' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Security.ManifestKinds' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellman' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanCngPublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDiffieHellmanKeyDerivationFunction' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.FromXmlString(System.String, System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.set(System.Security.Cryptography.CngAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[], System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ToXmlString(System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Int32, System.Int32, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECKeyXmlFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ManifestSignatureInformationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.MD5Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA1Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512Cng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SignatureVerificationResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.StrongNameSignatureInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.AuthenticodeSignatureInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TimestampInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.TrustStatus' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Threading.LockRecursionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. Compat issues with assembly System.Data: -TypesMustExist : Type 'Microsoft.SqlServer.Server.DataAccessKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.Format' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.IBinarySerialize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.InvalidUdtException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFacetAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlFunctionAttribute' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String, System.Boolean, System.Boolean, System.Data.SqlClient.SortOrder, System.Int32)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.DbType.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData.Type.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlPipe' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlProcedureAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlTriggerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlTriggerContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedAggregateAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.SystemDataAccessKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.SqlServer.Server.TriggerAction' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.ConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.DataSetSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DataSysDescriptionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DBConcurrencyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DeletedRowInaccessibleException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.DuplicateNameException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.EvaluateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InRowChangingEventException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidConstraintException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.InvalidExpressionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.MissingPrimaryKeyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.NoNullAllowedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.OperationAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.PropertyAttributes' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.ReadOnlyException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.RowNotInTableException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.StrongTypingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SyntaxErrorException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.TypedDataSetGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.TypedDataSetGeneratorException' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.VersionNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.Common.DBDataPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DBDataPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderConfigurationHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactories' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DbProviderFactoriesConfigurationHandler' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.Common.DbProviderFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.Odbc.OdbcConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.Odbc.OdbcException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.Odbc.OdbcFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Odbc.OdbcPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbCommand' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbConnectionStringBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbDataAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbDataReader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbInfoMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbInfoMessageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbLiteral' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbMetaDataColumnNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbRowUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbRowUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbRowUpdatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbRowUpdatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbSchemaGuid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbTransaction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.OleDb.OleDbType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Sql.SqlDataSourceEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Sql.SqlNotificationRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.OnChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlAuthenticationMethod' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlBulkCopyOptions System.Data.SqlClient.SqlBulkCopyOptions.AllowEncryptedValueModifications' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlClientFactory' does not implement interface 'System.IServiceProvider' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlClientFactory.CreatePermission(System.Security.Permissions.PermissionState)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlClientMetaDataCollectionNames' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlClientPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCertificateStoreProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCngProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionCspProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlCommand' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand..ctor(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.SqlClient.SqlCommandColumnEncryptionSetting)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. @@ -1506,7 +48,6 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(S MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteReader(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.BeginExecuteXmlReader(System.AsyncCallback, System.Object)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Clone()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ColumnEncryptionSetting.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult)' does not exist in the implementation but it does exist in the contract. @@ -1516,9 +57,6 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.Notification.set(Sys MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.NotificationAutoEnlist.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlCommand.ResetCommandTimeout()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlCommandBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlCommandColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlConnection' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection..ctor(System.String, System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.AccessToken.set(System.String)' does not exist in the implementation but it does exist in the contract. @@ -1529,7 +67,6 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.get()' MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.Credential.set(System.Data.SqlClient.SqlCredential)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.EnlistDistributedTransaction(System.EnterpriseServices.ITransaction)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlConnectionColumnEncryptionSetting' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.AsynchronousProcessing.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Authentication.get()' does not exist in the implementation but it does exist in the contract. @@ -1548,16 +85,7 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.Tran MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransactionBinding.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlConnectionStringBuilder.TransparentNetworkIPResolution.set(System.Boolean)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlCredential' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlDataReader.IsCommandBehavior(System.Data.CommandBehavior)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SQLDebugging' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlDependency' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlClient.SqlNotificationType' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlParameter' does not implement interface 'System.ICloneable' in the implementation but it does in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter..ctor(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Boolean, System.Object, System.String, System.String, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.ForceColumnEncryption.get()' does not exist in the implementation but it does exist in the contract. @@ -1566,1787 +94,7 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.get()' MembersMustExist : Member 'System.Data.SqlClient.SqlParameter.UdtTypeName.set(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Data.SqlDbType, System.Int32, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(System.String, System.Object)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlFileStream' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNotFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNullValueException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTruncateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.SqlTypesSchemaImporterExtensionHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeBigIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeBinarySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeBitSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeCharSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeDateTimeSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeDecimalSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeFloatSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeMoneySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeNCharSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeNTextSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeNumericSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeNVarCharSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeRealSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeSmallDateTimeSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeSmallIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeSmallMoneySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeTextSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeTinyIntSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeUniqueIdentifierSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeVarBinarySchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeVarCharSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.SqlTypes.TypeVarImageSchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDataDocument' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Drawing: -TypesMustExist : Type 'System.Drawing.Bitmap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.BitmapSuffixInSameAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.BitmapSuffixInSatelliteAssemblyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Brush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Brushes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.BufferedGraphics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.BufferedGraphicsContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.BufferedGraphicsManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.CharacterRange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ColorTranslator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ContentAlignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.CopyPixelOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Font' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.FontConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.FontFamily' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.FontStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Graphics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.GraphicsUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Icon' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.IconConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.IDeviceContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Image' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ImageAnimator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ImageConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ImageFormatConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Pen' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Pens' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Region' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RotateFlipType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SolidBrush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringAlignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringDigitSubstitute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringFormatFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringTrimming' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.StringUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SystemBrushes' does not exist in the implementation but it does exist in the contract. -CannotMakeTypeAbstract : Type 'System.Drawing.SystemColors' is abstract in the implementation but is not abstract in the contract. -TypesMustExist : Type 'System.Drawing.SystemFonts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SystemIcons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SystemPens' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.TextureBrush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.ToolboxBitmapAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Configuration.SystemDrawingSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.CategoryNameCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.IPropertyValueUIService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.IToolboxItemProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.IToolboxService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.IToolboxUser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.PaintValueEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.PropertyValueUIHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.PropertyValueUIItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.PropertyValueUIItemInvokeHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxComponentsCreatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxComponentsCreatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxComponentsCreatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxComponentsCreatingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.ToolboxItemCreatorCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.UITypeEditor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Design.UITypeEditorEditStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.AdjustableArrowCap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.Blend' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.ColorBlend' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.CombineMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.CompositingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.CompositingQuality' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.CoordinateSpace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.CustomLineCap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.DashCap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.DashStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.FillMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.FlushIntention' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.GraphicsContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.GraphicsPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.GraphicsPathIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.GraphicsState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.HatchBrush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.HatchStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.InterpolationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.LinearGradientBrush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.LinearGradientMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.LineCap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.LineJoin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.Matrix' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.MatrixOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PathData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PathGradientBrush' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PathPointType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PenAlignment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PenType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.PixelOffsetMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.QualityMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.RegionData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.SmoothingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.WarpMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Drawing2D.WrapMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.BitmapData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorAdjustType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorChannelFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorMapType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorMatrix' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorMatrixFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ColorPalette' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EmfPlusRecordType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EmfType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.Encoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EncoderParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EncoderParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EncoderParameterValueType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.EncoderValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.FrameDimension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageCodecFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageCodecInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.ImageLockMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.Metafile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.MetafileFrameUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.MetafileHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.MetafileType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.MetaHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.PaletteFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.PixelFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.PlayRecordCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.PropertyItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Imaging.WmfPlaceableFileHeader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.Duplex' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.InvalidPrinterException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.Margins' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.MarginsConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PageSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PaperKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PaperSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PaperSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PaperSourceKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PreviewPageInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PreviewPrintController' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintController' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrinterResolution' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrinterResolutionKind' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrinterSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrinterUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrinterUnitConvert' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermissionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintPageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintPageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintRange' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.QueryPageSettingsEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.QueryPageSettingsEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.StandardPrintController' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.FontCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.GenericFontFamilies' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.HotkeyPrefix' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.InstalledFontCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.PrivateFontCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Text.TextRenderingHint' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net: -CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.HttpWebRequest..ctor()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.INetworkProgress' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPEndPointCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IUnsafeWebRequestCreate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.ProtocolViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Net.UiSynchronizationContext' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Net.WebRequest.CreatorInstance.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.WebRequest.RegisterPortableWebRequestCreator(System.Net.IWebRequestCreate)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Cloud' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.CloudCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerNameRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerNameRecordCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerNameRegistration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerNameResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerNameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PeerToPeerException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PnrpPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PnrpPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.PnrpScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.ResolveCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.ResolveProgressChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.ApplicationChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.ContactManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.CreateContactCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.InviteCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.NameChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.ObjectChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.Peer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerApplication' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerApplicationCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerApplicationLaunchInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerApplicationRegistrationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerChangeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerCollaboration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerCollaborationPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerCollaborationPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerContact' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerContactCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerEndPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerEndPointCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerInvitationResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerInvitationResponseType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerNearMe' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerNearMeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerNearMeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerObjectCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerPresenceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerPresenceStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PeerScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.PresenceChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.RefreshDataCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscribeCompletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionListChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.PeerToPeer.Collaboration.SubscriptionType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.HttpPolicyDownloaderProtocol' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.SecurityCriticalAction' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Net.Sockets.SocketAsyncEventArgs.SocketClientAccessPolicyProtocol.set(System.Net.Sockets.SocketClientAccessPolicyProtocol)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Net.Sockets.SocketPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpAnySourceMulticastClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Sockets.UdpSingleSourceMulticastClient' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization: -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.CollectionDataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.ContractNamespaceAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataContractAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.String, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Runtime.Serialization.DataContractResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.DataContractSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.DataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.EnumMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.ExportOptions.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDataContractSurrogate' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.IgnoreDataMemberAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ImportOptions' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.InvalidDataContractException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.Serialization.KnownTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.NetDataContractSerializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.XsdDataContractImporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DataContractSerializerSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DeclaredTypeElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.DeclaredTypeElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.NetDataContractSerializerSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.ParameterElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.ParameterElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.SerializationSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.Configuration.TypeElementCollection' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.String, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer..ctor(System.Type, System.Xml.XmlDictionaryString, System.Collections.Generic.IEnumerable, System.Int32, System.Boolean, System.Runtime.Serialization.IDataContractSurrogate, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializer.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Runtime.Serialization.Json.DataContractJsonSerializerSettings.DataContractSurrogate.set(System.Runtime.Serialization.IDataContractSurrogate)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlMtomReaderInitializer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.IXmlMtomWriterInitializer' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Transactions: -TypesMustExist : Type 'System.Transactions.DistributedTransactionPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.DistributedTransactionPermissionAttribute' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionAbortedException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionInDoubtException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionManagerCommunicationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Transactions.TransactionPromotionException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Transactions.Configuration.DefaultSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Configuration.MachineSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Transactions.Configuration.TransactionsSectionGroup' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Web: -TypesMustExist : Type 'System.Web.ApplicationShutdownReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.BeginEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.DefaultHttpHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.EndEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.EventHandlerTaskAsyncHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HtmlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpApplication' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpApplicationState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpApplicationStateBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpApplicationStateWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpBrowserCapabilities' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpBrowserCapabilitiesBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpBrowserCapabilitiesWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCachePolicyBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCachePolicyWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheRevalidation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheValidateHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheVaryByContentEncodings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheVaryByHeaders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCacheVaryByParams' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpClientCertificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCompileException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpContextBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpContextWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCookie' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCookieCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpCookieMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpFileCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpFileCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpFileCollectionWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpParseException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpPostedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpPostedFileBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpPostedFileWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpRequestBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpRequestValidationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpRequestWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpResponse' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpResponseBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpResponseSubstitutionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpResponseWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpRuntime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpServerUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpServerUtilityBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpServerUtilityWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpSessionStateBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpSessionStateWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpStaticObjectsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpStaticObjectsCollectionWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpTaskAsyncHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpUnhandledException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpValidationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpWorkerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.HttpWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IHtmlString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IHttpAsyncHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IHttpHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IHttpHandlerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IHttpModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IisTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.IPartitionResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ISubscriptionToken' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ITlsTokenBindingInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.MimeMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ParserError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ParserErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.PreApplicationStartMethodAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ProcessInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ProcessModelInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ProcessShutdownReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ProcessStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ReadEntityBodyMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.RequestNotification' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.RequestNotificationStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapNodeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapResolveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SiteMapResolveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.StaticSiteMapProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TaskEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TraceContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TraceContextEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TraceContextEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TraceContextRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.TraceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UnvalidatedRequestValues' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UnvalidatedRequestValuesBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UnvalidatedRequestValuesWrapper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.VirtualPathUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.WebPageTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.XmlSiteMapProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.AggregateCacheDependency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.Cache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheDependency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheItemPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheItemRemovedCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheItemRemovedReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheItemUpdateCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.CacheItemUpdateReason' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.DatabaseNotEnabledForNotificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.FileResponseElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.HeaderElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.IOutputCacheEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.MemoryResponseElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.OutputCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.OutputCacheProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.OutputCacheProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.ResponseElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.SqlCacheDependency' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.SqlCacheDependencyAdmin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.SubstitutionResponseElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Caching.TableNotEnabledForNotificationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.AppSettingsExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.AssemblyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildDependencySet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildManagerHostUnloadEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildManagerHostUnloadEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildProviderAppliesTo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildProviderAppliesToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.BuildProviderResultFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ClientBuildManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ClientBuildManagerCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ClientBuildManagerParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.CompilerType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ConnectionStringsExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ControlBuilderInterceptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.DesignTimeResourceProviderFactoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ExpressionBuilderContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ExpressionEditorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ExpressionPrefixAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.FolderLevelBuildProviderAppliesTo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.FolderLevelBuildProviderAppliesToAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.IAssemblyPostProcessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.IImplicitResourceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ImplicitResourceKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.IResourceProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.LinePragmaCodeInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.PrecompilationFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ResourceExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ResourceExpressionFields' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.ResourceProviderFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.RouteUrlExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Compilation.RouteValueExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AdapterDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AnonymousIdentificationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AssemblyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AssemblyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AsyncPreloadModeFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthenticationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthenticationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthorizationRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthorizationRuleAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthorizationRuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.AuthorizationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BrowserCapabilitiesCodeGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BrowserCapabilitiesFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BrowserCapabilitiesFactoryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BufferModesCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BufferModeSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BuildProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.BuildProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CacheSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ClientTarget' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ClientTargetCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ClientTargetSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CodeSubDirectoriesCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CodeSubDirectory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CompilationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.Compiler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CompilerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CustomError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CustomErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CustomErrorsMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CustomErrorsRedirectMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.CustomErrorsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.DeploymentSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.EventMappingSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.EventMappingSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ExpressionBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ExpressionBuilderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FcnMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FolderLevelBuildProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FolderLevelBuildProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsAuthenticationConfiguration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsAuthenticationCredentials' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsAuthenticationUser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsAuthenticationUserCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsAuthPasswordFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FormsProtectionEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FullTrustAssembliesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FullTrustAssembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.FullTrustAssemblyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.GlobalizationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HealthMonitoringSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HostingEnvironmentSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpCapabilitiesBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpCapabilitiesDefaultProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpCapabilitiesProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpCapabilitiesSectionHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpConfigurationContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpCookiesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpHandlerAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpHandlerActionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpHandlersSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpModuleAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpModuleActionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpModulesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.HttpRuntimeSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IConfigMapPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IConfigMapPathFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IdentitySection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IgnoreDeviceFilterElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IgnoreDeviceFilterElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.IRemoteWebConfigurationHostServer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.LowerCaseStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.MachineKeyCompatibilityMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.MachineKeySection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.MachineKeyValidation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.MachineKeyValidationConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.MembershipSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.NamespaceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.NamespaceInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.OutputCacheProfile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.OutputCacheProfileCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.OutputCacheSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.OutputCacheSettingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PagesEnableSessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PagesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PartialTrustVisibleAssembliesSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PartialTrustVisibleAssembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PartialTrustVisibleAssemblyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.PassportAuthentication' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProcessModelComAuthenticationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProcessModelComImpersonationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProcessModelLogLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProcessModelSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileGroupSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileGroupSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileGuidedOptimizationsFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfilePropertySettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfilePropertySettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProfileSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProtocolCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProtocolElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProtocolsConfigurationHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProtocolsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.ProvidersHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RegexWorker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RemoteWebConfigurationHostServer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RoleManagerSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RootProfilePropertySettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RuleSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.RuleSettingsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SecurityPolicySection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SerializationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SessionPageStateSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SessionStateSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SiteMapSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SqlCacheDependencyDatabase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SqlCacheDependencyDatabaseCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SqlCacheDependencySection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SystemWebCachingSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.SystemWebSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TagMapCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TagMapInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TagPrefixCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TagPrefixInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TicketCompatibilityMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TraceDisplayMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TraceSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TransformerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TransformerInfoCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TrustLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TrustLevelCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.TrustSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.UrlMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.UrlMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.UrlMappingsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.UserMapPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.VirtualDirectoryMapping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.VirtualDirectoryMappingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebApplicationLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebConfigurationFileMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebConfigurationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebControlsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebPartsPersonalization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebPartsPersonalizationAuthorization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.WebPartsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.XhtmlConformanceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.XhtmlConformanceSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Configuration.Internal.IInternalConfigWebHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Handlers.AssemblyResourceLoader' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Handlers.TraceHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.AppDomainFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.AppDomainInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.AppDomainInfoEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.AppDomainProtocolHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ApplicationHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ApplicationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ApplicationManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.AppManagerAppDomainFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.HostingEnvironment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.HostSecurityPolicyResolver' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.HostSecurityPolicyResults' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IAdphManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IAppDomainFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IAppDomainInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IAppDomainInfoEnum' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IApplicationHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IApplicationPreloadManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IApplicationPreloadUtil' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IAppManagerAppDomainFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IISAPIRuntime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IListenerChannelCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IPphManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessHostFactoryHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessHostIdleAndHealthCheck' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessHostPreloadClient' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessHostSupportFunctions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IProcessPingCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IRegisteredObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ISAPIRuntime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.IStopListeningRegisteredObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ISuspendibleRegisteredObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ProcessHost' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ProcessHostFactoryHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.ProcessProtocolHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.SimpleWorkerRequest' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.VirtualDirectory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.VirtualFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.VirtualFileBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Hosting.VirtualPathProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Instrumentation.PageExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Instrumentation.PageExecutionListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Instrumentation.PageInstrumentationService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.MailAttachment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.MailEncoding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.MailFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.MailMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.MailPriority' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Mail.SmtpMail' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.BufferedWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.EventLogWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.EventNotificationType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.IisTraceWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.IRegiisUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.IWebEventCustomEvaluator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.MailEventNotificationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.MailWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.RegiisUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.RuleFiringRecord' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SessionStateType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SimpleMailWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SqlExecutionException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SqlFeatures' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SqlServices' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.SqlWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.TemplatedMailWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.TraceWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebApplicationInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebApplicationLifetimeEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebAuthenticationFailureAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebAuthenticationSuccessAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebBaseErrorEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebBaseEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebBaseEventCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebErrorEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebEventBufferFlushInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebEventCodes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebEventFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebEventManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebFailureAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebHeartbeatEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebManagementEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebProcessInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebProcessStatistics' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebRequestErrorEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebRequestEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebRequestInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebSuccessAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebThreadInformation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WebViewStateFailureAuditEvent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Management.WmiWebEventProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ArrayModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ArrayModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.AssociatedMetadataProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.AssociatedValidatorProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.BinaryDataModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.BindingBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.BindingBehaviorAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.BindNeverAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.BindRequiredAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.CollectionModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.CollectionModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ComplexModel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ComplexModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ComplexModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ComplexModelResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ControlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ControlValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.CookieAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.CookieValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelMetadataProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelValidationFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsModelValidatorProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DataAnnotationsValidatableObjectAdapterFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DefaultModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DictionaryModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DictionaryModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.DictionaryValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.EmptyModelMetadataProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ExtensibleModelBinderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.FormAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.FormValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.GenericModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IMetadataAware' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IModelNameProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IUnvalidatedValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IUnvalidatedValueProviderSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.IValueProviderSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.KeyValuePairModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.KeyValuePairModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderErrorMessageProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderErrorMessageProviders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderProviderOptionsAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinderProviders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBinders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBindingContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelBindingExecutionContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelErrorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelMetadata' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelMetadataProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelMetadataProviders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelStateDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidatingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidationNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidationResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidatorProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidatorProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ModelValidatorProviders' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.MutableObjectModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.MutableObjectModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.NameValueCollectionValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ProfileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ProfileValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.QueryStringAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.QueryStringValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.RangeAttributeAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.RegularExpressionAttributeAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.RequiredAttributeAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.RouteDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.RouteDataValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.SessionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.SimpleModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.SimpleValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.StringLengthAttributeAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.TypeConverterModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.TypeConverterModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.TypeMatchModelBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.TypeMatchModelBinderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.UserProfileAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.UserProfileValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ValidatableObjectAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ValueProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ValueProviderResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ValueProviderSourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ViewStateAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.ModelBinding.ViewStateValueProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.CustomProviderDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.DefaultProfile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileAuthenticationOption' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileAutoSaveEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileAutoSaveEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileGroupBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileInfoCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileMigrateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileMigrateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.ProfileProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.SettingsAllowAnonymousAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Profile.SqlProfileProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.HttpMethodConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.IRouteConstraint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.IRouteHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.PageRouteHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RequestContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.Route' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.RouteValueDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.StopRoutingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.UrlRoutingHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.UrlRoutingModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Routing.VirtualPathData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.ActiveDirectoryConnectionProtection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.ActiveDirectoryMembershipProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.ActiveDirectoryMembershipUser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AnonymousIdentificationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AnonymousIdentificationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AnonymousIdentificationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AuthorizationStoreRoleProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.CookieProtection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.DefaultAuthenticationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.DefaultAuthenticationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.DefaultAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FileAuthorizationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsAuthentication' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsAuthenticationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsAuthenticationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsAuthenticationTicket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.FormsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.MachineKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.MachineKeyProtection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.Membership' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.MembershipPasswordAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.PassportAuthenticationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.PassportAuthenticationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.PassportAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.PassportIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.PassportPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.RoleManagerEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.RoleManagerEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.RoleManagerModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.RolePrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.RoleProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.Roles' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.SqlMembershipProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.SqlRoleProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.UrlAuthorizationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.WindowsAuthenticationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.WindowsAuthenticationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.WindowsAuthenticationModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.WindowsTokenRoleProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.AntiXssEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.LowerCodeCharts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.LowerMidCodeCharts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.MidCodeCharts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.UpperCodeCharts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Security.AntiXss.UpperMidCodeCharts' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.HttpSessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.HttpSessionStateContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.IHttpSessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.IPartialSessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.IReadOnlySessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.IRequiresSessionState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.ISessionIDManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.ISessionStateItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.IStateRuntime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionIDManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateActions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateBehavior' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateItemExpireCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateStoreData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateStoreProviderBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.SessionStateUtility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.SessionState.StateRuntime' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BaseParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BasePartialCachingControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BaseTemplateParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BindableTemplateBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BoundPropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BuilderPropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BuildMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.BuildTemplateMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ChtmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ClientIDMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ClientScriptManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CodeBlockType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CodeConstructType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CodeStatementBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CompilationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CompiledBindableTemplateBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CompiledTemplateBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ComplexPropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ConflictOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ConstructorNeedsTagAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Control' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlBuilderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlCachePolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlSkin' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlSkinDelegate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ControlValuePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CssClassPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.CssStyleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataBindingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataBindingHandlerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataBoundLiteralControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataKeyPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceCacheDurationConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceCacheExpiry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceCapabilities' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceOperation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceSelectArguments' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceViewOperationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DataSourceViewSelectCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DesignerDataBoundLiteralControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DesignTimeParseData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.DesignTimeTemplateParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.EmptyControlCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.EventEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ExpressionBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ExpressionBindingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ExtractTemplateValuesMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.FileLevelControlBuilderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.FileLevelMasterPageControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.FileLevelPageControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.FileLevelUserControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.FilterableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HiddenFieldPageStatePersister' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HierarchicalDataSourceControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HierarchicalDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Html32TextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlTextWriterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlTextWriterStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlTextWriterTag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IAttributeAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IAutoFieldGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IBindableControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IBindableTemplate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ICallbackEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ICheckBoxControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ICodeBlockTypeAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IControlBuilderAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IControlDesignerAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDataBindingsAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDataItemContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDataKeysControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDataSourceViewSchemaAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IDReferencePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IEditableTextControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IExpressionsAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IFilterResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IHierarchicalDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IHierarchicalEnumerable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IHierarchyData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ImageClickEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ImageClickEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.INamingContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.INavigateUIData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IndexedString' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IParserAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IPostBackDataHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IPostBackEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IResourceUrlGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IStateFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IStateManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IStyleSheet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ITemplate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ITextControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IThemeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IUrlResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IUserControlDesignerAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IUserControlTypeResolutionService' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.IValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ListSourceHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.LiteralControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.LosFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.MasterPage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.MasterPageControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.NonVisualControlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ObjectConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ObjectPersistData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ObjectStateFormatter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ObjectTagBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.OutputCacheLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.OutputCacheParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Page' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageAsyncTask' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageHandlerFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageParserFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageStatePersister' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PageTheme' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Pair' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ParseChildrenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ParseRecorder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PartialCachingAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PartialCachingControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PersistChildrenAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PersistenceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PersistenceModeAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PostBackOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PropertyConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.PropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.RenderMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.RenderTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.RootBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.SessionPageStatePersister' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.SimplePropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.SimpleWebHandlerParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.SkinBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.StateBag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.StateItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.StateManagedCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.StaticPartialCachingControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.SupportsEventValidationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TagPrefixAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateContainerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateControlParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateInstance' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateInstanceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplateParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.TemplatePropertyEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ThemeableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ThemeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ToolboxDataAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Triplet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.UnobtrusiveValidationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.UrlPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.UserControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.UserControlControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ValidateRequestMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ValidationPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ValidationSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ValidatorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.VerificationAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.VerificationConditionalOperator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.VerificationReportLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.VerificationRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ViewStateEncryptionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ViewStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ViewStateMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.ViewStateModeByIdAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.VirtualReferenceType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebResourceAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebServiceParser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.XhtmlMobileDocType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.XhtmlTextWriter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.XPathBinder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Adapters.ControlAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.Adapters.PageAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlAnchor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlArea' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlAudio' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlContainerControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlEmbed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlEmptyTagControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlForm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlGenericControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlHead' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlHeadBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlIframe' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlImage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputCheckBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputGenericControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputHidden' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputImage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputPassword' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputRadioButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputReset' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputSubmit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlInputText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlLink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlMeta' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlSelect' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlSelectBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTableCell' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTableCellCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTableRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTableRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTextArea' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTitle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlTrack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.HtmlControls.HtmlVideo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AccessDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AccessDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AdCreatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AdCreatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AdRotator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AssociatedControlConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AuthenticateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AuthenticateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AutoCompleteType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AutoFieldsGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AutoGeneratedField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.AutoGeneratedFieldProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BaseCompareValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BaseDataBoundControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BaseDataList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BaseValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BorderStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BoundColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BoundField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BulletedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BulletedListDisplayMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BulletedListEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BulletedListEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.BulletStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Button' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ButtonColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ButtonColumnType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ButtonField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ButtonFieldBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ButtonType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Calendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CalendarDay' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CalendarSelectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CallingDataMethodsEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CallingDataMethodsEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ChangePassword' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CheckBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CheckBoxField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CheckBoxList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CircleHotSpot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CommandField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CompareValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CompleteWizardStep' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CompositeControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CompositeDataBoundControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Content' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ContentDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ContentPlaceHolder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ControlIDConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ControlParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ControlPropertyNameConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CookieParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreateUserErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreateUserErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreateUserWizard' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreateUserWizardStep' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreatingModelDataSourceEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CreatingModelDataSourceEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.CustomValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataBoundControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataBoundControlMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlCellType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlCommands' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlFieldCell' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlFieldCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlFieldHeaderCell' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlRowState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataControlRowType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGrid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridColumnCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridItemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridItemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridPageChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridPageChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridPagerStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridSortCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataGridSortCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataKeyArray' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataKeyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListItemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataListItemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DataSourceSelectResultProcessingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DayNameFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DayRenderEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DayRenderEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewDeletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewDeletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewDeleteEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewDeleteEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewInsertedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewInsertedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewInsertEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewInsertEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewModeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewModeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewPageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewPageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewPagerRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewRowsGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewUpdateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DetailsViewUpdateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.DropDownList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.EditCommandColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.EmbeddedMailObject' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.EmbeddedMailObjectsCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FileUpload' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FirstDayOfWeek' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FontInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FontNamesConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FontSize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FontUnit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FontUnitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewDeletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewDeletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewDeleteEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewDeleteEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewInsertedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewInsertedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewInsertEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewInsertEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewModeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewModeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewPageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewPageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewPagerRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewUpdateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.FormViewUpdateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridLines' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewCancelEditEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewCancelEditEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewColumnsGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewDeletedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewDeletedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewDeleteEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewDeleteEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewEditEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewEditEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewPageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewPageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewRowEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewRowEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewSelectEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewSelectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewSortEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewSortEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewUpdatedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewUpdatedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewUpdateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.GridViewUpdateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HiddenField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HierarchicalDataBoundControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HorizontalAlign' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HotSpot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HotSpotCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HotSpotMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HyperLink' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HyperLinkColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HyperLinkControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.HyperLinkField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IButtonControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ICallbackContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ICompositeControlDesignerAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IDataBoundControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IDataBoundItemControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IDataBoundListControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IFieldControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Image' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageAlign' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageMapEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ImageMapEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IPersistedSelector' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IPostBackContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.IRepeatInfoUser' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Label' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LabelControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LinkButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LinkButtonControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListItemControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListItemType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ListSelectionMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Literal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LiteralControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LiteralMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Localize' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Login' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginFailureAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginTextLayout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LoginView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.LogoutAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MailDefinition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MailMessageEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MailMessageEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Menu' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemBindingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemStyleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuItemTemplateContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MenuRenderingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelDataMethodResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelDataSourceMethod' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelErrorMessage' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ModelMethodContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MonthChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MonthChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MultiView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.MultiViewControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.NextPrevFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceDisposingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceDisposingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceFilteringEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceFilteringEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceMethodEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceObjectEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceSelectingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceStatusEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ObjectDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Orientation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PagedDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PagerButtons' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PagerMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PagerPosition' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PagerSettings' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Panel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PanelStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Parameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ParameterCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ParsingCulture' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PasswordRecovery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PathDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PlaceHolder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PlaceHolderControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.PolygonHotSpot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ProfileParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.QueryExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.QueryStringParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RadioButton' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RadioButtonList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RangeValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RectangleHotSpot' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RegularExpressionValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeatDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Repeater' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterItemCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterItemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeaterItemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeatInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RepeatLayout' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RequiredFieldValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RoleGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RoleGroupCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.RouteParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ScrollBars' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SelectedDatesCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SelectResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SendMailErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SendMailErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ServerValidateEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ServerValidateEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SessionParameter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapHierarchicalDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapNodeItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapNodeItemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapNodeItemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapNodeItemType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SiteMapPath' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SortDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceCommandEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceCommandEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceCommandType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceFilteringEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceFilteringEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceSelectingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceStatusEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceStatusEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SqlDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.StringArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Style' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.StyleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SubMenuStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.SubMenuStyleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Substitution' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Table' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableCaptionAlign' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableCell' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableCellCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableCellControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableFooterRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableHeaderCell' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableHeaderRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableHeaderScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableItemStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableRowCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableRowSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableSectionStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TableStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TargetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TemplateColumn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TemplatedWizardStep' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TemplateField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TextAlign' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TextBox' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TextBoxControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TextBoxMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TitleFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeBinding' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeBindingCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeSelectAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeStyleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeNodeTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.TreeViewImageSet' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Unit' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.UnitConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.UnitType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidatedControlConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidationCompareOperator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidationDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidationSummary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidationSummaryDisplayMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ValidatorDisplay' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.VerticalAlign' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.View' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.ViewCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebColorConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Wizard' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardNavigationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardNavigationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardStep' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardStepBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardStepCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardStepControlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WizardStepType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Xml' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.XmlBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.XmlDataSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.XmlDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.XmlHierarchicalDataSourceView' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Adapters.DataBoundControlAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Adapters.HideDisabledControlAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Adapters.HierarchicalDataBoundControlAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Adapters.MenuAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.Adapters.WebControlAdapter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.AppearanceEditorPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.BehaviorEditorPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.CatalogPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.CatalogPartChrome' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.CatalogPartCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.CatalogZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.CatalogZoneBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConnectionConsumerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConnectionInterfaceCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConnectionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConnectionsZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ConsumerConnectionPointCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.DeclarativeCatalogPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.EditorPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.EditorPartChrome' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.EditorPartCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.EditorZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.EditorZoneBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ErrorWebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.FieldCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.GenericWebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ImportCatalogPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IPersonalizable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ITrackingPersonalizable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ITransformerConfigurationControl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IVersioningPersonalizable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebActionable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebEditable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebPartField' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebPartParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebPartRow' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.IWebPartTable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.LayoutEditorPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PageCatalogPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ParametersCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.Part' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PartChromeState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PartChromeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationAdministration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationProviderCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationStateInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationStateInfoCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PersonalizationStateQuery' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.PropertyGridEditorPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ProviderConnectionPoint' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ProviderConnectionPointCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ProxyWebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ProxyWebPartConnectionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ProxyWebPartManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.RowCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.RowToFieldTransformer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.RowToParametersTransformer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.SharedPersonalizationStateInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.TableCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.TitleStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.ToolZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.TransformerTypeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.UnauthorizedWebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.UserPersonalizationStateInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebBrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebDescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebDisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartAddingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartAddingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartChrome' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnectionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnectionsCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnectionsCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnectionsEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartConnectionsEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDescription' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDescriptionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayModeCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayModeCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayModeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartDisplayModeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartExportMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartHelpMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartManager' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartManagerInternals' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartMenuStyle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartMovingEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartMovingEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartPersonalization' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartTracker' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartTransformer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartTransformerAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartTransformerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartUserCapability' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartVerb' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartVerbCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartVerbRenderMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartVerbsEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartVerbsEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartZoneBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebPartZoneCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.UI.WebControls.WebParts.WebZone' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.HttpEncoder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.IWebObjectFactory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.IWebPropertyAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.RequestValidationSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.RequestValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.TransactedCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.Transactions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.WorkItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.Util.WorkItemCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Web.WebSockets.AspNetWebSocketOptions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Xml: -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XmlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.XmlReaderSettings..ctor(System.Xml.XmlResolver)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.PermissionSet)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver..ctor(System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.XmlSecureResolver.CreateEvidenceForUrl(System.String)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlXapResolver' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaInferenceException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Schema.XmlSchemaValidationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Xml.Serialization.CodeExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SchemaImporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapCodeExporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaExporter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.SoapSchemaImporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.SoapTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Xml.Serialization.XmlCodeExporter' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlMemberMapping.GenerateTypeName(System.CodeDom.Compiler.CodeDomProvider)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaImporter' does not inherit from base type 'System.Xml.Serialization.SchemaImporter' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.CodeDom.Compiler.CodeDomProvider, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeGenerationOptions, System.Xml.Serialization.ImportContext)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSchemaImporter..ctor(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers, System.Xml.Serialization.CodeGenerationOptions)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerAssemblyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializerFactory.CreateSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSerializerVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Advanced.SchemaImporterExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.DateTimeSerializationSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.RootedPathValidator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.SchemaImporterExtensionElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.SchemaImporterExtensionElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.SchemaImporterExtensionsSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.SerializationSectionGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.Serialization.Configuration.XmlSerializerSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConfiguration.XmlReaderSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlConfiguration.XsltConfigSection' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.XPath.XPathException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.CompileToType(System.Xml.XmlReader, System.Xml.Xsl.XsltSettings, System.Xml.XmlResolver, System.Boolean, System.Reflection.Emit.TypeBuilder, System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltCompileException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Xsl.XsltException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XmlReader, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.Serialization: -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAnyElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlArrayItemAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlAttributeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlChoiceIdentifierAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlElementAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlEnumAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIgnoreAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlIncludeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlRootAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlSchemaProviderAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String, System.String, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.FromMappings(System.Xml.Serialization.XmlMapping[], System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Xml.Serialization.XmlSerializer.GenerateSerializer(System.Type[], System.Xml.Serialization.XmlMapping[], System.CodeDom.Compiler.CompilerParameters)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTextAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Xml.Serialization.XmlTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. -Total Issues: 3332 +Total Issues: 87 From 48c9a5b8b110c3564eb927b01946bab849932d35 Mon Sep 17 00:00:00 2001 From: Matt Ellis Date: Thu, 13 Apr 2017 15:59:05 -0700 Subject: [PATCH 022/336] Don't crossgen existing .ni images Trying to crossgen existing ni files (e.g. mscorlib.ni.dll) causes errors to be displayed to the console for example: ``` Error compiling /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/Tools/mscorlib.ni.dll: The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020) Error: compilation failed for "/mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/Tools/mscorlib.ni.dll" (0x80070020) Unable to successfully compile /mnt/resource/j/workspace/dotnet_corefx/master/centos7.1_debug_prtest/Tools/mscorlib.ni.dll ``` Simply skip *.ni.[dll|exe] when crossgening. --- Tools-Override/crossgen.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Tools-Override/crossgen.sh b/Tools-Override/crossgen.sh index ed81eefe1971..c9aee7fcd4be 100755 --- a/Tools-Override/crossgen.sh +++ b/Tools-Override/crossgen.sh @@ -53,13 +53,15 @@ crossgen_everything() crossgen_single() { __file=$1 - $__crossgen /Platform_Assemblies_Paths $__sharedFxDir:$__toolsDir /nologo /MissingDependenciesOK /ReadyToRun $__file > /dev/null - if [ $? -eq 0 ]; then - __outname="${__file/.dll/.ni.dll}" - __outname="${__outname/.exe/.ni.exe}" - echo "$__file -> $__outname" - else - echo "Unable to successfully compile $__file" + if [[ $__file != *.ni.dll && $__file != *.ni.exe ]]; then + $__crossgen /Platform_Assemblies_Paths $__sharedFxDir:$__toolsDir /nologo /MissingDependenciesOK /ReadyToRun $__file > /dev/null + if [ $? -eq 0 ]; then + __outname="${__file/.dll/.ni.dll}" + __outname="${__outname/.exe/.ni.exe}" + echo "$__file -> $__outname" + else + echo "Unable to successfully compile $__file" + fi fi } From 45e1cfe27381499dd9284ab4a063a95b86ac303c Mon Sep 17 00:00:00 2001 From: Matt Ellis Date: Thu, 13 Apr 2017 16:06:54 -0700 Subject: [PATCH 023/336] Fix crossgen.sh on OSX --- Tools-Override/crossgen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools-Override/crossgen.sh b/Tools-Override/crossgen.sh index c9aee7fcd4be..5dcfec736321 100755 --- a/Tools-Override/crossgen.sh +++ b/Tools-Override/crossgen.sh @@ -83,7 +83,7 @@ __sharedFxDir=$__toolsDir/dotnetcli/shared/Microsoft.NETCore.App/$__SharedFxVers __rid=$($__dotnet --info | sed -n -e 's/^.*RID:[[:space:]]*//p') if [[ $__rid == *"osx"* ]]; then - __packageRid="osx.10.10-x64" + __packageRid="osx-x64" elif [[ $__rid == *"rhel.7"* || $__rid == *"centos.7"* ]]; then __packageRid="rhel.7-x64" else From 518e739ee935bb00b375b757330f74368957ad90 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Thu, 13 Apr 2017 17:53:04 -0700 Subject: [PATCH 024/336] Fix S.IO.FileSystem tests running on uapaot --- .../tests/FileSystemTest.Unix.cs | 18 +++++++++++++++ .../tests/FileSystemTest.Windows.cs | 22 +++++++++++++++++++ .../tests/FileSystemTest.cs | 9 +------- .../tests/System.IO.FileSystem.Tests.csproj | 6 +++++ 4 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 src/System.IO.FileSystem/tests/FileSystemTest.Unix.cs create mode 100644 src/System.IO.FileSystem/tests/FileSystemTest.Windows.cs diff --git a/src/System.IO.FileSystem/tests/FileSystemTest.Unix.cs b/src/System.IO.FileSystem/tests/FileSystemTest.Unix.cs new file mode 100644 index 000000000000..840084766c48 --- /dev/null +++ b/src/System.IO.FileSystem/tests/FileSystemTest.Unix.cs @@ -0,0 +1,18 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using Xunit; + +namespace System.IO.Tests +{ + public abstract partial class FileSystemTest + { + [DllImport("libc", SetLastError = true)] + protected static extern int geteuid(); + + [DllImport("libc", SetLastError = true)] + protected static extern int mkfifo(string path, int mode); + } +} diff --git a/src/System.IO.FileSystem/tests/FileSystemTest.Windows.cs b/src/System.IO.FileSystem/tests/FileSystemTest.Windows.cs new file mode 100644 index 000000000000..1af2351a0ee5 --- /dev/null +++ b/src/System.IO.FileSystem/tests/FileSystemTest.Windows.cs @@ -0,0 +1,22 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using Xunit; + +namespace System.IO.Tests +{ + public abstract partial class FileSystemTest + { + protected static int geteuid() + { + throw new PlatformNotSupportedException(); + } + + protected static int mkfifo(string path, int mode) + { + throw new PlatformNotSupportedException(); + } + } +} diff --git a/src/System.IO.FileSystem/tests/FileSystemTest.cs b/src/System.IO.FileSystem/tests/FileSystemTest.cs index a8966928329a..1386fcbf23ce 100644 --- a/src/System.IO.FileSystem/tests/FileSystemTest.cs +++ b/src/System.IO.FileSystem/tests/FileSystemTest.cs @@ -2,12 +2,11 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Runtime.InteropServices; using Xunit; namespace System.IO.Tests { - public abstract class FileSystemTest : FileCleanupTestBase + public abstract partial class FileSystemTest : FileCleanupTestBase { public static readonly byte[] TestBuffer = { 0xBA, 0x5E, 0xBA, 0x11, 0xF0, 0x07, 0xBA, 0x11 }; @@ -52,11 +51,5 @@ protected static bool CanCreateSymbolicLinks return success; } } - - [DllImport("libc", SetLastError = true)] - protected static extern int geteuid(); - - [DllImport("libc", SetLastError = true)] - protected static extern int mkfifo(string path, int mode); } } diff --git a/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj b/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj index f69a7df2bcdb..7749fa5fbec6 100644 --- a/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj +++ b/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj @@ -30,6 +30,12 @@ Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs + + + + + + From e5b0c8c4487cba4c12f44c67c6273b1a01a88c1d Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Fri, 14 Apr 2017 08:52:40 +0700 Subject: [PATCH 025/336] Address PR feedback --- .../tests/System/Reflection/AssemblyTests.cs | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index 6f95dedbce2a..999607012588 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -201,16 +201,7 @@ public static void GetModules_GetModule(Assembly assembly) Assert.NotEmpty(assembly.GetModules()); foreach (Module module in assembly.GetModules()) { - if (PlatformDetection.IsFullFramework) - { - Assert.Null(assembly.GetModule(module.Name)); - Assert.Equal(module, assembly.GetModule(module.ToString())); - } - else - { - Assert.Equal(module, assembly.GetModule(module.Name)); - Assert.Equal(module, assembly.GetModule(module.ToString())); - } + Assert.Equal(module, assembly.GetModule(module.ToString())); } } @@ -222,7 +213,7 @@ public static void GetLoadedModules() foreach (Module module in assembly.GetLoadedModules()) { Assert.NotNull(module); - Assert.Equal(module, assembly.GetModule(module.Name)); + Assert.Equal(module, assembly.GetModule(module.ToString())); } } @@ -284,14 +275,14 @@ public static void Test_IsFullyTrusted() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports SecurityRuleSet")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework supports SecurityRuleSet")] public static void Test_SecurityRuleSet_Netcore() { Assert.Equal(SecurityRuleSet.None, typeof(AssemblyTests).Assembly.SecurityRuleSet); } [Fact] - [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "SecurityRuleSet is ignored in .NET core")] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "SecurityRuleSet is ignored in .NET Core")] public static void Test_SecurityRuleSet_Netfx() { Assert.Equal(SecurityRuleSet.Level2, typeof(AssemblyTests).Assembly.SecurityRuleSet); @@ -300,26 +291,43 @@ public static void Test_SecurityRuleSet_Netfx() [Fact] public static void Test_LoadFile() { - var assem = typeof(AssemblyTests).Assembly; - string path = "System.Runtime.Tests.dll"; - string fullpath = Path.GetFullPath(path); - var loadfile1 = Assembly.LoadFile(fullpath); - Assert.Equal(assem.FullName, loadfile1.FullName); - string dir = Path.GetDirectoryName(fullpath); - fullpath = Path.Combine(dir, ".", path); - var loadfile2 = Assembly.LoadFile(fullpath); - Assert.Equal(loadfile1.FullName, loadfile2.FullName); + Assembly currentAssembly = typeof(AssemblyTests).Assembly; + const string RuntimeTestsDll = "System.Runtime.Tests.dll"; + string fullRuntimeTestsPath = Path.GetFullPath(RuntimeTestsDll); + + var loadedAssembly1 = Assembly.LoadFile(fullRuntimeTestsPath); + if (PlatformDetection.IsFullFramework) + { + Assert.Equal(currentAssembly, loadedAssembly1); + } + else + { + Assert.NotEqual(currentAssembly, loadedAssembly1); + } + + string dir = Path.GetDirectoryName(fullRuntimeTestsPath); + fullRuntimeTestsPath = Path.Combine(dir, ".", RuntimeTestsDll); + + Assembly loadedAssembly2 = Assembly.LoadFile(fullRuntimeTestsPath); + if (PlatformDetection.IsFullFramework) + { + Assert.NotEqual(loadedAssembly1, loadedAssembly2); + } + else + { + Assert.Equal(loadedAssembly1, loadedAssembly2); + } } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework has a bug and throws a NullReferenceException")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework has a bug and throws a NullReferenceException")] public static void LoadFile_NullPath_Netcore_ThrowsArgumentNullException() { Assert.Throws("path", () => Assembly.LoadFile(null)); } [Fact] - [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ".NET core fixed a bug where LoadFile(null) throws a NullReferenceException")] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ".NET Core fixed a bug where LoadFile(null) throws a NullReferenceException")] public static void LoadFile_NullPath_Netfx_ThrowsNullReferenceException() { Assert.Throws(() => Assembly.LoadFile(null)); @@ -332,21 +340,21 @@ public static void LoadFile_NoSuchPath_ThrowsArgumentException() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports Assembly.LoadFrom")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework supports Assembly.LoadFrom")] public static void Test_LoadFromUsingHashValue_Netcore() { Assert.Throws(() => Assembly.LoadFrom("abc", null, System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); } [Fact] - [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The implementation of Assembly.LoadFrom is stubbed out in .NET core")] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The implementation of Assembly.LoadFrom is stubbed out in .NET Core")] public static void Test_LoadFromUsingHashValue_Netfx() { Assert.Throws(() => Assembly.LoadFrom("abc", null, System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET framework supports more than one module per assembly")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework supports more than one module per assembly")] public static void Test_LoadModule_Netcore() { Assembly assembly = typeof(AssemblyTests).Assembly; From 075c750ac04b0ac568e64dd21311a4ebcf352533 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Thu, 13 Apr 2017 19:14:44 -0700 Subject: [PATCH 026/336] Update CoreClr to preview1-25214-01 (#18359) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 99d0fee2eb55..41a38c75c16e 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 - 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 + df2ed4296d832554e58cd6ab8f69ea16f3a13fd1 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 adb21e771c22d9d771cbd18f6df2798c66217a86 adb21e771c22d9d771cbd18f6df2798c66217a86 @@ -21,7 +21,7 @@ preview1-25213-06 - preview1-25213-04 + preview1-25214-01 beta-25016-01 beta-25213-00 beta-25213-00 From 4db354e89867b4e09480b72f29b2bba07947efd9 Mon Sep 17 00:00:00 2001 From: "FAREAST\\v-lijiay" Date: Thu, 13 Apr 2017 18:39:08 -0700 Subject: [PATCH 027/336] Add Attribute SkipOnTargetFramework for Issue 18274. --- .../tests/XmlDictionaryWriterTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs b/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs index 821865e33589..ad7b0d494209 100644 --- a/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs +++ b/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs @@ -166,6 +166,7 @@ public static void XmlDictionaryWriter_InvalidUnicodeChar() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "is implemented on full framework")] public static void CreateMtomReaderWriter_Throw_PNSE() { using (var stream = new MemoryStream()) From 74830b86bf59ad265feca071d9ae921d1b670d97 Mon Sep 17 00:00:00 2001 From: sepidehMS Date: Thu, 13 Apr 2017 21:21:11 -0700 Subject: [PATCH 028/336] Remove System.Xml.XPath.XmlDocument contract --- .../System.Xml.XPath.XmlDocument.sln | 38 -------------- src/System.Xml.XPath.XmlDocument/dir.props | 8 --- .../ref/Configurations.props | 10 ---- .../System.Xml.XPath.XmlDocument.Manual.cs | 24 --------- .../ref/System.Xml.XPath.XmlDocument.csproj | 27 ---------- .../src/Configurations.props | 11 ----- .../src/System.Xml.XPath.XmlDocument.csproj | 38 -------------- .../System/Xml/XmlDocumentXPathExtensions.cs | 49 ------------------- 8 files changed, 205 deletions(-) delete mode 100644 src/System.Xml.XPath.XmlDocument/System.Xml.XPath.XmlDocument.sln delete mode 100644 src/System.Xml.XPath.XmlDocument/dir.props delete mode 100644 src/System.Xml.XPath.XmlDocument/ref/Configurations.props delete mode 100644 src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.Manual.cs delete mode 100644 src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.csproj delete mode 100644 src/System.Xml.XPath.XmlDocument/src/Configurations.props delete mode 100644 src/System.Xml.XPath.XmlDocument/src/System.Xml.XPath.XmlDocument.csproj delete mode 100644 src/System.Xml.XPath.XmlDocument/src/System/Xml/XmlDocumentXPathExtensions.cs diff --git a/src/System.Xml.XPath.XmlDocument/System.Xml.XPath.XmlDocument.sln b/src/System.Xml.XPath.XmlDocument/System.Xml.XPath.XmlDocument.sln deleted file mode 100644 index 860c43164ff7..000000000000 --- a/src/System.Xml.XPath.XmlDocument/System.Xml.XPath.XmlDocument.sln +++ /dev/null @@ -1,38 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XPath.XmlDocument", "src\System.Xml.XPath.XmlDocument.csproj", "{17CB2E3C-2904-4241-94DB-3894D24F35DA}" - ProjectSection(ProjectDependencies) = postProject - {1E9C3A08-4B4A-4991-9857-DA93BE791C83} = {1E9C3A08-4B4A-4991-9857-DA93BE791C83} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XPath.XmlDocument", "ref\System.Xml.XPath.XmlDocument.csproj", "{1E9C3A08-4B4A-4991-9857-DA93BE791C83}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E107E9C1-E893-4E87-987E-04EF0DCEAEFD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{2E666815-2EDB-464B-9DF6-380BF4789AD4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {17CB2E3C-2904-4241-94DB-3894D24F35DA}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU - {17CB2E3C-2904-4241-94DB-3894D24F35DA}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU - {17CB2E3C-2904-4241-94DB-3894D24F35DA}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU - {17CB2E3C-2904-4241-94DB-3894D24F35DA}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU - {1E9C3A08-4B4A-4991-9857-DA93BE791C83}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {1E9C3A08-4B4A-4991-9857-DA93BE791C83}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {1E9C3A08-4B4A-4991-9857-DA93BE791C83}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {1E9C3A08-4B4A-4991-9857-DA93BE791C83}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {17CB2E3C-2904-4241-94DB-3894D24F35DA} = {E107E9C1-E893-4E87-987E-04EF0DCEAEFD} - {1E9C3A08-4B4A-4991-9857-DA93BE791C83} = {2E666815-2EDB-464B-9DF6-380BF4789AD4} - EndGlobalSection -EndGlobal diff --git a/src/System.Xml.XPath.XmlDocument/dir.props b/src/System.Xml.XPath.XmlDocument/dir.props deleted file mode 100644 index faecd2d31064..000000000000 --- a/src/System.Xml.XPath.XmlDocument/dir.props +++ /dev/null @@ -1,8 +0,0 @@ - - - - 4.1.0.0 - MSFT - - - diff --git a/src/System.Xml.XPath.XmlDocument/ref/Configurations.props b/src/System.Xml.XPath.XmlDocument/ref/Configurations.props deleted file mode 100644 index 192309fce5c0..000000000000 --- a/src/System.Xml.XPath.XmlDocument/ref/Configurations.props +++ /dev/null @@ -1,10 +0,0 @@ - - - - - netcoreapp; - netfx; - uap; - - - \ No newline at end of file diff --git a/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.Manual.cs b/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.Manual.cs deleted file mode 100644 index 40c90c2b1afd..000000000000 --- a/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.Manual.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. -// ------------------------------------------------------------------------------ -// Changes to this file must follow the http://aka.ms/api-review process. -// ------------------------------------------------------------------------------ - -// These types as extension methods support a better contract factoring between XmlDocument and XPath. - -namespace System.Xml -{ - public static partial class XmlDocumentXPathExtensions - { - public static System.Xml.XmlNodeList SelectNodes(this XmlNode node, string xpath) { throw null; } - public static System.Xml.XmlNodeList SelectNodes(this XmlNode node, string xpath, System.Xml.XmlNamespaceManager nsmgr) { throw null; } - public static System.Xml.XmlNode SelectSingleNode(this XmlNode node, string xpath) { throw null; } - public static System.Xml.XmlNode SelectSingleNode(this XmlNode node, string xpath, System.Xml.XmlNamespaceManager nsmgr) { throw null; } - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlNode node) { throw null; } - public static System.Xml.XPath.IXPathNavigable ToXPathNavigable(this XmlNode node) { throw null; } - - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlDocument document) { throw null; } - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlDocument document, System.Xml.XmlNode node) { throw null; } - } -} diff --git a/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.csproj b/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.csproj deleted file mode 100644 index 7dea287f4b26..000000000000 --- a/src/System.Xml.XPath.XmlDocument/ref/System.Xml.XPath.XmlDocument.csproj +++ /dev/null @@ -1,27 +0,0 @@ - - - - - {1E9C3A08-4B4A-4991-9857-DA93BE791C83} - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/System.Xml.XPath.XmlDocument/src/Configurations.props b/src/System.Xml.XPath.XmlDocument/src/Configurations.props deleted file mode 100644 index eda43be76ab7..000000000000 --- a/src/System.Xml.XPath.XmlDocument/src/Configurations.props +++ /dev/null @@ -1,11 +0,0 @@ - - - - - uap-Windows_NT; - netfx-Windows_NT; - netcoreapp-Windows_NT; - netcoreapp-Unix; - - - \ No newline at end of file diff --git a/src/System.Xml.XPath.XmlDocument/src/System.Xml.XPath.XmlDocument.csproj b/src/System.Xml.XPath.XmlDocument/src/System.Xml.XPath.XmlDocument.csproj deleted file mode 100644 index 4612656d3aa0..000000000000 --- a/src/System.Xml.XPath.XmlDocument/src/System.Xml.XPath.XmlDocument.csproj +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {17CB2E3C-2904-4241-94DB-3894D24F35DA} - System.Xml.XPath.XmlDocument - true - - - - - - - - - - - - - - - - - - - - Common\System\NotImplemented.cs - - - - - - - - - - - \ No newline at end of file diff --git a/src/System.Xml.XPath.XmlDocument/src/System/Xml/XmlDocumentXPathExtensions.cs b/src/System.Xml.XPath.XmlDocument/src/System/Xml/XmlDocumentXPathExtensions.cs deleted file mode 100644 index 9322852835a7..000000000000 --- a/src/System.Xml.XPath.XmlDocument/src/System/Xml/XmlDocumentXPathExtensions.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace System.Xml -{ - public static partial class XmlDocumentXPathExtensions - { - public static System.Xml.XmlNodeList SelectNodes(this XmlNode node, string xpath) - { - return node.SelectNodes(xpath); - } - - public static System.Xml.XmlNodeList SelectNodes(this XmlNode node, string xpath, System.Xml.XmlNamespaceManager nsmgr) - { - return node.SelectNodes(xpath, nsmgr); - } - - public static System.Xml.XmlNode SelectSingleNode(this XmlNode node, string xpath) - { - return node.SelectSingleNode(xpath); - } - - public static System.Xml.XmlNode SelectSingleNode(this XmlNode node, string xpath, System.Xml.XmlNamespaceManager nsmgr) - { - return node.SelectSingleNode(xpath, nsmgr); - } - - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlNode node) - { - return node.CreateNavigator(); - } - - public static System.Xml.XPath.IXPathNavigable ToXPathNavigable(this XmlNode node) - { - return node.ToXPathNavigable(); - } - - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlDocument document) - { - return document.CreateNavigator(); - } - - public static System.Xml.XPath.XPathNavigator CreateNavigator(this XmlDocument document, System.Xml.XmlNode node) - { - return document.CreateNavigator(node); - } - } -} From 14eec2f6d8c67baa305ba9a67cd9c4e4da216fd9 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Thu, 13 Apr 2017 21:23:27 -0700 Subject: [PATCH 029/336] Update CoreFx, ProjectNTfs, ProjectNTfsTestILC to preview1-25214-01, beta-25214-00, beta-25214-00, respectively (#18362) --- dependencies.props | 14 +++++++------- external/test-runtime/optional.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dependencies.props b/dependencies.props index 41a38c75c16e..d9866e22d3c6 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,23 +9,23 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 + cf7c0960a7478e132dd1ccbed523635038a1546a df2ed4296d832554e58cd6ab8f69ea16f3a13fd1 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - adb21e771c22d9d771cbd18f6df2798c66217a86 - adb21e771c22d9d771cbd18f6df2798c66217a86 + cf7c0960a7478e132dd1ccbed523635038a1546a + cf7c0960a7478e132dd1ccbed523635038a1546a 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 - preview1-25213-06 + preview1-25214-01 preview1-25214-01 beta-25016-01 - beta-25213-00 - beta-25213-00 - 1.0.0-beta-25213-00 + beta-25214-00 + beta-25214-00 + 1.0.0-beta-25214-00 2.0.0-preview1-25213-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index 3778666aa2a3..7ab0c5c63935 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25213-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25214-00" } } } From b01c1fc3d419537a210ae4d420505ab3713d4981 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Thu, 13 Apr 2017 21:31:01 -0700 Subject: [PATCH 030/336] Delete dead files --- .../src/System.Runtime.Extensions.csproj | 11 ++++------- src/System.Runtime/src/System.Runtime.csproj | 4 ---- .../System/Runtime/CompilerServices/Attributes.cs | 10 ---------- .../Runtime/CompilerServices/SpecialNameAttribute.cs | 12 ------------ 4 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 src/System.Runtime/src/System/Runtime/CompilerServices/Attributes.cs delete mode 100644 src/System.Runtime/src/System/Runtime/CompilerServices/SpecialNameAttribute.cs diff --git a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj index 5859ba5de63f..eb3adc856249 100644 --- a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj +++ b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj @@ -19,19 +19,20 @@ - + + + - @@ -50,6 +51,7 @@ + @@ -251,11 +253,6 @@ Common\System\IO\PersistedFiles.Unix.cs - - - - - diff --git a/src/System.Runtime/src/System.Runtime.csproj b/src/System.Runtime/src/System.Runtime.csproj index e9fa28b33e76..2b8f6a551a1b 100644 --- a/src/System.Runtime/src/System.Runtime.csproj +++ b/src/System.Runtime/src/System.Runtime.csproj @@ -28,10 +28,6 @@ - - - - diff --git a/src/System.Runtime/src/System/Runtime/CompilerServices/Attributes.cs b/src/System.Runtime/src/System/Runtime/CompilerServices/Attributes.cs deleted file mode 100644 index 7f948b608a14..000000000000 --- a/src/System.Runtime/src/System/Runtime/CompilerServices/Attributes.cs +++ /dev/null @@ -1,10 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace System.Runtime.CompilerServices -{ - public static partial class IsConst - { - } -} diff --git a/src/System.Runtime/src/System/Runtime/CompilerServices/SpecialNameAttribute.cs b/src/System.Runtime/src/System/Runtime/CompilerServices/SpecialNameAttribute.cs deleted file mode 100644 index b18e62895fdf..000000000000 --- a/src/System.Runtime/src/System/Runtime/CompilerServices/SpecialNameAttribute.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace System.Runtime.CompilerServices -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Struct)] - public sealed class SpecialNameAttribute : Attribute - { - public SpecialNameAttribute() { } - } -} From 1498b50b24ef1e705bdbb61ae64d1866194a3ffa Mon Sep 17 00:00:00 2001 From: "FAREAST\\v-lijiay" Date: Fri, 14 Apr 2017 00:34:30 -0700 Subject: [PATCH 031/336] Add SkipOnTargetFramework for Issue 18313. --- .../tests/DataContractSerializer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index c7e003863caf..d344139b513a 100644 --- a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -2682,6 +2682,7 @@ static string GenerateaAndGetXPath(Type t, MemberInfo[] mi) } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework has an implementation and does not throw InvalidOperationException")] public static void XsdDataContractExporterTest() { XsdDataContractExporter exporter = new XsdDataContractExporter(); From 7436ea2382371ce6232c4193f0370ee53e6cae0c Mon Sep 17 00:00:00 2001 From: "FAREAST\\v-lijiay" Date: Fri, 14 Apr 2017 00:45:59 -0700 Subject: [PATCH 032/336] Add SkipOnTargetFramework for Issue 18273. --- .../tests/XmlDictionaryWriterTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs b/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs index 821865e33589..fc8bc68eeabf 100644 --- a/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs +++ b/src/System.Runtime.Serialization.Xml/tests/XmlDictionaryWriterTest.cs @@ -288,6 +288,7 @@ public static void IXmlTextReaderInitializerTest() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "is implemented on full framework")] public static void FragmentTest() { string rwTypeStr = "Text"; From 0d1d31badf062d4fd0146a9d844d3e380dfc4d57 Mon Sep 17 00:00:00 2001 From: v-lijiay Date: Sun, 9 Apr 2017 23:02:21 -0700 Subject: [PATCH 033/336] Remove ActiveIssue1050 from CanReadFromSameMemoryMappedPEReaderInParallel() in MetadataReaderTests.cs --- .../tests/Metadata/MetadataReaderTests.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs b/src/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs index e5488d57297c..5fed7a83d950 100644 --- a/src/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs +++ b/src/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs @@ -2636,7 +2636,6 @@ public void Handles() } [Fact] - [ActiveIssue(1050)] public void CanReadFromSameMemoryMappedPEReaderInParallel() { // See http://roslyn.codeplex.com/workitem/299 From ecc9dbc539e82ab1df85cef512551c6d1b7fa0ba Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 14 Apr 2017 02:26:46 -0700 Subject: [PATCH 034/336] Update CoreClr to preview1-25214-02 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index d9866e22d3c6..2bc4040cfb8d 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> cf7c0960a7478e132dd1ccbed523635038a1546a - df2ed4296d832554e58cd6ab8f69ea16f3a13fd1 + 761265c77396219503b789be9fad1616180a2aea 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 cf7c0960a7478e132dd1ccbed523635038a1546a cf7c0960a7478e132dd1ccbed523635038a1546a @@ -21,7 +21,7 @@ preview1-25214-01 - preview1-25214-01 + preview1-25214-02 beta-25016-01 beta-25214-00 beta-25214-00 From 6317e53b89680d83747d789c354bb1acda011758 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 14 Apr 2017 04:39:06 -0700 Subject: [PATCH 035/336] System.Runtime.Tests Uap-api work... (#18355) * System.Runtime.Tests Uap-api work... Mark the PlatformNotSupported ones as Skip. De-theorize GetEnumValues() test to work around https://github.com/dotnet/corert/issues/3328 * Added issue comment. --- src/System.Reflection/tests/AssemblyTests.cs | 3 ++ .../tests/ManifestResourceInfoTests.cs | 3 ++ src/System.Reflection/tests/TypeInfoTests.cs | 28 +++++++++++++++---- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/System.Reflection/tests/AssemblyTests.cs b/src/System.Reflection/tests/AssemblyTests.cs index 4e226ed43ba5..0f80d3e7def1 100644 --- a/src/System.Reflection/tests/AssemblyTests.cs +++ b/src/System.Reflection/tests/AssemblyTests.cs @@ -207,12 +207,14 @@ public void Location_ExecutingAssembly_IsNotNull() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "CodeBase is not supported on UapAot")] public void CodeBase() { Assert.NotEmpty(Helpers.ExecutingAssembly.CodeBase); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "ImageRuntimeVersion is not supported on UapAot.")] public void ImageRuntimeVersion() { Assert.NotEmpty(Helpers.ExecutingAssembly.ImageRuntimeVersion); @@ -263,6 +265,7 @@ public void CreateQualifiedName() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "GetReferencedAssemblies is not supported on UapAot.")] public void GetReferencedAssemblies() { // It is too brittle to depend on the assembly references so we just call the method and check that it does not throw. diff --git a/src/System.Reflection/tests/ManifestResourceInfoTests.cs b/src/System.Reflection/tests/ManifestResourceInfoTests.cs index 1c7c84653111..4e5bf32809a1 100644 --- a/src/System.Reflection/tests/ManifestResourceInfoTests.cs +++ b/src/System.Reflection/tests/ManifestResourceInfoTests.cs @@ -9,6 +9,7 @@ namespace System.Reflection.Tests public class ManifestResourceInfoTests { [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetManifestResourceInfo() not supported on UapAot")] public void FileName() { Assembly assembly = typeof(ManifestResourceInfoTests).GetTypeInfo().Assembly; @@ -17,6 +18,7 @@ public void FileName() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetManifestResourceInfo() not supported on UapAot")] public void ReferencedAssembly() { Assembly assembly = typeof(ManifestResourceInfoTests).GetTypeInfo().Assembly; @@ -25,6 +27,7 @@ public void ReferencedAssembly() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetManifestResourceInfo() not supported on UapAot")] public void ResourceLocation() { Assembly assembly = typeof(ManifestResourceInfoTests).GetTypeInfo().Assembly; diff --git a/src/System.Reflection/tests/TypeInfoTests.cs b/src/System.Reflection/tests/TypeInfoTests.cs index da5916e9e875..e0ff180c597d 100644 --- a/src/System.Reflection/tests/TypeInfoTests.cs +++ b/src/System.Reflection/tests/TypeInfoTests.cs @@ -425,10 +425,19 @@ public void GetEnumUnderlyingType_TypeNotEnum_ThrowsArgumentException() Assert.Throws(() => typeof(NonGenericClassWithNoInterfaces).GetTypeInfo().GetEnumUnderlyingType()); } - [Theory] - [InlineData(typeof(IntEnum), new IntEnum[] { (IntEnum)1, (IntEnum)2, (IntEnum)10, (IntEnum)18, (IntEnum)45 })] - [InlineData(typeof(UIntEnum), new UIntEnum[] { (UIntEnum)1, (UIntEnum)10 })] - public static void GetEnumValues(Type enumType, Array expected) + [Fact] + public static void GetEnumValues_Int() + { + GetEnumValues(typeof(IntEnum), new IntEnum[] { (IntEnum)1, (IntEnum)2, (IntEnum)10, (IntEnum)18, (IntEnum)45 }); + } + + [Fact] + public static void GetEnumValues_UInt() + { + GetEnumValues(typeof(UIntEnum), new UIntEnum[] { (UIntEnum)1, (UIntEnum)10 }); + } + + private static void GetEnumValues(Type enumType, Array expected) { Assert.Equal(expected, enumType.GetTypeInfo().GetEnumValues()); } @@ -1008,7 +1017,6 @@ public void MakeArrayType(Type type, Type expected) } [Theory] - [InlineData(typeof(string), 1)] [InlineData(typeof(int), 2)] [InlineData(typeof(char*), 3)] [InlineData(typeof(int), 3)] @@ -1019,6 +1027,16 @@ public void MakeArrayType_Int(Type type, int rank) Assert.Equal(rank, arrayType.GetArrayRank()); } + [Theory] + [InlineData(typeof(string))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Multidim arrays of rank 1 not supported on UapAot: https://github.com/dotnet/corert/issues/3331")] + public void MakeArrayType_IntRank1(Type type) + { + Type arrayType = type.GetType().MakeArrayType(1); + Assert.True(arrayType.IsArray); + Assert.Equal(1, arrayType.GetArrayRank()); + } + [Theory] [InlineData(typeof(int))] [InlineData(typeof(string))] From aa32ba266008803174f784f2c2f5996f555c6bf7 Mon Sep 17 00:00:00 2001 From: Eric Mellino Date: Fri, 14 Apr 2017 05:05:13 -0700 Subject: [PATCH 036/336] Run one iteration of performance tests in Outerloop runs (#18243) * Run one iteration of performance tests in Outerloop runs This will give us extra assurance that the performance tests do not fail. * Fix System.IO.Pipes.Performance.Tests configuration. * Disable Pipes performance test on Unix, see issue 18290. --- Tools-Override/tests.targets | 6 +++++- .../tests/Performance/Configurations.props | 8 ++++++++ src/System.IO.Pipes/tests/Performance/Perf.PipeTest.cs | 1 + .../Performance/System.IO.Pipes.Performance.Tests.csproj | 3 --- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 src/System.IO.Pipes/tests/Performance/Configurations.props diff --git a/Tools-Override/tests.targets b/Tools-Override/tests.targets index 1229e47f30e4..d61bf1177b5c 100644 --- a/Tools-Override/tests.targets +++ b/Tools-Override/tests.targets @@ -51,7 +51,7 @@ $(XunitOptions) -noappdomain $(XunitOptions) -xml $(XunitResultsFileName) - $(XunitOptions) -notrait Benchmark=true + $(XunitOptions) -notrait Benchmark=true $(XunitOptions) -redirectoutput $(XunitOptions) -notrait category=non$(_bc_TargetGroup)tests @@ -278,9 +278,13 @@ + + + + diff --git a/src/System.IO.Pipes/tests/Performance/Configurations.props b/src/System.IO.Pipes/tests/Performance/Configurations.props new file mode 100644 index 000000000000..c398e42e8994 --- /dev/null +++ b/src/System.IO.Pipes/tests/Performance/Configurations.props @@ -0,0 +1,8 @@ + + + + + netstandard; + + + \ No newline at end of file diff --git a/src/System.IO.Pipes/tests/Performance/Perf.PipeTest.cs b/src/System.IO.Pipes/tests/Performance/Perf.PipeTest.cs index 8d9771d71f72..e2d2ffd059be 100644 --- a/src/System.IO.Pipes/tests/Performance/Perf.PipeTest.cs +++ b/src/System.IO.Pipes/tests/Performance/Perf.PipeTest.cs @@ -12,6 +12,7 @@ public abstract class Perf_PipeTest : PipeTestBase { [Benchmark] [InlineData(1000000)] + [ActiveIssue(18290, TestPlatforms.AnyUnix)] public async Task ReadWrite(int size) { Random rand = new Random(314); diff --git a/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj b/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj index 98aa58b5f36c..30fb20464a1a 100644 --- a/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj +++ b/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj @@ -1,8 +1,5 @@  - - Windows_Debug - true From 34badcecfab34019c9e1548ca110d8e9bd5fe18e Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Fri, 14 Apr 2017 19:18:39 +0700 Subject: [PATCH 037/336] Clean up System.Diagnostics.ProcessModule test --- src/System.Diagnostics.Process/tests/ProcessModuleTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs b/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs index b17eaba271f2..aeac8fb1fccb 100644 --- a/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs @@ -47,7 +47,8 @@ public void TestModulesContainsUnixNativeLibs() [Fact] public void Modules_GetMultipleTimes_ReturnsSameInstance() { - Assert.Same(_process.Modules, _process.Modules); + Process currentProcess = Process.GetCurrentProcess(); + Assert.Same(currentProcess.Modules, currentProcess.Modules); } [Fact] From e226177ba88703f42bd540b0b5fb4e0276a03b64 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 14 Apr 2017 06:18:00 -0700 Subject: [PATCH 038/336] Update Standard to preview1-25214-01 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 2bc4040cfb8d..b5dc583148dd 100644 --- a/dependencies.props +++ b/dependencies.props @@ -15,7 +15,7 @@ cf7c0960a7478e132dd1ccbed523635038a1546a cf7c0960a7478e132dd1ccbed523635038a1546a 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 8ee251d0e0c39d6681c04b37ca10efdfaa4ff9f8 + 7f4aa832af1fb686065b4bd1a5bc3df35bf81e15 @@ -26,7 +26,7 @@ beta-25214-00 beta-25214-00 1.0.0-beta-25214-00 - 2.0.0-preview1-25213-01 + 2.0.0-preview1-25214-01 NETStandard.Library 4.4.0-beta-25007-02 From b4cf9fab993e65cb5966335a8b36bc097ee60fac Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 14 Apr 2017 06:49:03 -0700 Subject: [PATCH 039/336] Fix 28 System.Reflection.TypeExtensions.Test failures on Uap AOT (#18378) - Delete test that depends on names of internal Reflection implementation types. - You do NOT get to do that. - Stop using types you don't own (especially their internals) as test data. --- .../tests/EventInfoTests.cs | 11 - .../tests/TypeTests.cs | 301 ++++++++++-------- 2 files changed, 173 insertions(+), 139 deletions(-) diff --git a/src/System.Reflection.TypeExtensions/tests/EventInfoTests.cs b/src/System.Reflection.TypeExtensions/tests/EventInfoTests.cs index 990b1143bcb3..ac81158d0071 100644 --- a/src/System.Reflection.TypeExtensions/tests/EventInfoTests.cs +++ b/src/System.Reflection.TypeExtensions/tests/EventInfoTests.cs @@ -152,17 +152,6 @@ public void GetRemoveMethod(string name, string expectedToString, bool nonPublic Assert.Equal(expectedToString, method.ToString()); } - [Theory] - [InlineData(nameof(EI_Class.PublicEvent))] - [InlineData("ProtectedEvent")] - [InlineData("PrivateEvent")] - [InlineData(nameof(EI_Class.InternalEvent))] - public void GetType_FullName(string name) - { - EventInfo eventInfo = Helpers.GetEvent(typeof(EI_Class), name); - Assert.Equal("System.Reflection.RuntimeEventInfo", eventInfo.GetType().FullName); - } - [Theory] [InlineData("PublicEvent")] [InlineData("ProtectedEvent")] diff --git a/src/System.Reflection.TypeExtensions/tests/TypeTests.cs b/src/System.Reflection.TypeExtensions/tests/TypeTests.cs index db579a196cf3..e436a7f3be42 100644 --- a/src/System.Reflection.TypeExtensions/tests/TypeTests.cs +++ b/src/System.Reflection.TypeExtensions/tests/TypeTests.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Linq; +using System.Globalization; +using System.Runtime.CompilerServices; using Xunit; namespace System.Reflection.Tests @@ -244,86 +246,86 @@ public static IEnumerable GetMethods_TestData() yield return new object[] { typeof(GenericClassWithInterface), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance, new string[] { "ReturnAndSetFieldZero", "GenericMethod" } }; yield return new object[] { typeof(GenericClassWithVarArgMethod), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance, new string[] { "get_publicField", "set_publicField", "ReturnAndSetField" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "GetType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "GetType" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode" } }; - - yield return new object[] { typeof(int), BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "GetType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "GetType" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode" } }; - - yield return new object[] { typeof(int), BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - - yield return new object[] { typeof(int), BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - - yield return new object[] { typeof(int), BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - - yield return new object[] { typeof(int), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; - - yield return new object[] { typeof(int), BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; - yield return new object[] { typeof(int), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - yield return new object[] { typeof(int), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; - - yield return new object[] { typeof(int), BindingFlags.FlattenHierarchy, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "GetType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "GetType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "GetType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "GetType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic, new string[] { "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType", "GetType", "Finalize", "MemberwiseClone" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + yield return new object[] { typeof(Int32Impersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "CompareTo", "CompareTo", "Equals", "Equals", "GetHashCode", "ToString", "ToString", "ToString", "ToString", "Parse", "Parse", "Parse", "Parse", "TryParse", "TryParse", "GetTypeCode", "System.IConvertible.ToBoolean", "System.IConvertible.ToChar", "System.IConvertible.ToSByte", "System.IConvertible.ToByte", "System.IConvertible.ToInt16", "System.IConvertible.ToUInt16", "System.IConvertible.ToInt32", "System.IConvertible.ToUInt32", "System.IConvertible.ToInt64", "System.IConvertible.ToUInt64", "System.IConvertible.ToSingle", "System.IConvertible.ToDouble", "System.IConvertible.ToDecimal", "System.IConvertible.ToDateTime", "System.IConvertible.ToType" } }; + + yield return new object[] { typeof(Int32Impersonator), BindingFlags.FlattenHierarchy, new string[0] }; } [Theory] @@ -349,66 +351,66 @@ public static IEnumerable GetProperties_TestData() yield return new object[] { typeof(GenericClassWithVarArgMethod<>), DefaultBindingFlags, new string[] { "publicField" } }; yield return new object[] { typeof(ClassWithVarArgMethod), DefaultBindingFlags, new string[] { "publicField" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.Public | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Public | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static, new string[] { "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic, new string[] { "FirstChar" } }; - yield return new object[] { typeof(string), BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic, new string[0] }; - yield return new object[] { typeof(string), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.IgnoreCase | BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new string[] { "FirstChar", "Chars", "Length" } }; - yield return new object[] { typeof(string), BindingFlags.FlattenHierarchy, new string[0] }; + yield return new object[] { typeof(StringImpersonator), BindingFlags.FlattenHierarchy, new string[0] }; } [Theory] @@ -963,6 +965,49 @@ internal class TI_GenericSubSubClass : TI_GenericSubClass { } internal class TI_GenericSubClassWithConstraints where T : TI_GenericSubClassWithInterface, TI_Interface1, TI_Interface2 { } + internal class StringImpersonator + { + [IndexerName("Chars")] + public char this[int index] { get { throw null; } } + public int Length { get { throw null; } } + internal char FirstChar { get { throw null; } } + } + + internal struct Int32Impersonator : IComparable, IFormattable, IConvertible, IComparable, IEquatable + { + public int CompareTo(object value) { throw null; } + public int CompareTo(int value) { throw null; } + public override bool Equals(object obj) { throw null; } + public bool Equals(Int32 obj) { throw null; } + public override int GetHashCode() { throw null; } + public override string ToString() { throw null; } + public string ToString(string format) { throw null; } + public string ToString(IFormatProvider provider) { throw null; } + public string ToString(string format, IFormatProvider provider) { throw null; } + public static int Parse(string s) { throw null; } + public static int Parse(string s, NumberStyles style) { throw null; } + public static int Parse(string s, IFormatProvider provider) { throw null; } + public static int Parse(string s, NumberStyles style, IFormatProvider provider) { throw null; } + public static bool TryParse(string s, out Int32 result) { throw null; } + public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out Int32 result) { throw null; } + public TypeCode GetTypeCode() { throw null; } + bool IConvertible.ToBoolean(IFormatProvider provider) { throw null; } + char IConvertible.ToChar(IFormatProvider provider) { throw null; } + sbyte IConvertible.ToSByte(IFormatProvider provider) { throw null; } + byte IConvertible.ToByte(IFormatProvider provider) { throw null; } + short IConvertible.ToInt16(IFormatProvider provider) { throw null; } + ushort IConvertible.ToUInt16(IFormatProvider provider) { throw null; } + int IConvertible.ToInt32(IFormatProvider provider) { throw null; } + uint IConvertible.ToUInt32(IFormatProvider provider) { throw null; } + long IConvertible.ToInt64(IFormatProvider provider) { throw null; } + ulong IConvertible.ToUInt64(IFormatProvider provider) { throw null; } + float IConvertible.ToSingle(IFormatProvider provider) { throw null; } + double IConvertible.ToDouble(IFormatProvider provider) { throw null; } + Decimal IConvertible.ToDecimal(IFormatProvider provider) { throw null; } + DateTime IConvertible.ToDateTime(IFormatProvider provider) { throw null; } + object IConvertible.ToType(Type type, IFormatProvider provider) { throw null; } + } + namespace CustomNamespace { internal abstract class TI_AbstractBaseClass { } From 1f3b0bd0196615921da0fc1683fae0d919cc22b3 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 14 Apr 2017 07:19:18 -0700 Subject: [PATCH 040/336] Update CoreFx to preview1-25214-02 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index b5dc583148dd..9c64fbf3e126 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,7 +9,7 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - cf7c0960a7478e132dd1ccbed523635038a1546a + 253c141d4d99cf88ad8b2a8f56b75b822f29edb4 761265c77396219503b789be9fad1616180a2aea 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 cf7c0960a7478e132dd1ccbed523635038a1546a @@ -20,7 +20,7 @@ - preview1-25214-01 + preview1-25214-02 preview1-25214-02 beta-25016-01 beta-25214-00 From 50e9ebc3217b1d3d33de63edb1be8b0ff2c04a93 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 14 Apr 2017 11:33:29 -0400 Subject: [PATCH 041/336] Fix very long running Sockets test This one test is taking ~14 minutes on some distros. Ugh. --- src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs index e7c9dc8ad94a..9df134ba509c 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs @@ -703,9 +703,8 @@ await Task.WhenAll( client.SendBufferSize = 0; server.ReceiveBufferSize = 0; - var sendBuffer = new byte[5000000]; + var sendBuffer = new byte[10000]; Task sendTask = SendAsync(client, new ArraySegment(sendBuffer)); - Assert.False(sendTask.IsCompleted); int totalReceived = 0; var receiveBuffer = new ArraySegment(new byte[4096]); From 94a3b922d2b58ad96c433eb520126e5de10d5e3c Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Fri, 14 Apr 2017 09:11:28 -0700 Subject: [PATCH 042/336] Remove unnecessary pinvoke suppressions --- .../Windows/advapi32/Interop.ImpersonateNamedPipeClient.cs | 2 -- .../Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs | 3 --- .../src/PinvokeAnalyzerExceptionList.analyzerdata | 3 ++- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Common/src/Interop/Windows/advapi32/Interop.ImpersonateNamedPipeClient.cs b/src/Common/src/Interop/Windows/advapi32/Interop.ImpersonateNamedPipeClient.cs index 6a49a493ba0f..992f6e10711e 100644 --- a/src/Common/src/Interop/Windows/advapi32/Interop.ImpersonateNamedPipeClient.cs +++ b/src/Common/src/Interop/Windows/advapi32/Interop.ImpersonateNamedPipeClient.cs @@ -10,10 +10,8 @@ internal static partial class Interop { internal static partial class Advapi32 { -#pragma warning disable BCL0015 [DllImport(Interop.Libraries.Advapi32, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool ImpersonateNamedPipeClient(SafePipeHandle hNamedPipe); -#pragma warning restore BCL0015 } } diff --git a/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs b/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs index f61435ca2321..d7e8a9fd5b61 100644 --- a/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs +++ b/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs @@ -21,15 +21,12 @@ private static extern int SHGetKnownFolderPath_ShellFolders( private static bool s_skipShellFolders; -// Disabling the warning about availability. -#pragma warning disable BCL0015 [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, SetLastError = false, BestFitMapping = false, ExactSpelling = true, EntryPoint = "SHGetKnownFolderPath")] private static extern int SHGetKnownFolderPath_Shell32( [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out string ppszPath); -#pragma warning restore BCL0015 internal static int SHGetKnownFolderPath( Guid rfid, diff --git a/src/System.IO.Pipes/src/PinvokeAnalyzerExceptionList.analyzerdata b/src/System.IO.Pipes/src/PinvokeAnalyzerExceptionList.analyzerdata index 5377d8cf509e..096979fa7dac 100644 --- a/src/System.IO.Pipes/src/PinvokeAnalyzerExceptionList.analyzerdata +++ b/src/System.IO.Pipes/src/PinvokeAnalyzerExceptionList.analyzerdata @@ -1,3 +1,4 @@ +advapi32.dll!ImpersonateNamedPipeClient advapi32.dll!RevertToSelf kernel32.dll!ConnectNamedPipe kernel32.dll!CreateFileW @@ -7,4 +8,4 @@ kernel32.dll!DisconnectNamedPipe kernel32.dll!GetNamedPipeHandleStateW kernel32.dll!GetNamedPipeInfo kernel32.dll!SetNamedPipeHandleState -kernel32.dll!WaitNamedPipeW +kernel32.dll!WaitNamedPipeW \ No newline at end of file From e665135189d0e137f4fe8f5005201d8ba84b7603 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 14 Apr 2017 09:17:52 -0700 Subject: [PATCH 043/336] Enable authenticode signing for libraries with open key --- Tools-Override/sign.targets | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Tools-Override/sign.targets b/Tools-Override/sign.targets index 981366b97954..0ac5cd276310 100644 --- a/Tools-Override/sign.targets +++ b/Tools-Override/sign.targets @@ -33,6 +33,9 @@ true true + + + false oss + + false + false + false + true @@ -52,7 +61,7 @@ Date: Fri, 14 Apr 2017 12:41:06 -0500 Subject: [PATCH 044/336] Fix Fedora issue with gethostbyname (#18170) Fix Fedora assert issue with gethostbyname --- .../System/Net/Sockets/SocketErrorPal.Unix.cs | 16 ++++++++++++---- src/Native/Unix/System.Native/pal_networking.cpp | 8 ++++---- .../src/System/Net/SocketException.Unix.cs | 16 +++++++++++++--- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/Common/src/System/Net/Sockets/SocketErrorPal.Unix.cs b/src/Common/src/System/Net/Sockets/SocketErrorPal.Unix.cs index 4d4910349654..f155615bd850 100644 --- a/src/Common/src/System/Net/Sockets/SocketErrorPal.Unix.cs +++ b/src/Common/src/System/Net/Sockets/SocketErrorPal.Unix.cs @@ -138,9 +138,17 @@ internal static SocketError GetSocketErrorForNativeError(Interop.Error errno) internal static Interop.Error GetNativeErrorForSocketError(SocketError error) { Interop.Error errno; - return s_socketErrorToNativeError.TryGetValue(error, out errno) ? - errno : - (Interop.Error)(int)error; // pass through the SocketError's value, as it at least retains some useful info - } + if (!TryGetNativeErrorForSocketError(error, out errno)) + { + // Use the SocketError's value, as it at least retains some useful info + errno = (Interop.Error)(int)error; + } + return errno; + } + + internal static bool TryGetNativeErrorForSocketError(SocketError error, out Interop.Error errno) + { + return s_socketErrorToNativeError.TryGetValue(error, out errno); + } } } diff --git a/src/Native/Unix/System.Native/pal_networking.cpp b/src/Native/Unix/System.Native/pal_networking.cpp index 30f95671a609..295bd3436192 100644 --- a/src/Native/Unix/System.Native/pal_networking.cpp +++ b/src/Native/Unix/System.Native/pal_networking.cpp @@ -554,7 +554,7 @@ static int GetHostByNameHelper(const uint8_t* hostname, hostent** entry) hostent* result = reinterpret_cast(buffer); char* scratch = reinterpret_cast(&buffer[sizeof(hostent)]); - int getHostErrno; + int getHostErrno = 0; int err = gethostbyname_r(reinterpret_cast(hostname), result, scratch, scratchLen, entry, &getHostErrno); if (!err && *entry != nullptr) { @@ -576,7 +576,7 @@ static int GetHostByNameHelper(const uint8_t* hostname, hostent** entry) { free(buffer); *entry = nullptr; - return err ? err : HOST_NOT_FOUND; + return getHostErrno ? getHostErrno : HOST_NOT_FOUND; } } } @@ -633,7 +633,7 @@ static int GetHostByAddrHelper(const uint8_t* addr, const socklen_t addrLen, int hostent* result = reinterpret_cast(buffer); char* scratch = reinterpret_cast(&buffer[sizeof(hostent)]); - int getHostErrno; + int getHostErrno = 0; int err = gethostbyaddr_r(addr, addrLen, type, result, scratch, scratchLen, entry, &getHostErrno); if (!err && *entry != nullptr) { @@ -655,7 +655,7 @@ static int GetHostByAddrHelper(const uint8_t* addr, const socklen_t addrLen, int { free(buffer); *entry = nullptr; - return err ? err : HOST_NOT_FOUND; + return getHostErrno ? getHostErrno : HOST_NOT_FOUND; } } } diff --git a/src/System.Net.Primitives/src/System/Net/SocketException.Unix.cs b/src/System.Net.Primitives/src/System/Net/SocketException.Unix.cs index 312ff46e5bb6..fc5ca779598c 100644 --- a/src/System.Net.Primitives/src/System/Net/SocketException.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/SocketException.Unix.cs @@ -25,9 +25,19 @@ private SocketException(Interop.ErrorInfo error) : this(SocketErrorPal.GetSocket private static int GetNativeErrorForSocketError(SocketError error) { - return error != SocketError.SocketError ? - SocketErrorPal.GetNativeErrorForSocketError(error).Info().RawErrno : - (int)error; + int nativeErr = (int)error; + if (error != SocketError.SocketError) + { + Interop.Error interopErr; + + // If an interop error was not found, then don't invoke Info().RawErrno as that will fail with assert. + if (SocketErrorPal.TryGetNativeErrorForSocketError(error, out interopErr)) + { + nativeErr = interopErr.Info().RawErrno; + } + } + + return nativeErr; } } } From b07e64456aeaf311eac7b59cb04e7275d756e1ac Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 14 Apr 2017 12:06:42 -0400 Subject: [PATCH 045/336] Fix zero-length async receives on macOS macOS appears to special-case a zero-length non-blocking receive call to complete successfully immediately even if there's no data available. This breaks a commonly used pattern that works on both Windows and Linux of using a zero-length ReceiveAsync to be asynchronously notified of data being available. As a fix, we special-case a zero-length ReceiveAsync to check whether any data is available as a stand-in for a receive, simulating EAGAIN if no data is currently available. --- .../src/System/Net/Sockets/SocketPal.Unix.cs | 26 +++++++++++++++++++ .../tests/FunctionalTests/SendReceive.cs | 3 +-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs b/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs index 69793d5e5e3d..ec966073dfa4 100644 --- a/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs +++ b/src/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Unix.cs @@ -575,13 +575,39 @@ public static unsafe bool TryCompleteReceiveFrom(SafeCloseSocket socket, byte[] { Interop.Error errno; int received; + if (buffers != null) { + // Receive into a set of buffers Debug.Assert(buffer == null); received = Receive(socket, flags, buffers, socketAddress, ref socketAddressLen, out receivedFlags, out errno); } + else if (count == 0) + { + // Special case a receive of 0 bytes into a single buffer. A common pattern is to ReceiveAsync 0 bytes in order + // to be asynchronously notified when data is available, without needing to dedicate a buffer. Some platforms (e.g. macOS), + // however, special-case a receive of 0 to always succeed immediately even if data isn't available. As such, we treat 0 + // specially, checking whether any bytes are available rather than doing an actual receive. + receivedFlags = SocketFlags.None; + received = -1; + + int available = 0; + errno = Interop.Sys.GetBytesAvailable(socket, &available); + if (errno == Interop.Error.SUCCESS) + { + if (available > 0) + { + bytesReceived = 0; + errorCode = SocketError.Success; + return true; + } + + errno = Interop.Error.EAGAIN; // simulate a receive with no data available + } + } else { + // Receive > 0 bytes into a single buffer received = Receive(socket, flags, buffer, offset, count, socketAddress, ref socketAddressLen, out receivedFlags, out errno); } diff --git a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs index 9df134ba509c..a414ef5c7a07 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs @@ -605,7 +605,6 @@ public void SendRecvPollSync_TcpListener_Socket(IPAddress listenAt, bool pollBef } } - [ActiveIssue(13778, TestPlatforms.OSX)] [Fact] public async Task SendRecv_0ByteReceive_Success() { @@ -635,7 +634,7 @@ await Task.WhenAll( // The client should now wake up, getting 0 bytes with 1 byte available. Assert.Equal(0, await receive); - Assert.Equal(1, client.Available); // Due to #13778, this sometimes fails on macOS + Assert.Equal(1, client.Available); // Receive that byte Assert.Equal(1, await ReceiveAsync(client, new ArraySegment(new byte[1]))); From 898bada6cc8417d7447ae22b9425e01684593171 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 14 Apr 2017 12:24:25 -0400 Subject: [PATCH 046/336] Augment SendRecv_0ByteReceive_Success test --- src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs index a414ef5c7a07..87c4b1a70f07 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/SendReceive.cs @@ -636,7 +636,11 @@ await Task.WhenAll( Assert.Equal(0, await receive); Assert.Equal(1, client.Available); - // Receive that byte + // We should be able to do another 0-byte receive that completes immediateliy + Assert.Equal(0, await ReceiveAsync(client, new ArraySegment(new byte[1], 0, 0))); + Assert.Equal(1, client.Available); + + // Then receive the byte Assert.Equal(1, await ReceiveAsync(client, new ArraySegment(new byte[1]))); Assert.Equal(0, client.Available); } From b930c1e98e0ae14aed06eab6624bbeaa4fe3e868 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 14 Apr 2017 10:43:46 -0700 Subject: [PATCH 047/336] Update CoreClr, CoreFx to preview1-25214-03, preview1-25214-03, respectively --- dependencies.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.props b/dependencies.props index 9c64fbf3e126..06c9300d7c20 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,8 +9,8 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 253c141d4d99cf88ad8b2a8f56b75b822f29edb4 - 761265c77396219503b789be9fad1616180a2aea + 344d7f54518693b73c16e19a6d6ebd29b928ecad + 344d7f54518693b73c16e19a6d6ebd29b928ecad 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 cf7c0960a7478e132dd1ccbed523635038a1546a cf7c0960a7478e132dd1ccbed523635038a1546a @@ -20,8 +20,8 @@ - preview1-25214-02 - preview1-25214-02 + preview1-25214-03 + preview1-25214-03 beta-25016-01 beta-25214-00 beta-25214-00 From 63f3f8c9be116c9969857b99e0b8b4eb5d234e60 Mon Sep 17 00:00:00 2001 From: Matt Galbraith Date: Mon, 10 Apr 2017 17:02:40 -0700 Subject: [PATCH 048/336] Add support for local Helix execution. Fixed issue with duplicated correlation payload while I was in the file. --- BuildToolsVersion.txt | 2 +- src/upload-tests.proj | 57 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index 3baa792c8488..97192b5bb9aa 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -1.0.27-prerelease-01512-01 +1.0.27-prerelease-01514-02 \ No newline at end of file diff --git a/src/upload-tests.proj b/src/upload-tests.proj index fe297a042b04..57827f69e416 100644 --- a/src/upload-tests.proj +++ b/src/upload-tests.proj @@ -2,12 +2,11 @@ - + + DefaultEndpointsProtocol=https;AccountName=$(CloudDropAccountName);AccountKey=$(CloudDropAccessToken);EndpointSuffix=core.windows.net DefaultEndpointsProtocol=https;AccountName=$(CloudResultsAccountName);AccountKey=$(CloudResultsAccessToken);EndpointSuffix=core.windows.net - + + + false + true + - true - + true + AnyOS.AnyCPU.$(ConfigurationGroup) $(TestWorkingDir)$(AnyOSPlatformConfig)/archive/ @@ -70,7 +75,7 @@ - + @@ -89,8 +94,7 @@ NOTE: It may be better to make this an error, but in the past we chose not to as this causes a build break when triggered, versus just no tests run. --> - - + RunTests.cmd %HELIX_CORRELATION_PAYLOAD% RunTests.sh $HELIX_CORRELATION_PAYLOAD @@ -98,7 +102,7 @@ %(Filename) $(TimeoutInSeconds) $(Platform)-$(ConfigurationGroup)/Tests/$([System.String]::Copy('%(RecursiveDir)').Replace('\', '/'))%(Filename)%(Extension) - + @@ -121,8 +125,37 @@ - + + + + - + + + + + + $(HelixLogFolder)$(TestListFilename) + + HelixLocalExecution + + + + + + + + + + + + + \ No newline at end of file From 06f3285955cf6fdb6bf41648b1fd52a88787f2e0 Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Fri, 14 Apr 2017 11:06:56 -0700 Subject: [PATCH 049/336] Fix netfx runtime facades bin placing (#18364) --- external/netfx-conflicts/netfx-conflicts.depproj | 1 + 1 file changed, 1 insertion(+) diff --git a/external/netfx-conflicts/netfx-conflicts.depproj b/external/netfx-conflicts/netfx-conflicts.depproj index 0b3b93558f08..9f6dc9985322 100644 --- a/external/netfx-conflicts/netfx-conflicts.depproj +++ b/external/netfx-conflicts/netfx-conflicts.depproj @@ -9,6 +9,7 @@ netstandard1.1;netstandard1.2;netstandard1.3 Reference None + false From 6080a385034c1aaea6c57b1cfcb05cc57552fd63 Mon Sep 17 00:00:00 2001 From: Mandar Sahasrabuddhe Date: Fri, 14 Apr 2017 23:39:20 +0530 Subject: [PATCH 050/336] Issue #15622 New overload Dictionary.Remove (#18109) * Issue #15622 New overload Dictionary.Remove --- .../ref/System.Collections.cs | 1 + .../Dictionary.Generic.Tests.netcoreapp.cs | 88 +++++++++++++++++++ .../tests/System.Collections.Tests.csproj | 3 +- 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs diff --git a/src/System.Collections/ref/System.Collections.cs b/src/System.Collections/ref/System.Collections.cs index 4b0599c1a43d..81db6619e614 100644 --- a/src/System.Collections/ref/System.Collections.cs +++ b/src/System.Collections/ref/System.Collections.cs @@ -94,6 +94,7 @@ public void Clear() { } public virtual void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } public virtual void OnDeserialization(object sender) { } public bool Remove(TKey key) { throw null; } + public bool Remove(TKey key, out TValue value) { throw null; } public bool TryAdd(TKey key, TValue value) { throw null; } void System.Collections.Generic.ICollection>.Add(System.Collections.Generic.KeyValuePair keyValuePair) { } bool System.Collections.Generic.ICollection>.Contains(System.Collections.Generic.KeyValuePair keyValuePair) { throw null; } diff --git a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs new file mode 100644 index 000000000000..991dc5b8aec3 --- /dev/null +++ b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Generic.Tests.netcoreapp.cs @@ -0,0 +1,88 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace System.Collections.Tests +{ + /// + /// Contains tests that ensure the correctness of the Dictionary class. + /// + public abstract partial class Dictionary_Generic_Tests : IDictionary_Generic_Tests + { + #region Remove(TKey) + + [Theory] + [MemberData(nameof(ValidCollectionSizes))] + public void Dictionary_Generic_RemoveKey_ValidKeyNotContainedInDictionary(int count) + { + Dictionary dictionary = (Dictionary)GenericIDictionaryFactory(count); + TValue value; + TKey missingKey = GetNewKey(dictionary); + + Assert.False(dictionary.Remove(missingKey, out value)); + Assert.Equal(count, dictionary.Count); + Assert.Equal(default(TValue), value); + } + + [Theory] + [MemberData(nameof(ValidCollectionSizes))] + public void Dictionary_Generic_RemoveKey_ValidKeyContainedInDictionary(int count) + { + Dictionary dictionary = (Dictionary)GenericIDictionaryFactory(count); + TKey missingKey = GetNewKey(dictionary); + TValue outValue; + TValue inValue = CreateTValue(count); + + dictionary.Add(missingKey, inValue); + Assert.True(dictionary.Remove(missingKey, out outValue)); + Assert.Equal(count, dictionary.Count); + Assert.Equal(inValue, outValue); + Assert.False(dictionary.TryGetValue(missingKey, out outValue)); + } + + [Theory] + [MemberData(nameof(ValidCollectionSizes))] + public void Dictionary_Generic_RemoveKey_DefaultKeyNotContainedInDictionary(int count) + { + Dictionary dictionary = (Dictionary)GenericIDictionaryFactory(count); + TValue outValue; + + if (DefaultValueAllowed) + { + TKey missingKey = default(TKey); + while (dictionary.ContainsKey(missingKey)) + dictionary.Remove(missingKey); + Assert.False(dictionary.Remove(missingKey, out outValue)); + Assert.Equal(default(TValue), outValue); + } + else + { + TValue initValue = CreateTValue(count); + outValue = initValue; + Assert.Throws(() => dictionary.Remove(default(TKey), out outValue)); + Assert.Equal(initValue, outValue); + } + } + + [Theory] + [MemberData(nameof(ValidCollectionSizes))] + public void Dictionary_Generic_RemoveKey_DefaultKeyContainedInDictionary(int count) + { + if (DefaultValueAllowed) + { + Dictionary dictionary = (Dictionary)(GenericIDictionaryFactory(count)); + TKey missingKey = default(TKey); + TValue value; + + dictionary.TryAdd(missingKey, default(TValue)); + Assert.True(dictionary.Remove(missingKey, out value)); + } + } + + #endregion + } +} diff --git a/src/System.Collections/tests/System.Collections.Tests.csproj b/src/System.Collections/tests/System.Collections.Tests.csproj index 4ba0a2c65044..d820abc79a0d 100644 --- a/src/System.Collections/tests/System.Collections.Tests.csproj +++ b/src/System.Collections/tests/System.Collections.Tests.csproj @@ -75,6 +75,7 @@ Common\System\Collections\DictionaryExtensions.cs + @@ -160,4 +161,4 @@ - + \ No newline at end of file From d0ac67a28a66f5f1017318e13129239c804d663e Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Fri, 14 Apr 2017 11:11:56 -0700 Subject: [PATCH 051/336] Add the URLs to allow constructing them from a given version Not really something our customers will do, but when dealing with dog food builds this is invaluable. --- Documentation/project-docs/dogfooding.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Documentation/project-docs/dogfooding.md b/Documentation/project-docs/dogfooding.md index 0cf4126e4f77..2ddef6448865 100644 --- a/Documentation/project-docs/dogfooding.md +++ b/Documentation/project-docs/dogfooding.md @@ -236,4 +236,22 @@ need to modify your .csproj to target netcoreapp2.0 and reference the nightly bu ``` -In a future update to Visual Studio, it will no longer be necessary to make this edit. \ No newline at end of file +In a future update to Visual Studio, it will no longer be necessary to make this edit. + +## Finding specific builds + +The URL scheme for the runtime is as follows: + +``` +https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/$version$/dotnet-win-x64.$version$.exe +https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/2.0.0-preview1-001915-00/dotnet-win-x64.2.0.0-preview1-001915-00.exe +``` + +The URL scheme for the SDK & CLI is as follows: + +``` +https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$version$/dotnet-dev-win-x86.$version$.exe +https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0-preview1-005791/dotnet-dev-win-x86.2.0.0-preview1-005791.exe +``` + + From 53ce7d9864e122562ad5cbadacf7fe20694e478e Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Fri, 14 Apr 2017 11:37:36 -0700 Subject: [PATCH 052/336] Remove reflection-based lightup S.R.M for netcoreapp (#18356) * Remove reflection-based lightup S.R.M for netcoreapp * Remove dependency on API sets --- ...Private.Reflection.Metadata.Ecma335.csproj | 4 +- .../src/System.Reflection.Metadata.csproj | 13 +- .../Utilities/EncodingHelper.netcoreapp.cs | 70 +++++ .../Utilities/FileStreamReadLightUp.cs | 122 ++------ .../FileStreamReadLightUp.netstandard1.1.cs | 141 +++++++++ .../Internal/Utilities/MemoryMapLightUp.cs | 252 +--------------- .../MemoryMapLightUp.netstandard1.1.cs | 272 ++++++++++++++++++ .../Utilities/AbstractMemoryBlockTests.cs | 20 +- 8 files changed, 532 insertions(+), 362 deletions(-) create mode 100644 src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs create mode 100644 src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs create mode 100644 src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs diff --git a/src/System.Private.Reflection.Metadata.Ecma335/src/System.Private.Reflection.Metadata.Ecma335.csproj b/src/System.Private.Reflection.Metadata.Ecma335/src/System.Private.Reflection.Metadata.Ecma335.csproj index 1051c16216f2..aa07bc3dd7ef 100644 --- a/src/System.Private.Reflection.Metadata.Ecma335/src/System.Private.Reflection.Metadata.Ecma335.csproj +++ b/src/System.Private.Reflection.Metadata.Ecma335/src/System.Private.Reflection.Metadata.Ecma335.csproj @@ -96,13 +96,13 @@ - + - + diff --git a/src/System.Reflection.Metadata/src/System.Reflection.Metadata.csproj b/src/System.Reflection.Metadata/src/System.Reflection.Metadata.csproj index 12399bc8d6b8..e8d0b189a2e2 100644 --- a/src/System.Reflection.Metadata/src/System.Reflection.Metadata.csproj +++ b/src/System.Reflection.Metadata/src/System.Reflection.Metadata.csproj @@ -96,14 +96,17 @@ - - + + + + - + - + + @@ -257,6 +260,8 @@ + + \ No newline at end of file diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs new file mode 100644 index 000000000000..593bc0557886 --- /dev/null +++ b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs @@ -0,0 +1,70 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Buffers; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection.Metadata; +using System.Runtime.InteropServices; +using System.Text; + +namespace System.Reflection.Internal +{ + /// + /// Provides helpers to decode strings from unmanaged memory to System.String while avoiding + /// intermediate allocation. + /// + internal static unsafe class EncodingHelper + { + public static string DecodeUtf8(byte* bytes, int byteCount, byte[] prefix, MetadataStringDecoder utf8Decoder) + { + Debug.Assert(utf8Decoder != null); + + if (prefix != null) + { + return DecodeUtf8Prefixed(bytes, byteCount, prefix, utf8Decoder); + } + + if (byteCount == 0) + { + return String.Empty; + } + + return utf8Decoder.GetString(bytes, byteCount); + } + + private static string DecodeUtf8Prefixed(byte* bytes, int byteCount, byte[] prefix, MetadataStringDecoder utf8Decoder) + { + Debug.Assert(utf8Decoder != null); + + int prefixedByteCount = byteCount + prefix.Length; + + if (prefixedByteCount == 0) + { + return String.Empty; + } + + byte[] buffer = ArrayPool.Shared.Rent(prefixedByteCount); + + prefix.CopyTo(buffer, 0); + Marshal.Copy((IntPtr)bytes, buffer, prefix.Length, byteCount); + + string result; + fixed (byte* prefixedBytes = &buffer[0]) + { + result = utf8Decoder.GetString(prefixedBytes, prefixedByteCount); + } + + ArrayPool.Shared.Return(buffer); + return result; + } + + // Test hook to force portable implementation and ensure light is functioning. + internal static bool TestOnly_LightUpEnabled + { + get { return true; } + set { } + } + } +} diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.cs b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.cs index 151150b0575a..2c1f10598d53 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.cs @@ -10,68 +10,20 @@ namespace System.Reflection.Internal { internal static class FileStreamReadLightUp { - internal static Lazy FileStreamType = new Lazy(() => - { - const string systemIOFileSystem = "System.IO.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken = b03f5f7f11d50a3a"; - const string mscorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; - - return LightUpHelper.GetType("System.IO.FileStream", systemIOFileSystem, mscorlib); - }); - - internal static Lazy SafeFileHandle = new Lazy(() => - { - return FileStreamType.Value.GetTypeInfo().GetDeclaredProperty("SafeFileHandle"); - }); - // internal for testing - internal static bool readFileCompatNotAvailable; - internal static bool readFileModernNotAvailable; - internal static bool safeFileHandleNotAvailable; + internal static bool readFileNotAvailable = Path.DirectorySeparatorChar != '\\'; // Available on Windows only + internal static bool safeFileHandleNotAvailable = false; - internal static bool IsFileStream(Stream stream) - { - if (FileStreamType.Value == null) - { - return false; - } - - var type = stream.GetType(); - return type == FileStreamType.Value || type.GetTypeInfo().IsSubclassOf(FileStreamType.Value); - } + internal static bool IsFileStream(Stream stream) => stream is FileStream; internal static SafeHandle GetSafeFileHandle(Stream stream) { - Debug.Assert(FileStreamType.IsValueCreated && FileStreamType.Value != null && IsFileStream(stream)); - - if (safeFileHandleNotAvailable) - { - return null; - } - - PropertyInfo safeFileHandleProperty = SafeFileHandle.Value; - if (safeFileHandleProperty == null) - { - safeFileHandleNotAvailable = true; - return null; - } - SafeHandle handle; try { - handle = (SafeHandle)safeFileHandleProperty.GetValue(stream); - } - catch (MemberAccessException) - { - safeFileHandleNotAvailable = true; - return null; - } - catch (InvalidOperationException) - { - // thrown when accessing unapproved API in a Windows Store app - safeFileHandleNotAvailable = true; - return null; + handle = ((FileStream)stream).SafeFileHandle; } - catch (TargetInvocationException) + catch { // Some FileStream implementations (e.g. IsolatedStorage) restrict access to the underlying handle by throwing // Tolerate it and fall back to slow path. @@ -90,7 +42,7 @@ internal static SafeHandle GetSafeFileHandle(Stream stream) internal static unsafe bool TryReadFile(Stream stream, byte* buffer, long start, int size) { - if (readFileModernNotAvailable && readFileCompatNotAvailable) + if (readFileNotAvailable) { return false; } @@ -104,29 +56,14 @@ internal static unsafe bool TryReadFile(Stream stream, byte* buffer, long start, bool result = false; int bytesRead = 0; - if (!readFileModernNotAvailable) + try { - try - { - result = NativeMethods.ReadFileModern(handle, buffer, size, out bytesRead, IntPtr.Zero); - } - catch - { - readFileModernNotAvailable = true; - } + result = ReadFile(handle, buffer, size, out bytesRead, IntPtr.Zero); } - - if (readFileModernNotAvailable) + catch { - try - { - result = NativeMethods.ReadFileCompat(handle, buffer, size, out bytesRead, IntPtr.Zero); - } - catch - { - readFileCompatNotAvailable = true; - return false; - } + readFileNotAvailable = true; + return false; } if (!result || bytesRead != size) @@ -142,33 +79,16 @@ internal static unsafe bool TryReadFile(Stream stream, byte* buffer, long start, return true; } - -// The library guards against unavailable entrypoints by using EntryPointNotFoundException. -#pragma warning disable BCL0015 // Diasable Pinvoke analyzer errors. - private static unsafe class NativeMethods - { - // API sets available on modern platforms: - [DllImport(@"api-ms-win-core-file-l1-1-0.dll", EntryPoint = "ReadFile", ExactSpelling = true, SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - internal static extern bool ReadFileModern( - SafeHandle fileHandle, - byte* buffer, - int byteCount, - out int bytesRead, - IntPtr overlapped - ); - - // older Windows systems: - [DllImport(@"kernel32.dll", EntryPoint = "ReadFile", ExactSpelling = true, SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - internal static extern bool ReadFileCompat( - SafeHandle fileHandle, - byte* buffer, - int byteCount, - out int bytesRead, - IntPtr overlapped - ); - } +#pragma warning disable BCL0015 // Disable Pinvoke analyzer errors. + [DllImport(@"kernel32.dll", EntryPoint = "ReadFile", ExactSpelling = true, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static unsafe extern bool ReadFile( + SafeHandle fileHandle, + byte* buffer, + int byteCount, + out int bytesRead, + IntPtr overlapped + ); #pragma warning restore BCL0015 } } diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs new file mode 100644 index 000000000000..1f37a16d4577 --- /dev/null +++ b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs @@ -0,0 +1,141 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; + +namespace System.Reflection.Internal +{ + internal static class FileStreamReadLightUp + { + internal static Lazy FileStreamType = new Lazy(() => + { + const string systemIOFileSystem = "System.IO.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken = b03f5f7f11d50a3a"; + const string mscorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; + + return LightUpHelper.GetType("System.IO.FileStream", systemIOFileSystem, mscorlib); + }); + + internal static Lazy SafeFileHandle = new Lazy(() => + { + return FileStreamType.Value.GetTypeInfo().GetDeclaredProperty("SafeFileHandle"); + }); + + // internal for testing + internal static bool readFileNotAvailable; + internal static bool safeFileHandleNotAvailable; + + internal static bool IsFileStream(Stream stream) + { + if (FileStreamType.Value == null) + { + return false; + } + + var type = stream.GetType(); + return type == FileStreamType.Value || type.GetTypeInfo().IsSubclassOf(FileStreamType.Value); + } + + internal static SafeHandle GetSafeFileHandle(Stream stream) + { + Debug.Assert(FileStreamType.IsValueCreated && FileStreamType.Value != null && IsFileStream(stream)); + + if (safeFileHandleNotAvailable) + { + return null; + } + + PropertyInfo safeFileHandleProperty = SafeFileHandle.Value; + if (safeFileHandleProperty == null) + { + safeFileHandleNotAvailable = true; + return null; + } + + SafeHandle handle; + try + { + handle = (SafeHandle)safeFileHandleProperty.GetValue(stream); + } + catch (MemberAccessException) + { + safeFileHandleNotAvailable = true; + return null; + } + catch (InvalidOperationException) + { + // thrown when accessing unapproved API in a Windows Store app + safeFileHandleNotAvailable = true; + return null; + } + catch (TargetInvocationException) + { + // Some FileStream implementations (e.g. IsolatedStorage) restrict access to the underlying handle by throwing + // Tolerate it and fall back to slow path. + return null; + } + + if (handle != null && handle.IsInvalid) + { + // Also allow for FileStream implementations that do return a non-null, but invalid underlying OS handle. + // This is how brokered files on WinRT will work. Fall back to slow path. + return null; + } + + return handle; + } + + internal static unsafe bool TryReadFile(Stream stream, byte* buffer, long start, int size) + { + if (readFileNotAvailable) + { + return false; + } + + SafeHandle handle = GetSafeFileHandle(stream); + if (handle == null) + { + return false; + } + + bool result = false; + int bytesRead = 0; + + try + { + result = ReadFile(handle, buffer, size, out bytesRead, IntPtr.Zero); + } + catch + { + readFileNotAvailable = true; + return false; + } + + if (!result || bytesRead != size) + { + // We used to throw here, but this is where we land if the FileStream was + // opened with useAsync: true, which is currently the default on .NET Core. + // Issue #987 filed to look in to how best to handle this, but in the meantime, + // we'll fall back to the slower code path just as in the case where the native + // API is unavailable in the current platform. + return false; + } + + return true; + } + +#pragma warning disable BCL0015 // Disable Pinvoke analyzer errors. + [DllImport(@"kernel32.dll", EntryPoint = "ReadFile", ExactSpelling = true, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static unsafe extern bool ReadFile( + SafeHandle fileHandle, + byte* buffer, + int byteCount, + out int bytesRead, + IntPtr overlapped + ); +#pragma warning restore BCL0015 + } +} diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.cs b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.cs index 92af82efa949..18002ad72f38 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.cs @@ -2,271 +2,49 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Diagnostics; using System.IO; -using System.Runtime.ExceptionServices; +using System.IO.MemoryMappedFiles; using System.Runtime.InteropServices; namespace System.Reflection.Internal { internal static class MemoryMapLightUp { - private static Type s_lazyMemoryMappedFileType; - private static Type s_lazyMemoryMappedViewAccessorType; - private static Type s_lazyMemoryMappedFileAccessType; - private static Type s_lazyMemoryMappedFileSecurityType; - private static Type s_lazyHandleInheritabilityType; - private static MethodInfo s_lazyCreateFromFile; - private static MethodInfo s_lazyCreateFromFileClassic; - private static MethodInfo s_lazyCreateViewAccessor; - private static PropertyInfo s_lazySafeMemoryMappedViewHandle; - private static PropertyInfo s_lazyPointerOffset; - private static FieldInfo s_lazyInternalViewField; - private static PropertyInfo s_lazyInternalPointerOffset; - - private static readonly object s_MemoryMappedFileAccess_Read = 1; - private static readonly object s_HandleInheritability_None = 0; - private static readonly object s_LongZero = (long)0; - private static readonly object s_True = true; - - private static bool? s_lazyIsAvailable; - - internal static bool IsAvailable - { - get - { - if (!s_lazyIsAvailable.HasValue) - { - s_lazyIsAvailable = TryLoadTypes(); - } - - return s_lazyIsAvailable.Value; - } - } - - private static bool TryLoadType(string typeName, string modernAssembly, string classicAssembly, out Type type) - { - type = LightUpHelper.GetType(typeName, modernAssembly, classicAssembly); - return type != null; - } - - private static bool TryLoadTypes() - { - const string systemIOMemoryMappedFiles = "System.IO.MemoryMappedFiles, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; - const string systemRuntimeHandles = "System.Runtime.Handles, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; - const string systemCore = "System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; - - TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFileSecurity", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileSecurityType); - - return FileStreamReadLightUp.FileStreamType.Value != null - && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFile", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileType) - && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedViewAccessor", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedViewAccessorType) - && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFileAccess", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileAccessType) - && TryLoadType("System.IO.HandleInheritability", systemRuntimeHandles, systemCore, out s_lazyHandleInheritabilityType) - && TryLoadMembers(); - } - - private static bool TryLoadMembers() - { - // .NET Core, .NET 4.6+ - s_lazyCreateFromFile = LightUpHelper.GetMethod( - s_lazyMemoryMappedFileType, - "CreateFromFile", - FileStreamReadLightUp.FileStreamType.Value, - typeof(string), - typeof(long), - s_lazyMemoryMappedFileAccessType, - s_lazyHandleInheritabilityType, - typeof(bool) - ); - - // .NET < 4.6 - if (s_lazyCreateFromFile == null) - { - if (s_lazyMemoryMappedFileSecurityType != null) - { - s_lazyCreateFromFileClassic = LightUpHelper.GetMethod( - s_lazyMemoryMappedFileType, - "CreateFromFile", - FileStreamReadLightUp.FileStreamType.Value, - typeof(string), - typeof(long), - s_lazyMemoryMappedFileAccessType, - s_lazyMemoryMappedFileSecurityType, - s_lazyHandleInheritabilityType, - typeof(bool)); - } - - if (s_lazyCreateFromFileClassic == null) - { - return false; - } - } - - s_lazyCreateViewAccessor = LightUpHelper.GetMethod( - s_lazyMemoryMappedFileType, - "CreateViewAccessor", - typeof(long), - typeof(long), - s_lazyMemoryMappedFileAccessType); - - if (s_lazyCreateViewAccessor == null) - { - return false; - } - - s_lazySafeMemoryMappedViewHandle = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredProperty("SafeMemoryMappedViewHandle"); - if (s_lazySafeMemoryMappedViewHandle == null) - { - return false; - } - - // .NET Core, .NET 4.5.1+ - s_lazyPointerOffset = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredProperty("PointerOffset"); - - // .NET < 4.5.1 - if (s_lazyPointerOffset == null) - { - s_lazyInternalViewField = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredField("m_view"); - if (s_lazyInternalViewField == null) - { - return false; - } - - s_lazyInternalPointerOffset = s_lazyInternalViewField.FieldType.GetTypeInfo().GetDeclaredProperty("PointerOffset"); - if (s_lazyInternalPointerOffset == null) - { - return false; - } - } - - return true; - } + internal static bool IsAvailable => true; internal static IDisposable CreateMemoryMap(Stream stream) { - Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); - - try - { - if (s_lazyCreateFromFile != null) - { - return (IDisposable)s_lazyCreateFromFile.Invoke(null, new object[6] - { - stream, // fileStream - null, // mapName - s_LongZero, // capacity - s_MemoryMappedFileAccess_Read, // access - s_HandleInheritability_None, // inheritability - s_True, // leaveOpen - }); - } - else - { - Debug.Assert(s_lazyCreateFromFileClassic != null); - return (IDisposable)s_lazyCreateFromFileClassic.Invoke(null, new object[7] - { - stream, // fileStream - null, // mapName - s_LongZero, // capacity - s_MemoryMappedFileAccess_Read, // access - null, // memoryMappedFileSecurity - s_HandleInheritability_None, // inheritability - s_True, // leaveOpen - }); - } - } - catch (MemberAccessException) - { - s_lazyIsAvailable = false; - return null; - } - catch (InvalidOperationException) - { - // thrown when accessing unapproved API in a Windows Store app - s_lazyIsAvailable = false; - return null; - } - catch (TargetInvocationException ex) - { - ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); - throw; - } + return MemoryMappedFile.CreateFromFile( + (FileStream)stream, + mapName: null, + capacity: 0, + access: MemoryMappedFileAccess.Read, + inheritability: HandleInheritability.None, + leaveOpen: true); } internal static IDisposable CreateViewAccessor(object memoryMap, long start, int size) { - Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); try { - return (IDisposable)s_lazyCreateViewAccessor.Invoke(memoryMap, new object[3] - { - start, // start - (long)size, // size - s_MemoryMappedFileAccess_Read, // access - }); + return ((MemoryMappedFile)memoryMap).CreateViewAccessor(start, size, MemoryMappedFileAccess.Read); } - catch (MemberAccessException) + catch (UnauthorizedAccessException e) { - s_lazyIsAvailable = false; - return null; - } - catch (InvalidOperationException) - { - s_lazyIsAvailable = false; - return null; - } - catch (TargetInvocationException ex) when (ex.InnerException is UnauthorizedAccessException) - { - throw new IOException(ex.InnerException.Message, ex.InnerException); - } - catch (TargetInvocationException ex) - { - ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); - throw; + throw new IOException(e.Message, e); } } internal static unsafe byte* AcquirePointer(object accessor, out SafeBuffer safeBuffer) { - Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); + var memoryMappedViewAccessor = (MemoryMappedViewAccessor)accessor; - safeBuffer = (SafeBuffer)s_lazySafeMemoryMappedViewHandle.GetValue(accessor); + safeBuffer = memoryMappedViewAccessor.SafeMemoryMappedViewHandle; byte* ptr = null; safeBuffer.AcquirePointer(ref ptr); - try - { - long offset; - if (s_lazyPointerOffset != null) - { - offset = (long)s_lazyPointerOffset.GetValue(accessor); - } - else - { - object internalView = s_lazyInternalViewField.GetValue(accessor); - offset = (long)s_lazyInternalPointerOffset.GetValue(internalView); - } - - return ptr + offset; - } - catch (MemberAccessException) - { - s_lazyIsAvailable = false; - return null; - } - catch (InvalidOperationException) - { - // thrown when accessing unapproved API in a Windows Store app - s_lazyIsAvailable = false; - return null; - } - catch (TargetInvocationException ex) - { - ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); - throw; - } + return ptr + memoryMappedViewAccessor.PointerOffset; } } } diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs new file mode 100644 index 000000000000..92af82efa949 --- /dev/null +++ b/src/System.Reflection.Metadata/src/System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs @@ -0,0 +1,272 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using System.IO; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; + +namespace System.Reflection.Internal +{ + internal static class MemoryMapLightUp + { + private static Type s_lazyMemoryMappedFileType; + private static Type s_lazyMemoryMappedViewAccessorType; + private static Type s_lazyMemoryMappedFileAccessType; + private static Type s_lazyMemoryMappedFileSecurityType; + private static Type s_lazyHandleInheritabilityType; + private static MethodInfo s_lazyCreateFromFile; + private static MethodInfo s_lazyCreateFromFileClassic; + private static MethodInfo s_lazyCreateViewAccessor; + private static PropertyInfo s_lazySafeMemoryMappedViewHandle; + private static PropertyInfo s_lazyPointerOffset; + private static FieldInfo s_lazyInternalViewField; + private static PropertyInfo s_lazyInternalPointerOffset; + + private static readonly object s_MemoryMappedFileAccess_Read = 1; + private static readonly object s_HandleInheritability_None = 0; + private static readonly object s_LongZero = (long)0; + private static readonly object s_True = true; + + private static bool? s_lazyIsAvailable; + + internal static bool IsAvailable + { + get + { + if (!s_lazyIsAvailable.HasValue) + { + s_lazyIsAvailable = TryLoadTypes(); + } + + return s_lazyIsAvailable.Value; + } + } + + private static bool TryLoadType(string typeName, string modernAssembly, string classicAssembly, out Type type) + { + type = LightUpHelper.GetType(typeName, modernAssembly, classicAssembly); + return type != null; + } + + private static bool TryLoadTypes() + { + const string systemIOMemoryMappedFiles = "System.IO.MemoryMappedFiles, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; + const string systemRuntimeHandles = "System.Runtime.Handles, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; + const string systemCore = "System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; + + TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFileSecurity", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileSecurityType); + + return FileStreamReadLightUp.FileStreamType.Value != null + && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFile", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileType) + && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedViewAccessor", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedViewAccessorType) + && TryLoadType("System.IO.MemoryMappedFiles.MemoryMappedFileAccess", systemIOMemoryMappedFiles, systemCore, out s_lazyMemoryMappedFileAccessType) + && TryLoadType("System.IO.HandleInheritability", systemRuntimeHandles, systemCore, out s_lazyHandleInheritabilityType) + && TryLoadMembers(); + } + + private static bool TryLoadMembers() + { + // .NET Core, .NET 4.6+ + s_lazyCreateFromFile = LightUpHelper.GetMethod( + s_lazyMemoryMappedFileType, + "CreateFromFile", + FileStreamReadLightUp.FileStreamType.Value, + typeof(string), + typeof(long), + s_lazyMemoryMappedFileAccessType, + s_lazyHandleInheritabilityType, + typeof(bool) + ); + + // .NET < 4.6 + if (s_lazyCreateFromFile == null) + { + if (s_lazyMemoryMappedFileSecurityType != null) + { + s_lazyCreateFromFileClassic = LightUpHelper.GetMethod( + s_lazyMemoryMappedFileType, + "CreateFromFile", + FileStreamReadLightUp.FileStreamType.Value, + typeof(string), + typeof(long), + s_lazyMemoryMappedFileAccessType, + s_lazyMemoryMappedFileSecurityType, + s_lazyHandleInheritabilityType, + typeof(bool)); + } + + if (s_lazyCreateFromFileClassic == null) + { + return false; + } + } + + s_lazyCreateViewAccessor = LightUpHelper.GetMethod( + s_lazyMemoryMappedFileType, + "CreateViewAccessor", + typeof(long), + typeof(long), + s_lazyMemoryMappedFileAccessType); + + if (s_lazyCreateViewAccessor == null) + { + return false; + } + + s_lazySafeMemoryMappedViewHandle = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredProperty("SafeMemoryMappedViewHandle"); + if (s_lazySafeMemoryMappedViewHandle == null) + { + return false; + } + + // .NET Core, .NET 4.5.1+ + s_lazyPointerOffset = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredProperty("PointerOffset"); + + // .NET < 4.5.1 + if (s_lazyPointerOffset == null) + { + s_lazyInternalViewField = s_lazyMemoryMappedViewAccessorType.GetTypeInfo().GetDeclaredField("m_view"); + if (s_lazyInternalViewField == null) + { + return false; + } + + s_lazyInternalPointerOffset = s_lazyInternalViewField.FieldType.GetTypeInfo().GetDeclaredProperty("PointerOffset"); + if (s_lazyInternalPointerOffset == null) + { + return false; + } + } + + return true; + } + + internal static IDisposable CreateMemoryMap(Stream stream) + { + Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); + + try + { + if (s_lazyCreateFromFile != null) + { + return (IDisposable)s_lazyCreateFromFile.Invoke(null, new object[6] + { + stream, // fileStream + null, // mapName + s_LongZero, // capacity + s_MemoryMappedFileAccess_Read, // access + s_HandleInheritability_None, // inheritability + s_True, // leaveOpen + }); + } + else + { + Debug.Assert(s_lazyCreateFromFileClassic != null); + return (IDisposable)s_lazyCreateFromFileClassic.Invoke(null, new object[7] + { + stream, // fileStream + null, // mapName + s_LongZero, // capacity + s_MemoryMappedFileAccess_Read, // access + null, // memoryMappedFileSecurity + s_HandleInheritability_None, // inheritability + s_True, // leaveOpen + }); + } + } + catch (MemberAccessException) + { + s_lazyIsAvailable = false; + return null; + } + catch (InvalidOperationException) + { + // thrown when accessing unapproved API in a Windows Store app + s_lazyIsAvailable = false; + return null; + } + catch (TargetInvocationException ex) + { + ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); + throw; + } + } + + internal static IDisposable CreateViewAccessor(object memoryMap, long start, int size) + { + Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); + try + { + return (IDisposable)s_lazyCreateViewAccessor.Invoke(memoryMap, new object[3] + { + start, // start + (long)size, // size + s_MemoryMappedFileAccess_Read, // access + }); + } + catch (MemberAccessException) + { + s_lazyIsAvailable = false; + return null; + } + catch (InvalidOperationException) + { + s_lazyIsAvailable = false; + return null; + } + catch (TargetInvocationException ex) when (ex.InnerException is UnauthorizedAccessException) + { + throw new IOException(ex.InnerException.Message, ex.InnerException); + } + catch (TargetInvocationException ex) + { + ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); + throw; + } + } + + internal static unsafe byte* AcquirePointer(object accessor, out SafeBuffer safeBuffer) + { + Debug.Assert(s_lazyIsAvailable.GetValueOrDefault()); + + safeBuffer = (SafeBuffer)s_lazySafeMemoryMappedViewHandle.GetValue(accessor); + + byte* ptr = null; + safeBuffer.AcquirePointer(ref ptr); + + try + { + long offset; + if (s_lazyPointerOffset != null) + { + offset = (long)s_lazyPointerOffset.GetValue(accessor); + } + else + { + object internalView = s_lazyInternalViewField.GetValue(accessor); + offset = (long)s_lazyInternalPointerOffset.GetValue(internalView); + } + + return ptr + offset; + } + catch (MemberAccessException) + { + s_lazyIsAvailable = false; + return null; + } + catch (InvalidOperationException) + { + // thrown when accessing unapproved API in a Windows Store app + s_lazyIsAvailable = false; + return null; + } + catch (TargetInvocationException ex) + { + ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); + throw; + } + } + } +} diff --git a/src/System.Reflection.Metadata/tests/Utilities/AbstractMemoryBlockTests.cs b/src/System.Reflection.Metadata/tests/Utilities/AbstractMemoryBlockTests.cs index 71546119c1d0..2a5882812f37 100644 --- a/src/System.Reflection.Metadata/tests/Utilities/AbstractMemoryBlockTests.cs +++ b/src/System.Reflection.Metadata/tests/Utilities/AbstractMemoryBlockTests.cs @@ -117,33 +117,17 @@ public void Stream() } } - [Fact] - public void FileStreamWin7() - { - try - { - FileStreamReadLightUp.readFileModernNotAvailable = true; - FileStream(); - } - finally - { - FileStreamReadLightUp.readFileModernNotAvailable = false; - } - } - [Fact] public void FileStreamUnix() { try { - FileStreamReadLightUp.readFileModernNotAvailable = true; - FileStreamReadLightUp.readFileCompatNotAvailable = true; + FileStreamReadLightUp.readFileNotAvailable = true; FileStream(); } finally { - FileStreamReadLightUp.readFileModernNotAvailable = false; - FileStreamReadLightUp.readFileCompatNotAvailable = false; + FileStreamReadLightUp.readFileNotAvailable = false; } } From 4452760a23020faf9be25d9298574a1f0c74d702 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Fri, 14 Apr 2017 11:58:31 -0700 Subject: [PATCH 053/336] Fix UAPAOT tests in AppContext (#18351) Adds some infrastructure to AssertExtensions for builds where exception strings aren't guaranteed to be around and consumes that method in AppContext. --- src/Common/tests/System/AssertExtensions.cs | 14 ++++++++++++-- .../tests/AppContext.Switch.Validation.cs | 12 ++++++------ .../tests/System.AppContext.Tests.csproj | 3 +++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Common/tests/System/AssertExtensions.cs b/src/Common/tests/System/AssertExtensions.cs index 73d6819cb433..585475a9ac92 100644 --- a/src/Common/tests/System/AssertExtensions.cs +++ b/src/Common/tests/System/AssertExtensions.cs @@ -24,8 +24,18 @@ public static void Throws(string netCoreParamName, string netFxParamName, Act string expectedParamName = RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework") ? netFxParamName : netCoreParamName; - - Assert.Equal(expectedParamName, exception.ParamName); + + if (!RuntimeInformation.FrameworkDescription.StartsWith(".NET Native")) + Assert.Equal(expectedParamName, exception.ParamName); + } + + public static void Throws(string paramName, Action action) + where T : ArgumentException + { + T exception = Assert.Throws(action); + + if (!RuntimeInformation.FrameworkDescription.StartsWith(".NET Native")) + Assert.Equal(paramName, exception.ParamName); } } } diff --git a/src/System.AppContext/tests/AppContext.Switch.Validation.cs b/src/System.AppContext/tests/AppContext.Switch.Validation.cs index ff2b23458100..b207bc688699 100644 --- a/src/System.AppContext/tests/AppContext.Switch.Validation.cs +++ b/src/System.AppContext/tests/AppContext.Switch.Validation.cs @@ -12,19 +12,19 @@ public partial class AppContextTests [Fact] public void NullSwitchName_EnableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(null, true)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(null, true)); } [Fact] public void NullSwitchName_DisableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(null, false)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(null, false)); } [Fact] public void NullSwitchName_TryGetSwitchValue() { - Assert.Throws("switchName", () => + AssertExtensions.Throws("switchName", () => { bool output; AppContext.TryGetSwitch(null, out output); @@ -34,20 +34,20 @@ public void NullSwitchName_TryGetSwitchValue() [Fact] public void EmptySwitchName_EnableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(string.Empty, true)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(string.Empty, true)); } [Fact] public void EmptySwitchName_DisableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(string.Empty, false)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(string.Empty, false)); } [Fact] public void EmptySwitchName_TryGetSwitchValue() { bool output; - Assert.Throws("switchName", () => AppContext.TryGetSwitch(string.Empty, out output)); + AssertExtensions.Throws("switchName", () => AppContext.TryGetSwitch(string.Empty, out output)); } } } diff --git a/src/System.AppContext/tests/System.AppContext.Tests.csproj b/src/System.AppContext/tests/System.AppContext.Tests.csproj index c68a2dac0feb..ac1c9052d675 100644 --- a/src/System.AppContext/tests/System.AppContext.Tests.csproj +++ b/src/System.AppContext/tests/System.AppContext.Tests.csproj @@ -9,6 +9,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file From 5cf2067e55767ce6722162e8dc922b01b0379555 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 14 Apr 2017 12:05:09 -0700 Subject: [PATCH 054/336] Add manual step to sign with open key using sn This change requires that sn is only the path and if it isn't then it the signing will fail. We should consider getting sn from a package in a future iteration to make this more robust. Enable signing of netstandard shim now that we sign things with Open key --- Tools-Override/sign.targets | 30 ++++++++++++++++++++++-------- src/shims/shims.proj | 4 ---- src/sign.builds | 4 ++-- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Tools-Override/sign.targets b/Tools-Override/sign.targets index 0ac5cd276310..07f73ae6e57d 100644 --- a/Tools-Override/sign.targets +++ b/Tools-Override/sign.targets @@ -22,6 +22,7 @@ $(ToolsDir)MSFT.snk $(ToolsDir)ECMA.snk $(ToolsDir)Open.snk + Open $(ToolsDir)Test.snk @@ -29,14 +30,7 @@ true true - - true - true - - - - - false + false + + + + + $(ToolsDir)Open.snk + + + + + + + + + + + - diff --git a/src/sign.builds b/src/sign.builds index 644e41800140..f0cef964e3bd 100644 --- a/src/sign.builds +++ b/src/sign.builds @@ -37,8 +37,8 @@ - + DependsOnTargets="GetFilesToSignItems;SignFiles"> + From c75715fb9a8c25def418e4bd9ed1a8a0bb5a1943 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Fri, 14 Apr 2017 13:36:46 -0700 Subject: [PATCH 055/336] Delete unused resource string --- src/System.Runtime.Extensions/src/Resources/Strings.resx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/System.Runtime.Extensions/src/Resources/Strings.resx b/src/System.Runtime.Extensions/src/Resources/Strings.resx index f00bf764470f..7dfe4e5ee10c 100644 --- a/src/System.Runtime.Extensions/src/Resources/Strings.resx +++ b/src/System.Runtime.Extensions/src/Resources/Strings.resx @@ -358,9 +358,6 @@ Value of flags is invalid. - - Unicode surrogate characters must be written out as pairs together in the same call, not individually. Consider passing in a character array instead. - Secondary AppDomains are not supported on this platform. From fdc96252ddf8e09caf180b0febc9c01c7dbb8e54 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Fri, 14 Apr 2017 13:38:53 -0700 Subject: [PATCH 056/336] Disable failing tests on desktop for issue 18141 --- .../tests/QueryOperators/OrderByThenByTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs index b07e7e166e95..180217675a50 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs @@ -375,6 +375,7 @@ public static void OrderBy_ExtremeComparer(Labeled> labeled, [MemberData(nameof(Sources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(Sources))] [MemberData(nameof(OrderByRandomData), new[] { 0, 1, 2, 16 })] [MemberData(nameof(UnorderedSources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(UnorderedSources))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "https://github.com/dotnet/corefx/issues/18141")] // Regression test for the PLINQ version of #2239 - comparer returning max/min value. public static void OrderByDescending_ExtremeComparer(Labeled> labeled, int count) { @@ -986,6 +987,7 @@ public static void ThenBy_NotPipelined_ExtremeComparer(Labeled> labeled, int count) { int prev = count - 1; From 96e9a5227511a999d1ad536ebdb3cd70720a19fe Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Fri, 14 Apr 2017 14:14:11 -0700 Subject: [PATCH 057/336] Disable binplacing consistently in external --- external/ILLink/ILLink.depproj | 2 +- external/docs/docs.depproj | 2 +- external/ilasm/ilasm.depproj | 2 +- external/netfx-conflicts/netfx-conflicts.depproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/external/ILLink/ILLink.depproj b/external/ILLink/ILLink.depproj index 769002bc90de..30b57ffaf9c4 100644 --- a/external/ILLink/ILLink.depproj +++ b/external/ILLink/ILLink.depproj @@ -5,7 +5,7 @@ .NETCoreApp,Version=v1.1 netcoreapp1.1 $(ToolsDir)ILLink - false + false true diff --git a/external/docs/docs.depproj b/external/docs/docs.depproj index d5d08c96671a..60e842cc25d0 100644 --- a/external/docs/docs.depproj +++ b/external/docs/docs.depproj @@ -5,7 +5,7 @@ none $(XmlDocDir) - false + false diff --git a/external/ilasm/ilasm.depproj b/external/ilasm/ilasm.depproj index 01f013ed39e9..3288fdea2bbf 100644 --- a/external/ilasm/ilasm.depproj +++ b/external/ilasm/ilasm.depproj @@ -5,7 +5,7 @@ $(RuntimeOS)-x64 $(ToolsDir)ilasm - false + false true diff --git a/external/netfx-conflicts/netfx-conflicts.depproj b/external/netfx-conflicts/netfx-conflicts.depproj index 9f6dc9985322..0abf1ec0063a 100644 --- a/external/netfx-conflicts/netfx-conflicts.depproj +++ b/external/netfx-conflicts/netfx-conflicts.depproj @@ -9,7 +9,7 @@ netstandard1.1;netstandard1.2;netstandard1.3 Reference None - false + false From 6318bd3aecaca6262fcbacbf04377f49e79d5b86 Mon Sep 17 00:00:00 2001 From: Mandar Sahasrabuddhe Date: Sat, 15 Apr 2017 02:55:42 +0530 Subject: [PATCH 058/336] Issue #18242 - fix blocksize computation (#18286) * Issue #18242 - fix blocksize computation * Issue #18242 Move allocations into Try block --- src/System.Memory/src/System/SpanHelpers.cs | 2 +- src/System.Memory/tests/Span/CopyTo.cs | 65 +++++++++++++++++++-- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/src/System.Memory/src/System/SpanHelpers.cs b/src/System.Memory/src/System/SpanHelpers.cs index 283cc8c81f9f..1767772d96ff 100644 --- a/src/System.Memory/src/System/SpanHelpers.cs +++ b/src/System.Memory/src/System/SpanHelpers.cs @@ -51,7 +51,7 @@ public static unsafe void CopyTo(ref T dst, int dstLength, ref T src, int src while (index < byteCount) { - uint blockSize = byteCount > uint.MaxValue ? uint.MaxValue : (uint)byteCount; + uint blockSize = (byteCount - index) > uint.MaxValue ? uint.MaxValue : (uint)(byteCount - index); Unsafe.CopyBlock( ref Unsafe.Add(ref dstBytes, (IntPtr)index), ref Unsafe.Add(ref srcBytes, (IntPtr)index), diff --git a/src/System.Memory/tests/Span/CopyTo.cs b/src/System.Memory/tests/Span/CopyTo.cs index 91800c638999..dab71cff154e 100644 --- a/src/System.Memory/tests/Span/CopyTo.cs +++ b/src/System.Memory/tests/Span/CopyTo.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Runtime.CompilerServices; using Xunit; namespace System.SpanTests @@ -48,7 +49,7 @@ public static void TryCopyToArraySegmentImplicit() [Fact] public static void TryCopyToEmpty() { - int[] src = {}; + int[] src = { }; int[] dst = { 99, 100, 101 }; Span srcSpan = new Span(src); @@ -137,7 +138,7 @@ public static void CopyToSingleArray() { int[] src = { 1 }; int[] dst = { 99 }; - + src.CopyTo(dst); Assert.Equal(src, dst); } @@ -147,7 +148,7 @@ public static void CopyToEmptyArray() { int[] src = { }; int[] dst = { 99, 100, 101 }; - + src.CopyTo(dst); int[] expected = { 99, 100, 101 }; Assert.Equal(expected, dst); @@ -175,12 +176,68 @@ public static void CopyToShorterArray() { int[] src = { 1, 2, 3 }; int[] dst = { 99, 100 }; - + AssertThrows(src, (_src) => _src.CopyTo(dst)); int[] expected = { 99, 100 }; Assert.Equal(expected, dst); // CopyTo() checks for sufficient space before doing any copying. } + // This test case tests the Span.CopyTo method for large buffers of size 4GB or more. In the fast path, + // the CopyTo method performs copy in chunks of size 4GB (uint.MaxValue) with final iteration copying + // the residual chunk of size (bufferSize % 4GB). The inputs sizes to this method, 4GB and 4GB+256B, + // test the two size selection paths in CoptyTo method - memory size that is multiple of 4GB or, + // a multiple of 4GB + some more size. + [Theory] + [OuterLoop] + [PlatformSpecific(TestPlatforms.Windows | TestPlatforms.OSX)] + [InlineData(4L * 1024L * 1024L * 1024L)] + [InlineData((4L * 1024L * 1024L * 1024L) + 256)] + public static void CopyToLargeSizeTest(long bufferSize) + { + int GuidCount = (int)(bufferSize / Unsafe.SizeOf()); + bool allocatedFirst = false; + bool allocatedSecond = false; + IntPtr memBlockFirst = IntPtr.Zero; + IntPtr memBlockSecond = IntPtr.Zero; + + unsafe + { + try + { + allocatedFirst = AllocationHelper.TryAllocNative((IntPtr)bufferSize, out memBlockFirst); + allocatedSecond = AllocationHelper.TryAllocNative((IntPtr)bufferSize, out memBlockSecond); + + if (allocatedFirst && allocatedSecond) + { + ref Guid memoryFirst = ref Unsafe.AsRef(memBlockFirst.ToPointer()); + var spanFirst = new Span(memBlockFirst.ToPointer(), GuidCount); + + ref Guid memorySecond = ref Unsafe.AsRef(memBlockSecond.ToPointer()); + var spanSecond = new Span(memBlockSecond.ToPointer(), GuidCount); + + Guid theGuid = Guid.Parse("900DBAD9-00DB-AD90-00DB-AD900DBADBAD"); + for (int count = 0; count < GuidCount; ++count) + { + Unsafe.Add(ref memoryFirst, count) = theGuid; + } + + spanFirst.CopyTo(spanSecond); + + for (int count = 0; count < GuidCount; ++count) + { + var guidfirst = Unsafe.Add(ref memoryFirst, count); + var guidSecond = Unsafe.Add(ref memorySecond, count); + Assert.Equal(guidfirst, guidSecond); + } + } + } + finally + { + if (allocatedFirst) AllocationHelper.ReleaseNative(ref memBlockFirst); + if (allocatedSecond) AllocationHelper.ReleaseNative(ref memBlockSecond); + } + } + } } } From 3d839d2f5305efc9ff07b3d0b92e7590fdaec1e8 Mon Sep 17 00:00:00 2001 From: Karel Zikmund Date: Fri, 14 Apr 2017 15:38:28 -0700 Subject: [PATCH 059/336] Clarify explanations in porting.md Motivated by issue #8598. CAS & Transparency info provided by @morganbr AppDomains consulted with @weshaggard --- Documentation/project-docs/porting.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Documentation/project-docs/porting.md b/Documentation/project-docs/porting.md index 25e51c4e362e..e9281263140c 100644 --- a/Documentation/project-docs/porting.md +++ b/Documentation/project-docs/porting.md @@ -85,25 +85,26 @@ Security Transparency | [Details](#security-transparency) ### App Domains -**Justification**. AppDomains require runtime support and are generally quite expensive. While still implemented by CoreCLR it's not available in .NET Native and we don't plan on adding this capability. +**Justification**. AppDomains require runtime support and are generally quite expensive. They are not implemented in .NET Core or .NET Native. We do not plan on adding this capability in future. **Replacement**. AppDomains were used for different features; for isolation we recommend processes and/or containers. For dynamic loading, we provide `AssemblyLoadContext`. Information (such as the name and base directory) is provided by APIs on other types, for instance `AppContext.BaseDirectory `. Some scenarios, such as getting the list of loaded are unsupported as they are inherently fragile. +To make code migration from .NET Framework easier, we have exposed some of the `AppDomain` API surface in .NET Core and .NET Native. Some of the APIs work fine (e.g. `UnhandledException`), some of them do nothing (e.g. `SetCachePath`) and some of them throw `PlatformNotSupportedException` (e.g. `CreateDomain`). See more details about particular API differences in [TODO](https://github.com/dotnet/corefx/issues/18405). + ### Remoting **Justification**. The idea of .NET remoting -- which is transparent remote procedure calls -- has been identified as a problematic architecture. Outside of that realm, it's also used for cross AppDomain communication which is no longer supported. On top of that, remoting requires runtime support and is quite heavyweight. -**Replacement**. For communication across processes, inter-process communication (IPC) should be used, such as pipes or memory mapped files. Across machines, you should use a network based solution, preferably a low-overhead plain text protocol such as HTTP. +**Replacement**. For communication across processes, inter-process communication (IPC) should be used, such as pipes or memory mapped files. Across machines, you should use a network based solution, preferably `System.Net.Sockets` (see sample - [TODO](https://github.com/dotnet/corefx/issues/18394)). ### Code Access Security (CAS) -**Justification**. Sand-boxing, i.e. relying on the runtime or the framework to constrain which resources a managed application can run, is considered a non-goal for .NET Core. We've already state previously that relying on sand-boxing for security reasons isn't an approach we're feeling comfortable with; there are simply too many pieces in object oriented framework that can result in elevation of privileges. Thus we don't treat CAS as security boundary anymore. On top of that, it makes the implementation more complicated and often has performance implications for the happy path. +**Justification**. Sandboxing, i.e. relying on the runtime or the framework to constrain which resources a managed application or library can run is [not supported on .NET Framework](https://msdn.microsoft.com/en-us/library/c5tk9z76(v=vs.110).aspx) and therefore is also not supported on .NET Core or .NET Native. We believe that there are simply too many pieces in the .NET Framework and runtime that can result in elevation of privileges. Thus we don't treat [CAS as security boundary](https://msdn.microsoft.com/en-us/library/c5tk9z76(v=vs.110).aspx) anymore. On top of that, it makes the implementation more complicated and often has correctness performance implications for applications that don’t intend to use it. -**Replacement**. Use operating system provided security boundaries, such as user accounts for running processes with the least set of privileges. +**Replacement**. Use operating system provided security boundaries, such as virtualization, containers, or user accounts for running processes with the least set of privileges. ### Security Transparency -**Justification**. Similar to CAS, this feature allows separating sand-boxed code from security critical code in a declarative fashion. This feature was heavily used by Silverlight. - -**Replacement**. Use operating system provided security boundaries, such as user accounts for running processes with the least set of privileges. +**Justification**. Similar to CAS, this feature allows separating sandboxed code from security critical code in a declarative fashion, but is [no longer supported as a security boundary](https://msdn.microsoft.com/en-us/library/ee191569(v=vs.110).aspx). This feature was heavily used by Silverlight. +**Replacement**. Use operating system provided security boundaries, such as virtualization, containers, or user accounts for running processes with the least set of privileges. From da43337d0ca2bd3966f36fc8f4d8b00d3357ea04 Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Date: Fri, 14 Apr 2017 15:44:14 -0700 Subject: [PATCH 060/336] Netcoreapp specific test --- .../Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs index 0f709e6fcb5e..df1ff2f719dc 100644 --- a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs +++ b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs @@ -517,6 +517,7 @@ public void Roundtrip_WithOffset(ECDsa ecdsa) Assert.True(ecdsa.VerifyData(halfData, dataSignature, HashAlgorithmName.SHA256)); } +#if netcoreapp // uses ECParameters not available in desktop. [Fact] public void PublicKey_CannotSign() { @@ -530,6 +531,7 @@ public void PublicKey_CannotSign() () => ecdsa.SignData(new byte[] { 1, 2, 3, 4, 5 }, HashAlgorithmName.SHA256)); } } +#endif ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From b39d48b33d25f26fcea6b32c7205d3b7c641bd5e Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Fri, 14 Apr 2017 18:39:11 -0500 Subject: [PATCH 061/336] Fix S.IO.FileSystem.DriveInfo running on uapaot (#18402) * Fix S.IO.FileSystem.DriveInfo running on uapaot * Fix GetDriveType CharSet --- .../tests/Configurations.props | 5 +++-- .../tests/DriveInfo.Windows.Tests.cs | 2 +- .../tests/System.IO.FileSystem.DriveInfo.Tests.csproj | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/System.IO.FileSystem.DriveInfo/tests/Configurations.props b/src/System.IO.FileSystem.DriveInfo/tests/Configurations.props index c398e42e8994..c0146cddf372 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/Configurations.props +++ b/src/System.IO.FileSystem.DriveInfo/tests/Configurations.props @@ -2,7 +2,8 @@ - netstandard; + netstandard-Unix; + netstandard-Windows_NT; - \ No newline at end of file + diff --git a/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Windows.Tests.cs b/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Windows.Tests.cs index 7633ca9ecc18..7582b7670961 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Windows.Tests.cs +++ b/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Windows.Tests.cs @@ -212,7 +212,7 @@ e is IOException || [DllImport("kernel32.dll", EntryPoint = "GetVolumeInformationW", CharSet = CharSet.Unicode, SetLastError = true, BestFitMapping = false)] internal static extern bool GetVolumeInformation(string drive, StringBuilder volumeName, int volumeNameBufLen, out int volSerialNumber, out int maxFileNameLen, out int fileSystemFlags, StringBuilder fileSystemName, int fileSystemNameBufLen); - [DllImport("kernel32.dll", SetLastError = true)] + [DllImport("kernel32.dll", SetLastError = true, EntryPoint = "GetDriveTypeW", CharSet = CharSet.Unicode)] internal static extern int GetDriveType(string drive); [DllImport("kernel32.dll", SetLastError = true)] diff --git a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj index 71746d6eec32..4725ea775f48 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj +++ b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj @@ -8,11 +8,11 @@ - - + + Common\System\PlatformDetection.cs - \ No newline at end of file + From b83021585c0c3cdfc319a13344d177ff6eb7883b Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Fri, 14 Apr 2017 16:40:40 -0700 Subject: [PATCH 062/336] System.Data - move duplicate files to Common (#18297) * Move MultipartIdentifier to Common (Common, SqlClient, Odbc) * Move NameValuePair to Common (Common, SqlClient, Odbc) * Move DbConnectionPoolKey to Common (Common, SqlClient, Odbc) --- .../System/Data/Common/DbConnectionPoolKey.cs | 2 +- .../System/Data/Common/MultipartIdentifier.cs | 0 .../src/System/Data/Common/NameValuePair.cs | 0 .../src/System.Data.Common.csproj | 12 +- .../System/Data/Common/MultipartIdentifier.cs | 291 ------------------ .../System/Data/Common/DbConnectionPoolKey.cs | 58 ---- .../System/Data/Common/MultipartIdentifier.cs | 291 ------------------ .../System/Data/Common/NameValuePair.cs | 69 ----- .../src/System.Data.Odbc.csproj | 12 +- .../src/System.Data.SqlClient.csproj | 12 +- .../System/Data/Common/DbConnectionPoolKey.cs | 60 ---- .../src/System/Data/Common/NameValuePair.cs | 71 ----- .../Data/SqlClient/SqlConnectionPoolKey.cs | 2 +- 13 files changed, 29 insertions(+), 851 deletions(-) rename src/{System.Data.Common => Common}/src/System/Data/Common/DbConnectionPoolKey.cs (97%) rename src/{System.Data.SqlClient => Common}/src/System/Data/Common/MultipartIdentifier.cs (100%) rename src/{System.Data.Common => Common}/src/System/Data/Common/NameValuePair.cs (100%) delete mode 100644 src/System.Data.Common/src/System/Data/Common/MultipartIdentifier.cs delete mode 100644 src/System.Data.Odbc/src/Common/System/Data/Common/DbConnectionPoolKey.cs delete mode 100644 src/System.Data.Odbc/src/Common/System/Data/Common/MultipartIdentifier.cs delete mode 100644 src/System.Data.Odbc/src/Common/System/Data/Common/NameValuePair.cs delete mode 100644 src/System.Data.SqlClient/src/System/Data/Common/DbConnectionPoolKey.cs delete mode 100644 src/System.Data.SqlClient/src/System/Data/Common/NameValuePair.cs diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionPoolKey.cs b/src/Common/src/System/Data/Common/DbConnectionPoolKey.cs similarity index 97% rename from src/System.Data.Common/src/System/Data/Common/DbConnectionPoolKey.cs rename to src/Common/src/System/Data/Common/DbConnectionPoolKey.cs index 93e758566c59..a7b61cc5ebf1 100644 --- a/src/System.Data.Common/src/System/Data/Common/DbConnectionPoolKey.cs +++ b/src/Common/src/System/Data/Common/DbConnectionPoolKey.cs @@ -20,7 +20,7 @@ protected DbConnectionPoolKey(DbConnectionPoolKey key) _connectionString = key.ConnectionString; } - object ICloneable.Clone() + public virtual object Clone() { return new DbConnectionPoolKey(this); } diff --git a/src/System.Data.SqlClient/src/System/Data/Common/MultipartIdentifier.cs b/src/Common/src/System/Data/Common/MultipartIdentifier.cs similarity index 100% rename from src/System.Data.SqlClient/src/System/Data/Common/MultipartIdentifier.cs rename to src/Common/src/System/Data/Common/MultipartIdentifier.cs diff --git a/src/System.Data.Common/src/System/Data/Common/NameValuePair.cs b/src/Common/src/System/Data/Common/NameValuePair.cs similarity index 100% rename from src/System.Data.Common/src/System/Data/Common/NameValuePair.cs rename to src/Common/src/System/Data/Common/NameValuePair.cs diff --git a/src/System.Data.Common/src/System.Data.Common.csproj b/src/System.Data.Common/src/System.Data.Common.csproj index 48c43a46ea9a..378d72511c94 100644 --- a/src/System.Data.Common/src/System.Data.Common.csproj +++ b/src/System.Data.Common/src/System.Data.Common.csproj @@ -173,7 +173,9 @@ - + + System\Data\Common\DbConnectionPoolKey.cs + @@ -201,8 +203,12 @@ - - + + System\Data\Common\MultipartIdentifier.cs + + + System\Data\Common\NameValuePair.cs + diff --git a/src/System.Data.Common/src/System/Data/Common/MultipartIdentifier.cs b/src/System.Data.Common/src/System/Data/Common/MultipartIdentifier.cs deleted file mode 100644 index 4a7faf1978d9..000000000000 --- a/src/System.Data.Common/src/System/Data/Common/MultipartIdentifier.cs +++ /dev/null @@ -1,291 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Text; - -namespace System.Data.Common -{ - internal class MultipartIdentifier - { - private const int MaxParts = 4; - internal const int ServerIndex = 0; - internal const int CatalogIndex = 1; - internal const int SchemaIndex = 2; - internal const int TableIndex = 3; - - /* - Left quote strings need to correspond 1 to 1 with the right quote strings - example: "ab" "cd", passed in for the left and the right quote - would set a or b as a starting quote character. - If a is the starting quote char then c would be the ending quote char - otherwise if b is the starting quote char then d would be the ending quote character. - */ - internal static string[] ParseMultipartIdentifier(string name, string leftQuote, string rightQuote, string property, bool ThrowOnEmptyMultipartName) - { - return ParseMultipartIdentifier(name, leftQuote, rightQuote, '.', MaxParts, true, property, ThrowOnEmptyMultipartName); - } - - private enum MPIState - { - MPI_Value, - MPI_ParseNonQuote, - MPI_LookForSeparator, - MPI_LookForNextCharOrSeparator, - MPI_ParseQuote, - MPI_RightQuote, - } - - /* Core function for parsing the multipart identifier string. - * paramaters: name - string to parse - * leftquote: set of characters which are valid quoteing characters to initiate a quote - * rightquote: set of characters which are valid to stop a quote, array index's correspond to the leftquote array. - * separator: separator to use - * limit: number of names to parse out - * removequote:to remove the quotes on the returned string - */ - private static void IncrementStringCount(string name, string[] ary, ref int position, string property) - { - ++position; - int limit = ary.Length; - if (position >= limit) - { - throw ADP.InvalidMultipartNameToManyParts(property, name, limit); - } - ary[position] = string.Empty; - } - - private static bool IsWhitespace(char ch) - { - return char.IsWhiteSpace(ch); - } - - internal static string[] ParseMultipartIdentifier(string name, string leftQuote, string rightQuote, char separator, int limit, bool removequotes, string property, bool ThrowOnEmptyMultipartName) - { - if (limit <= 0) - { - throw ADP.InvalidMultipartNameToManyParts(property, name, limit); - } - - if (-1 != leftQuote.IndexOf(separator) || -1 != rightQuote.IndexOf(separator) || leftQuote.Length != rightQuote.Length) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - - string[] parsedNames = new string[limit]; // return string array - int stringCount = 0; // index of current string in the buffer - MPIState state = MPIState.MPI_Value; // Initalize the starting state - - StringBuilder sb = new StringBuilder(name.Length); // String buffer to hold the string being currently built, init the string builder so it will never be resized - StringBuilder whitespaceSB = null; // String buffer to hold whitespace used when parsing nonquoted strings 'a b . c d' = 'a b' and 'c d' - char rightQuoteChar = ' '; // Right quote character to use given the left quote character found. - for (int index = 0; index < name.Length; ++index) - { - char testchar = name[index]; - switch (state) - { - case MPIState.MPI_Value: - { - int quoteIndex; - if (IsWhitespace(testchar)) - { // Is White Space then skip the whitespace - continue; - } - else - if (testchar == separator) - { // If we found a separator, no string was found, initalize the string we are parsing to Empty and the next one to Empty. - // This is NOT a redundent setting of string.Empty it solves the case where we are parsing ".foo" and we should be returning null, null, empty, foo - parsedNames[stringCount] = string.Empty; - IncrementStringCount(name, parsedNames, ref stringCount, property); - } - else - if (-1 != (quoteIndex = leftQuote.IndexOf(testchar))) - { // If we are a left quote - rightQuoteChar = rightQuote[quoteIndex]; // record the corresponding right quote for the left quote - sb.Length = 0; - if (!removequotes) - { - sb.Append(testchar); - } - state = MPIState.MPI_ParseQuote; - } - else - if (-1 != rightQuote.IndexOf(testchar)) - { // If we shouldn't see a right quote - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - { - sb.Length = 0; - sb.Append(testchar); - state = MPIState.MPI_ParseNonQuote; - } - break; - } - - case MPIState.MPI_ParseNonQuote: - { - if (testchar == separator) - { - parsedNames[stringCount] = sb.ToString(); // set the currently parsed string - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else // Quotes are not valid inside a non-quoted name - if (-1 != rightQuote.IndexOf(testchar)) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - if (-1 != leftQuote.IndexOf(testchar)) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - if (IsWhitespace(testchar)) - { // If it is Whitespace - parsedNames[stringCount] = sb.ToString(); // Set the currently parsed string - if (null == whitespaceSB) - { - whitespaceSB = new StringBuilder(); - } - whitespaceSB.Length = 0; - whitespaceSB.Append(testchar); // start to record the whitespace, if we are parsing a name like "foo bar" we should return "foo bar" - state = MPIState.MPI_LookForNextCharOrSeparator; - } - else - { - sb.Append(testchar); - } - break; - } - - case MPIState.MPI_LookForNextCharOrSeparator: - { - if (!IsWhitespace(testchar)) - { // If it is not whitespace - if (testchar == separator) - { - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - { // If its not a separator and not whitespace - sb.Append(whitespaceSB); - sb.Append(testchar); - parsedNames[stringCount] = sb.ToString(); // Need to set the name here in case the string ends here. - state = MPIState.MPI_ParseNonQuote; - } - } - else - { - whitespaceSB.Append(testchar); - } - break; - } - - case MPIState.MPI_ParseQuote: - { - if (testchar == rightQuoteChar) - { // if se are on a right quote see if we are escapeing the right quote or ending the quoted string - if (!removequotes) - { - sb.Append(testchar); - } - state = MPIState.MPI_RightQuote; - } - else - { - sb.Append(testchar); // Append what we are currently parsing - } - break; - } - - case MPIState.MPI_RightQuote: - { - if (testchar == rightQuoteChar) - { // If the next char is a another right quote then we were escapeing the right quote - sb.Append(testchar); - state = MPIState.MPI_ParseQuote; - } - else - if (testchar == separator) - { // If its a separator then record what we've parsed - parsedNames[stringCount] = sb.ToString(); - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - if (!IsWhitespace(testchar)) - { // If it is not whitespace we got problems - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - { // It is a whitespace character so the following char should be whitespace, separator, or end of string anything else is bad - parsedNames[stringCount] = sb.ToString(); - state = MPIState.MPI_LookForSeparator; - } - break; - } - - case MPIState.MPI_LookForSeparator: - { - if (!IsWhitespace(testchar)) - { // If it is not whitespace - if (testchar == separator) - { // If it is a separator - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - { // Othewise not a separator - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - } - break; - } - } - } - - // Resolve final states after parsing the string - switch (state) - { - case MPIState.MPI_Value: // These states require no extra action - case MPIState.MPI_LookForSeparator: - case MPIState.MPI_LookForNextCharOrSeparator: - break; - - case MPIState.MPI_ParseNonQuote: // Dump what ever was parsed - case MPIState.MPI_RightQuote: - parsedNames[stringCount] = sb.ToString(); - break; - - case MPIState.MPI_ParseQuote: // Invalid Ending States - default: - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - - if (parsedNames[0] == null) - { - if (ThrowOnEmptyMultipartName) - { - throw ADP.InvalidMultipartName(property, name); // Name is entirely made up of whitespace - } - } - else - { - // Shuffle the parsed name, from left justification to right justification, ie [a][b][null][null] goes to [null][null][a][b] - int offset = limit - stringCount - 1; - if (offset > 0) - { - for (int x = limit - 1; x >= offset; --x) - { - parsedNames[x] = parsedNames[x - offset]; - parsedNames[x - offset] = null; - } - } - } - return parsedNames; - } - } -} diff --git a/src/System.Data.Odbc/src/Common/System/Data/Common/DbConnectionPoolKey.cs b/src/System.Data.Odbc/src/Common/System/Data/Common/DbConnectionPoolKey.cs deleted file mode 100644 index 93e758566c59..000000000000 --- a/src/System.Data.Odbc/src/Common/System/Data/Common/DbConnectionPoolKey.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace System.Data.Common -{ - // DbConnectionPoolKey: Base class implementation of a key to connection pool groups - // Only connection string is used as a key - internal class DbConnectionPoolKey : ICloneable - { - private string _connectionString; - - internal DbConnectionPoolKey(string connectionString) - { - _connectionString = connectionString; - } - - protected DbConnectionPoolKey(DbConnectionPoolKey key) - { - _connectionString = key.ConnectionString; - } - - object ICloneable.Clone() - { - return new DbConnectionPoolKey(this); - } - - internal virtual string ConnectionString - { - get - { - return _connectionString; - } - - set - { - _connectionString = value; - } - } - - public override bool Equals(object obj) - { - if (obj == null || obj.GetType() != typeof(DbConnectionPoolKey)) - { - return false; - } - - DbConnectionPoolKey key = obj as DbConnectionPoolKey; - - return (key != null && _connectionString == key._connectionString); - } - - public override int GetHashCode() - { - return _connectionString == null ? 0 : _connectionString.GetHashCode(); - } - } -} diff --git a/src/System.Data.Odbc/src/Common/System/Data/Common/MultipartIdentifier.cs b/src/System.Data.Odbc/src/Common/System/Data/Common/MultipartIdentifier.cs deleted file mode 100644 index d36db51536a2..000000000000 --- a/src/System.Data.Odbc/src/Common/System/Data/Common/MultipartIdentifier.cs +++ /dev/null @@ -1,291 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Text; - -namespace System.Data.Common -{ - internal class MultipartIdentifier - { - private const int MaxParts = 4; - internal const int ServerIndex = 0; - internal const int CatalogIndex = 1; - internal const int SchemaIndex = 2; - internal const int TableIndex = 3; - - /* - Left quote strings need to correspond 1 to 1 with the right quote strings - example: "ab" "cd", passed in for the left and the right quote - would set a or b as a starting quote character. - If a is the starting quote char then c would be the ending quote char - otherwise if b is the starting quote char then d would be the ending quote character. - */ - internal static string[] ParseMultipartIdentifier(string name, string leftQuote, string rightQuote, string property, bool ThrowOnEmptyMultipartName) - { - return ParseMultipartIdentifier(name, leftQuote, rightQuote, '.', MaxParts, true, property, ThrowOnEmptyMultipartName); - } - - private enum MPIState - { - MPI_Value, - MPI_ParseNonQuote, - MPI_LookForSeparator, - MPI_LookForNextCharOrSeparator, - MPI_ParseQuote, - MPI_RightQuote, - } - - /* Core function for parsing the multipart identifier string. - * parameters: name - string to parse - * leftquote: set of characters which are valid quoting characters to initiate a quote - * rightquote: set of characters which are valid to stop a quote, array index's correspond to the leftquote array. - * separator: separator to use - * limit: number of names to parse out - * removequote:to remove the quotes on the returned string - */ - private static void IncrementStringCount(string name, string[] ary, ref int position, string property) - { - ++position; - int limit = ary.Length; - if (position >= limit) - { - throw ADP.InvalidMultipartNameToManyParts(property, name, limit); - } - ary[position] = string.Empty; - } - - private static bool IsWhitespace(char ch) - { - return Char.IsWhiteSpace(ch); - } - - internal static string[] ParseMultipartIdentifier(string name, string leftQuote, string rightQuote, char separator, int limit, bool removequotes, string property, bool ThrowOnEmptyMultipartName) - { - if (limit <= 0) - { - throw ADP.InvalidMultipartNameToManyParts(property, name, limit); - } - - if (-1 != leftQuote.IndexOf(separator) || -1 != rightQuote.IndexOf(separator) || leftQuote.Length != rightQuote.Length) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - - string[] parsedNames = new string[limit]; // return string array - int stringCount = 0; // index of current string in the buffer - MPIState state = MPIState.MPI_Value; // Initialize the starting state - - StringBuilder sb = new StringBuilder(name.Length); // String buffer to hold the string being currently built, init the string builder so it will never be resized - StringBuilder whitespaceSB = null; // String buffer to hold white space used when parsing nonquoted strings 'a b . c d' = 'a b' and 'c d' - char rightQuoteChar = ' '; // Right quote character to use given the left quote character found. - for (int index = 0; index < name.Length; ++index) - { - char testchar = name[index]; - switch (state) - { - case MPIState.MPI_Value: - { - int quoteIndex; - if (IsWhitespace(testchar)) - { // Is White Space then skip the whitespace - continue; - } - else - if (testchar == separator) - { // If we found a separator, no string was found, initialize the string we are parsing to Empty and the next one to Empty. - // This is NOT a redundant setting of string.Empty it solves the case where we are parsing ".foo" and we should be returning null, null, empty, foo - parsedNames[stringCount] = string.Empty; - IncrementStringCount(name, parsedNames, ref stringCount, property); - } - else - if (-1 != (quoteIndex = leftQuote.IndexOf(testchar))) - { // If we are a left quote - rightQuoteChar = rightQuote[quoteIndex]; // record the corresponding right quote for the left quote - sb.Length = 0; - if (!removequotes) - { - sb.Append(testchar); - } - state = MPIState.MPI_ParseQuote; - } - else - if (-1 != rightQuote.IndexOf(testchar)) - { // If we shouldn't see a right quote - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - { - sb.Length = 0; - sb.Append(testchar); - state = MPIState.MPI_ParseNonQuote; - } - break; - } - - case MPIState.MPI_ParseNonQuote: - { - if (testchar == separator) - { - parsedNames[stringCount] = sb.ToString(); // set the currently parsed string - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else // Quotes are not valid inside a non-quoted name - if (-1 != rightQuote.IndexOf(testchar)) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - if (-1 != leftQuote.IndexOf(testchar)) - { - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - if (IsWhitespace(testchar)) - { // If it is Whitespace - parsedNames[stringCount] = sb.ToString(); // Set the currently parsed string - if (null == whitespaceSB) - { - whitespaceSB = new StringBuilder(); - } - whitespaceSB.Length = 0; - whitespaceSB.Append(testchar); // start to record the white space, if we are parsing a name like "foo bar" we should return "foo bar" - state = MPIState.MPI_LookForNextCharOrSeparator; - } - else - { - sb.Append(testchar); - } - break; - } - - case MPIState.MPI_LookForNextCharOrSeparator: - { - if (!IsWhitespace(testchar)) - { // If it is not whitespace - if (testchar == separator) - { - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - { // If its not a separator and not whitespace - sb.Append(whitespaceSB); - sb.Append(testchar); - parsedNames[stringCount] = sb.ToString(); // Need to set the name here in case the string ends here. - state = MPIState.MPI_ParseNonQuote; - } - } - else - { - whitespaceSB.Append(testchar); - } - break; - } - - case MPIState.MPI_ParseQuote: - { - if (testchar == rightQuoteChar) - { // if se are on a right quote see if we are escaping the right quote or ending the quoted string - if (!removequotes) - { - sb.Append(testchar); - } - state = MPIState.MPI_RightQuote; - } - else - { - sb.Append(testchar); // Append what we are currently parsing - } - break; - } - - case MPIState.MPI_RightQuote: - { - if (testchar == rightQuoteChar) - { // If the next char is a another right quote then we were escaping the right quote - sb.Append(testchar); - state = MPIState.MPI_ParseQuote; - } - else - if (testchar == separator) - { // If its a separator then record what we've parsed - parsedNames[stringCount] = sb.ToString(); - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - if (!IsWhitespace(testchar)) - { // If it is not white space we got problems - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - else - { // It is a whitespace character so the following char should be whitespace, separator, or end of string anything else is bad - parsedNames[stringCount] = sb.ToString(); - state = MPIState.MPI_LookForSeparator; - } - break; - } - - case MPIState.MPI_LookForSeparator: - { - if (!IsWhitespace(testchar)) - { // If it is not whitespace - if (testchar == separator) - { // If it is a separator - IncrementStringCount(name, parsedNames, ref stringCount, property); - state = MPIState.MPI_Value; - } - else - { // Otherwise not a separator - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - } - break; - } - } - } - - // Resolve final states after parsing the string - switch (state) - { - case MPIState.MPI_Value: // These states require no extra action - case MPIState.MPI_LookForSeparator: - case MPIState.MPI_LookForNextCharOrSeparator: - break; - - case MPIState.MPI_ParseNonQuote: // Dump what ever was parsed - case MPIState.MPI_RightQuote: - parsedNames[stringCount] = sb.ToString(); - break; - - case MPIState.MPI_ParseQuote: // Invalid Ending States - default: - throw ADP.InvalidMultipartNameIncorrectUsageOfQuotes(property, name); - } - - if (parsedNames[0] == null) - { - if (ThrowOnEmptyMultipartName) - { - throw ADP.InvalidMultipartName(property, name); // Name is entirely made up of whitespace - } - } - else - { - // Shuffle the parsed name, from left justification to right justification, i.e. [a][b][null][null] goes to [null][null][a][b] - int offset = limit - stringCount - 1; - if (offset > 0) - { - for (int x = limit - 1; x >= offset; --x) - { - parsedNames[x] = parsedNames[x - offset]; - parsedNames[x - offset] = null; - } - } - } - return parsedNames; - } - } -} \ No newline at end of file diff --git a/src/System.Data.Odbc/src/Common/System/Data/Common/NameValuePair.cs b/src/System.Data.Odbc/src/Common/System/Data/Common/NameValuePair.cs deleted file mode 100644 index 86962260f6df..000000000000 --- a/src/System.Data.Odbc/src/Common/System/Data/Common/NameValuePair.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics; -using System.Runtime.Serialization; - -namespace System.Data.Common -{ - [Serializable] // MDAC 83147 - internal sealed class NameValuePair - { - private readonly string _name; - private readonly string _value; - [OptionalField(VersionAdded = 2)] - private readonly int _length; - private NameValuePair _next; - - internal NameValuePair(string name, string value, int length) - { - System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(name), "empty keyname"); - _name = name; - _value = value; - _length = length; - } - - internal int Length - { - get - { - // this property won't exist when deserialized from Everett to Whidbey - // it shouldn't matter for DbConnectionString/DbDataPermission - // which should only use Length during construction - // not deserialization or post-ctor runtime - Debug.Assert(0 < _length, "NameValuePair zero Length usage"); - return _length; - } - } - internal string Name - { - get - { - return _name; - } - } - internal NameValuePair Next - { - get - { - return _next; - } - set - { - if ((null != _next) || (null == value)) - { - throw ADP.InternalError(ADP.InternalErrorCode.NameValuePairNext); - } - _next = value; - } - } - internal string Value - { - get - { - return _value; - } - } - } -} diff --git a/src/System.Data.Odbc/src/System.Data.Odbc.csproj b/src/System.Data.Odbc/src/System.Data.Odbc.csproj index 3d0065c83e65..6a8afa0298c2 100644 --- a/src/System.Data.Odbc/src/System.Data.Odbc.csproj +++ b/src/System.Data.Odbc/src/System.Data.Odbc.csproj @@ -18,10 +18,14 @@ - + + System\Data\Common\DbConnectionPoolKey.cs + - + + Common\System\Data\Common\NameValuePair.cs + @@ -94,7 +98,9 @@ Common\System\NotImplemented.cs - + + Common\System\Data\Common\MultipartIdentifier.cs + diff --git a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj index 9f2cbbe81de6..5d8308fc8c2d 100644 --- a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj +++ b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj @@ -40,7 +40,9 @@ - + + System\Data\Common\DbConnectionPoolKey.cs + System\Data\Common\FieldNameLookup.cs @@ -48,8 +50,12 @@ System\Data\Common\BasicFieldNameLookup.cs - - + + System\Data\Common\MultipartIdentifier.cs + + + System\Data\Common\NameValuePair.cs + diff --git a/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionPoolKey.cs b/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionPoolKey.cs deleted file mode 100644 index 2b4d431580af..000000000000 --- a/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionPoolKey.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - - - -//------------------------------------------------------------------------------ - -using System.Diagnostics; - -namespace System.Data.Common -{ - // DbConnectionPoolKey: Base class implementation of a key to connection pool groups - // Only connection string is used as a key - internal class DbConnectionPoolKey - { - private string _connectionString; - - internal DbConnectionPoolKey(string connectionString) - { - _connectionString = connectionString; - } - - protected DbConnectionPoolKey(DbConnectionPoolKey key) - { - _connectionString = key.ConnectionString; - } - - internal virtual DbConnectionPoolKey Clone() - { - return new DbConnectionPoolKey(this); - } - - internal virtual string ConnectionString - { - get - { - return _connectionString; - } - - set - { - _connectionString = value; - } - } - - public override bool Equals(object obj) - { - DbConnectionPoolKey key = obj as DbConnectionPoolKey; - Debug.Assert(obj.GetType() == typeof(DbConnectionPoolKey), "Derived classes should not be using DbConnectionPoolKey.Equals"); - - return (key != null && _connectionString == key._connectionString); - } - - public override int GetHashCode() - { - return _connectionString == null ? 0 : _connectionString.GetHashCode(); - } - } -} diff --git a/src/System.Data.SqlClient/src/System/Data/Common/NameValuePair.cs b/src/System.Data.SqlClient/src/System/Data/Common/NameValuePair.cs deleted file mode 100644 index 0ff498cbfc58..000000000000 --- a/src/System.Data.SqlClient/src/System/Data/Common/NameValuePair.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - - - -//------------------------------------------------------------------------------ - -using System.Diagnostics; - - -namespace System.Data.Common -{ - sealed internal class NameValuePair - { - readonly private string _name; - readonly private string _value; - readonly private int _length; - private NameValuePair _next; - - internal NameValuePair(string name, string value, int length) - { - System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(name), "empty keyname"); - _name = name; - _value = value; - _length = length; - } - - internal int Length - { - get - { - // this property won't exist when deserialized from Everett to Whidbey - // it shouldn't matter for DbConnectionString/DbDataPermission - // which should only use Length during construction - // not deserialization or post-ctor runtime - Debug.Assert(0 < _length, "NameValuePair zero Length usage"); - return _length; - } - } - internal string Name - { - get - { - return _name; - } - } - internal NameValuePair Next - { - get - { - return _next; - } - set - { - if ((null != _next) || (null == value)) - { - throw ADP.InternalError(ADP.InternalErrorCode.NameValuePairNext); - } - _next = value; - } - } - internal string Value - { - get - { - return _value; - } - } - } -} diff --git a/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionPoolKey.cs b/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionPoolKey.cs index b2a7dd71c873..6f1eda32b61b 100644 --- a/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionPoolKey.cs +++ b/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlConnectionPoolKey.cs @@ -26,7 +26,7 @@ private SqlConnectionPoolKey(SqlConnectionPoolKey key) : base(key) CalculateHashCode(); } - internal override DbConnectionPoolKey Clone() + public override object Clone() { return new SqlConnectionPoolKey(this); } From 008877e13652b28fd65e421466bcc573f7bee633 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Fri, 14 Apr 2017 18:50:31 -0500 Subject: [PATCH 063/336] Fix S.IO.FS.Performance tests on uapaot (#18403) * Fix S.IO.FS.Performance tests on uapaot * Don't be windows only --- .../tests/Performance/Configurations.props | 8 ++++++++ .../System.IO.FileSystem.Performance.Tests.csproj | 5 +---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 src/System.IO.FileSystem/tests/Performance/Configurations.props diff --git a/src/System.IO.FileSystem/tests/Performance/Configurations.props b/src/System.IO.FileSystem/tests/Performance/Configurations.props new file mode 100644 index 000000000000..78953dfc8851 --- /dev/null +++ b/src/System.IO.FileSystem/tests/Performance/Configurations.props @@ -0,0 +1,8 @@ + + + + + netstandard; + + + diff --git a/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj b/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj index 610600b82a9e..aa306a388c24 100644 --- a/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj +++ b/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj @@ -1,8 +1,5 @@  - - Windows_Debug - InnerLoop;OuterLoop @@ -38,4 +35,4 @@ - \ No newline at end of file + From 8391ec2bd84760622fe6f4a895617c881628af55 Mon Sep 17 00:00:00 2001 From: Lakshmi Priya Sekar Date: Fri, 14 Apr 2017 16:59:50 -0700 Subject: [PATCH 064/336] Read the child process output before wait for its exit. --- .../tests/FunctionalTests/UnixPingUtilityTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs b/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs index 525c651ebe3e..8346b9448c4c 100644 --- a/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs +++ b/src/System.Net.Ping/tests/FunctionalTests/UnixPingUtilityTests.cs @@ -36,9 +36,9 @@ public static async Task PacketSizeIsRespected(int payloadSize) psi.RedirectStandardError = true; psi.RedirectStandardOutput = true; Process p = Process.Start(psi); - Assert.True(p.WaitForExit(TestSettings.PingTimeout), "Ping process did not exit in " + TestSettings.PingTimeout + " ms."); string pingOutput = p.StandardOutput.ReadToEnd(); + Assert.True(p.WaitForExit(TestSettings.PingTimeout), "Ping process did not exit in " + TestSettings.PingTimeout + " ms."); try { From 3414dbfa3583b0ba091dcf187925eb5a7be25c98 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 14 Apr 2017 20:17:31 -0400 Subject: [PATCH 065/336] Reduce XmlSchemaTests from ~3 minutes to ~3 seconds (#18398) * Avoid doing a lot of throw-away work in tests * Reduce size of input to bug298991Sequence --- .../src/System/Xml/Schema/ContentValidator.cs | 34 +++++++++++++------ .../Xml/Schema/SchemaCollectionCompiler.cs | 7 ++-- .../System/Xml/Schema/SchemaSetCompiler.cs | 7 ++-- .../XmlSchemaSet/TC_SchemaSet_Add_URL.cs | 3 +- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/System.Private.Xml/src/System/Xml/Schema/ContentValidator.cs b/src/System.Private.Xml/src/System/Xml/Schema/ContentValidator.cs index ba90d4d2ca1f..9d743ae2ddfe 100644 --- a/src/System.Private.Xml/src/System/Xml/Schema/ContentValidator.cs +++ b/src/System.Private.Xml/src/System/Xml/Schema/ContentValidator.cs @@ -1287,9 +1287,12 @@ public ContentValidator Finish(bool useDFA) } #if DEBUG - StringBuilder bb = new StringBuilder(); - _contentNode.Dump(bb, _symbols, _positions); - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchemaContentModel.Enabled, "\t\t\tContent : " + bb.ToString()); + if (DiagnosticsSwitches.XmlSchemaContentModel.Enabled) + { + var bb = new StringBuilder(); + _contentNode.Dump(bb, _symbols, _positions); + Debug.WriteLine("\t\t\tContent : " + bb.ToString()); + } #endif // Add end marker @@ -1302,9 +1305,12 @@ public ContentValidator Finish(bool useDFA) _contentNode.ExpandTree(contentRoot, _symbols, _positions); #if DEBUG - bb = new StringBuilder(); - contentRoot.LeftChild.Dump(bb, _symbols, _positions); - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchemaContentModel.Enabled, "\t\t\tExpended: " + bb.ToString()); + if (DiagnosticsSwitches.XmlSchemaContentModel.Enabled) + { + var bb = new StringBuilder(); + contentRoot.LeftChild.Dump(bb, _symbols, _positions); + Debug.WriteLine("\t\t\tExpended: " + bb.ToString()); + } #endif // calculate followpos @@ -1319,8 +1325,11 @@ public ContentValidator Finish(bool useDFA) } contentRoot.ConstructPos(firstpos, lastpos, followpos); #if DEBUG - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchemaContentModel.Enabled, "firstpos, lastpos, followpos"); - SequenceNode.WritePos(firstpos, lastpos, followpos); + if (DiagnosticsSwitches.XmlSchemaContentModel.Enabled) + { + Debug.WriteLine("firstpos, lastpos, followpos"); + SequenceNode.WritePos(firstpos, lastpos, followpos); + } #endif if (_minMaxNodesCount > 0) { //If the tree has any terminal range nodes @@ -1355,9 +1364,12 @@ public ContentValidator Finish(bool useDFA) transitionTable = BuildTransitionTable(firstpos, followpos, endMarker.Pos); } #if DEBUG - bb = new StringBuilder(); - Dump(bb, followpos, transitionTable); - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchemaContentModel.Enabled, bb.ToString()); + if (DiagnosticsSwitches.XmlSchemaContentModel.Enabled) + { + var bb = new StringBuilder(); + Dump(bb, followpos, transitionTable); + Debug.WriteLine(bb.ToString()); + } #endif if (transitionTable != null) { diff --git a/src/System.Private.Xml/src/System/Xml/Schema/SchemaCollectionCompiler.cs b/src/System.Private.Xml/src/System/Xml/Schema/SchemaCollectionCompiler.cs index ba150fb28c25..db2639232101 100644 --- a/src/System.Private.Xml/src/System/Xml/Schema/SchemaCollectionCompiler.cs +++ b/src/System.Private.Xml/src/System/Xml/Schema/SchemaCollectionCompiler.cs @@ -2465,8 +2465,11 @@ private ContentValidator CompileComplexContent(XmlSchemaComplexType complexType) { ParticleContentValidator contentValidator = new ParticleContentValidator(complexType.ContentType); #if DEBUG - string name = complexType.Name != null ? complexType.Name : string.Empty; - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchema.TraceVerbose, "CompileComplexContent: " + name + DumpContentModel(particle)); + if (DiagnosticsSwitches.XmlSchema.TraceVerbose) + { + string name = complexType.Name != null ? complexType.Name : string.Empty; + Debug.WriteLine("CompileComplexContent: " + name + DumpContentModel(particle)); + } #endif try { diff --git a/src/System.Private.Xml/src/System/Xml/Schema/SchemaSetCompiler.cs b/src/System.Private.Xml/src/System/Xml/Schema/SchemaSetCompiler.cs index f91b652808df..ff0f66e568e5 100644 --- a/src/System.Private.Xml/src/System/Xml/Schema/SchemaSetCompiler.cs +++ b/src/System.Private.Xml/src/System/Xml/Schema/SchemaSetCompiler.cs @@ -2902,8 +2902,11 @@ private ContentValidator CompileComplexContent(XmlSchemaComplexType complexType) { ParticleContentValidator contentValidator = new ParticleContentValidator(complexType.ContentType, CompilationSettings.EnableUpaCheck); #if DEBUG - string name = complexType.Name != null ? complexType.Name : string.Empty; - Debug.WriteLineIf(DiagnosticsSwitches.XmlSchema.TraceVerbose, "CompileComplexContent: " + name + DumpContentModel(particle)); + if (DiagnosticsSwitches.XmlSchema.TraceVerbose) + { + string name = complexType.Name != null ? complexType.Name : string.Empty; + Debug.WriteLine("CompileComplexContent: " + name + DumpContentModel(particle)); + } #endif try { diff --git a/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/TC_SchemaSet_Add_URL.cs b/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/TC_SchemaSet_Add_URL.cs index 4fe63675ecb8..ee34bfc1cb4c 100644 --- a/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/TC_SchemaSet_Add_URL.cs +++ b/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/TC_SchemaSet_Add_URL.cs @@ -377,8 +377,7 @@ public void verifyXsd(string file) [OuterLoop] [Theory] - [InlineData(5000, "5000s.xsd")] - [InlineData(10000, "10000s.xsd")] + [InlineData(1000, "1000s.xsd")] //[Variation(Desc = "Bug 298991 XMLSchemaSet.Compile cause StackOverflow - Sequence, 5000", Params = new object[] { 5000, "5000s.xsd" })] //[Variation(Desc = "Bug 298991 XMLSchemaSet.Compile cause StackOverflow - Sequence, 10000", Params = new object[] { 10000, "10000s.xsd" })] public void bug298991Sequence(int size, string xsdFileName) From 464fb4f6bd368d88c845128fecb0032cd9746adc Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Fri, 14 Apr 2017 17:32:54 -0700 Subject: [PATCH 066/336] dead --- .../src/System/misc.cs | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/src/System.ComponentModel.TypeConverter/src/System/misc.cs b/src/System.ComponentModel.TypeConverter/src/System/misc.cs index af5204188a3e..598723f1eec5 100644 --- a/src/System.ComponentModel.TypeConverter/src/System/misc.cs +++ b/src/System.ComponentModel.TypeConverter/src/System/misc.cs @@ -12,43 +12,6 @@ namespace System { - [AttributeUsage(AttributeTargets.All)] - internal sealed class SRDescriptionAttribute : DescriptionAttribute - { - private bool _replaced; - - public override string Description - { - get - { - if (!_replaced) - { - _replaced = true; - base.DescriptionValue = SR.GetResourceString(base.Description, ""); - } - return base.Description; - } - } - - public SRDescriptionAttribute(string description) : base(description) - { - } - } - - [AttributeUsage(AttributeTargets.All)] - internal sealed class SRCategoryAttribute : CategoryAttribute - { - public SRCategoryAttribute(string category) : base(category) - { - } - - protected override string GetLocalizedString(string value) - { - return SR.GetResourceString(value, ""); - } - } - - // from Misc/SecurityUtils.cs internal static class SecurityUtils { From 037a94b145373880d6bf23235d446bb5d4f24236 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Fri, 14 Apr 2017 00:40:22 +0100 Subject: [PATCH 067/336] Remove dead code from S.L.Expressions Either truly dead, or default constructors with default access and no XML comment and so same as compiler will produce. --- .../src/System.Linq.Expressions.csproj | 3 - .../Linq/Expressions/Compiler/AnalyzedTree.cs | 5 -- .../Linq/Expressions/DynamicExpression.cs | 2 +- .../Interpreter/ArrayOperations.cs | 2 +- .../Expressions/Interpreter/BranchLabel.cs | 2 - .../Interpreter/CallInstruction.cs | 2 - .../Interpreter/ControlFlowInstructions.cs | 6 -- .../Interpreter/InstructionList.cs | 10 ---- .../Expressions/Interpreter/LocalAccess.cs | 2 - .../Expressions/Interpreter/LocalVariables.cs | 59 ------------------- .../Linq/Expressions/Interpreter/Utilities.cs | 35 +++-------- 11 files changed, 10 insertions(+), 118 deletions(-) diff --git a/src/System.Linq.Expressions/src/System.Linq.Expressions.csproj b/src/System.Linq.Expressions/src/System.Linq.Expressions.csproj index 1dca7caef67a..cbffdb49ecc8 100644 --- a/src/System.Linq.Expressions/src/System.Linq.Expressions.csproj +++ b/src/System.Linq.Expressions/src/System.Linq.Expressions.csproj @@ -65,9 +65,6 @@ - - Common\System\NotImplemented.cs - diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/AnalyzedTree.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/AnalyzedTree.cs index 7b0b8e8e1305..e78532d4f94f 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/AnalyzedTree.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/AnalyzedTree.cs @@ -10,10 +10,5 @@ internal sealed class AnalyzedTree { internal readonly Dictionary Scopes = new Dictionary(); internal readonly Dictionary Constants = new Dictionary(); - - // Created by VariableBinder - internal AnalyzedTree() - { - } } } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs index 18460f173132..9ed1ed10fcbd 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs @@ -818,7 +818,7 @@ internal TypedDynamicExpression4(Type retType, Type delegateType, CallSiteBinder #endregion - internal class ExpressionExtension + internal static class ExpressionExtension { /// /// Creates a that represents a dynamic operation bound by the provided . diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ArrayOperations.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ArrayOperations.cs index 4b8a416085f6..e9a10b5edf2f 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ArrayOperations.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ArrayOperations.cs @@ -149,7 +149,7 @@ public override int Run(InterpretedFrame frame) } } - internal sealed class ConvertHelper + internal static class ConvertHelper { public static int ToInt32NoNull(object val) { diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/BranchLabel.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/BranchLabel.cs index 61f60374ca08..e90b1a59d8a6 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/BranchLabel.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/BranchLabel.cs @@ -40,8 +40,6 @@ internal sealed class BranchLabel // that need to be updated after we emit the label. private List _forwardBranchFixups; - public BranchLabel() { } - internal int LabelIndex { get; set; } = UnknownIndex; internal bool HasRuntimeLabel => LabelIndex != UnknownIndex; internal int TargetIndex => _targetIndex; diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/CallInstruction.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/CallInstruction.cs index bdb8f3fc4c74..5fa7ec7a79d7 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/CallInstruction.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/CallInstruction.cs @@ -16,8 +16,6 @@ internal abstract partial class CallInstruction : Instruction #region Construction - internal CallInstruction() { } - public override string InstructionName => "Call"; #if FEATURE_DLG_INVOKE diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ControlFlowInstructions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ControlFlowInstructions.cs index 6681da46361e..b8cb410d56eb 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ControlFlowInstructions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/ControlFlowInstructions.cs @@ -62,8 +62,6 @@ public override Instruction[] Cache } } - internal BranchFalseInstruction() { } - public override string InstructionName => "BranchFalse"; public override int ConsumedStack => 1; @@ -96,8 +94,6 @@ public override Instruction[] Cache } } - internal BranchTrueInstruction() { } - public override string InstructionName => "BranchTrue"; public override int ConsumedStack => 1; @@ -130,8 +126,6 @@ public override Instruction[] Cache } } - internal CoalescingBranchInstruction() { } - public override string InstructionName => "CoalescingBranch"; public override int ConsumedStack => 1; public override int ProducedStack => 1; diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/InstructionList.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/InstructionList.cs index d267bb6a91b0..99f27c0ce07e 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/InstructionList.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/InstructionList.cs @@ -821,21 +821,11 @@ public void EmitDefaultValue(Type type) Emit(new DefaultValueInstruction(type)); } - public void EmitNew(ConstructorInfo constructorInfo) - { - EmitNew(constructorInfo, constructorInfo.GetParametersCached()); - } - public void EmitNew(ConstructorInfo constructorInfo, ParameterInfo[] parameters) { Emit(new NewInstruction(constructorInfo, parameters.Length)); } - public void EmitByRefNew(ConstructorInfo constructorInfo, ByRefUpdater[] updaters) - { - EmitByRefNew(constructorInfo, constructorInfo.GetParametersCached(), updaters); - } - public void EmitByRefNew(ConstructorInfo constructorInfo, ParameterInfo[] parameters, ByRefUpdater[] updaters) { Emit(new ByRefNewInstruction(constructorInfo, parameters.Length, updaters)); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalAccess.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalAccess.cs index 6277addffe5e..d47b2b5d327a 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalAccess.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalAccess.cs @@ -219,8 +219,6 @@ internal sealed class ValueTypeCopyInstruction : Instruction { public static readonly ValueTypeCopyInstruction Instruction = new ValueTypeCopyInstruction(); - public ValueTypeCopyInstruction() { } - public override int ConsumedStack => 1; public override int ProducedStack => 1; public override string InstructionName => "ValueTypeCopy"; diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalVariables.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalVariables.cs index 03b3879df097..d55fefda508b 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalVariables.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LocalVariables.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Globalization; -using System.Runtime.CompilerServices; namespace System.Linq.Expressions.Interpreter { @@ -41,12 +40,6 @@ internal LocalVariable(int index, bool closure) _flags = (closure ? InClosureFlag : 0); } - internal Expression LoadFromArray(Expression frameData, Expression closure, Type parameterType) - { - Expression result = Expression.ArrayAccess(InClosure ? closure : frameData, Utils.Constant(Index)); - return (IsBoxed && !InClosure) ? Expression.Convert(result, typeof(StrongBox)) : result; - } - public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "{0}: {1} {2}", Index, IsBoxed ? "boxed" : null, InClosure ? "in closure" : null); @@ -83,16 +76,6 @@ public override int GetHashCode() } return Parameter.GetHashCode() ^ Index.GetHashCode(); } - - public static bool operator ==(LocalDefinition self, LocalDefinition other) - { - return self.Index == other.Index && self.Parameter == other.Parameter; - } - - public static bool operator !=(LocalDefinition self, LocalDefinition other) - { - return self.Index != other.Index || self.Parameter != other.Parameter; - } } internal sealed class LocalVariables @@ -102,10 +85,6 @@ internal sealed class LocalVariables private int _localCount, _maxLocalCount; - internal LocalVariables() - { - } - public LocalDefinition DefineLocal(ParameterExpression variable, int start) { var result = new LocalVariable(_localCount++, closure: false); @@ -173,22 +152,6 @@ internal void Box(ParameterExpression variable, InstructionList instructions) public int LocalCount => _maxLocalCount; - public int GetOrDefineLocal(ParameterExpression var) - { - int index = GetLocalIndex(var); - if (index == -1) - { - return DefineLocal(var, 0).Index; - } - return index; - } - - public int GetLocalIndex(ParameterExpression var) - { - VariableScope loc; - return _variables.TryGetValue(var, out loc) ? loc.Variable.Index : -1; - } - public bool TryGetLocalOrClosure(ParameterExpression var, out LocalVariable local) { VariableScope scope; @@ -206,28 +169,6 @@ public bool TryGetLocalOrClosure(ParameterExpression var, out LocalVariable loca return false; } - /// - /// Gets a copy of the local variables which are defined in the current scope. - /// - /// - internal Dictionary CopyLocals() - { - var res = new Dictionary(_variables.Count); - foreach (KeyValuePair keyValue in _variables) - { - res[keyValue.Key] = keyValue.Value.Variable; - } - return res; - } - - /// - /// Checks to see if the given variable is defined within the current local scope. - /// - internal bool ContainsVariable(ParameterExpression variable) - { - return _variables.ContainsKey(variable); - } - /// /// Gets the variables which are defined in an outer scope and available within the current scope. /// diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/Utilities.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/Utilities.cs index 6f3627e8c7a6..0987f26731e3 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/Utilities.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/Utilities.cs @@ -180,13 +180,8 @@ internal class HybridReferenceDictionary where TKey : class { private KeyValuePair[] _keysAndValues; private Dictionary _dict; - private int _count; private const int ArraySize = 10; - public HybridReferenceDictionary() - { - } - public bool TryGetValue(TKey key, out TValue value) { Debug.Assert(key != null); @@ -210,13 +205,13 @@ public bool TryGetValue(TKey key, out TValue value) return false; } - public bool Remove(TKey key) + public void Remove(TKey key) { Debug.Assert(key != null); if (_dict != null) { - return _dict.Remove(key); + _dict.Remove(key); } else if (_keysAndValues != null) { @@ -225,13 +220,10 @@ public bool Remove(TKey key) if (_keysAndValues[i].Key == key) { _keysAndValues[i] = new KeyValuePair(); - _count--; - return true; + return; } } } - - return false; } public bool ContainsKey(TKey key) @@ -242,11 +234,13 @@ public bool ContainsKey(TKey key) { return _dict.ContainsKey(key); } - else if (_keysAndValues != null) + + KeyValuePair[] keysAndValues = _keysAndValues; + if (keysAndValues != null) { - for (int i = 0; i < _keysAndValues.Length; i++) + for (int i = 0; i < keysAndValues.Length; i++) { - if (_keysAndValues[i].Key == key) + if (keysAndValues[i].Key == key) { return true; } @@ -256,18 +250,6 @@ public bool ContainsKey(TKey key) return false; } - public int Count - { - get - { - if (_dict != null) - { - return _dict.Count; - } - return _count; - } - } - public IEnumerator> GetEnumerator() { if (_dict != null) @@ -341,7 +323,6 @@ public TValue this[TKey key] if (index != -1) { - _count++; _keysAndValues[index] = new KeyValuePair(key, value); } else From 21d8b58a7257d62c4ae1426ed1ec67cd590655e0 Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Fri, 14 Apr 2017 17:48:37 -0700 Subject: [PATCH 068/336] Dead code in Registry lib --- .../Microsoft/Win32/RegistryKey.FileSystem.cs | 10 ---------- .../src/Microsoft/Win32/RegistryKey.Windows.cs | 17 ----------------- 2 files changed, 27 deletions(-) diff --git a/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.FileSystem.cs b/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.FileSystem.cs index b0eaa55c5d93..49bd6fdf11e6 100644 --- a/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.FileSystem.cs +++ b/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.FileSystem.cs @@ -112,16 +112,6 @@ private void SetValueCore(string name, Object value, RegistryValueKind valueKind throw new PlatformNotSupportedException(SR.PlatformNotSupported_Registry); } - private bool ContainsRegistryValueCore(string name) - { - throw new PlatformNotSupportedException(SR.PlatformNotSupported_Registry); - } - - private static bool IsWritable(int rights) - { - throw new PlatformNotSupportedException(SR.PlatformNotSupported_Registry); - } - private static int GetRegistryKeyAccess(bool isWritable) { throw new PlatformNotSupportedException(SR.PlatformNotSupported_Registry); diff --git a/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.Windows.cs b/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.Windows.cs index 0f69957aea6e..208200ad5643 100644 --- a/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.Windows.cs +++ b/src/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.Windows.cs @@ -924,14 +924,6 @@ private unsafe void SetValueCore(string name, object value, RegistryValueKind va } } - private bool ContainsRegistryValueCore(string name) - { - int type = 0; - int datasize = 0; - int retval = Interop.Advapi32.RegQueryValueEx(_hkey, name, null, ref type, (byte[])null, ref datasize); - return retval == 0; - } - /// /// After calling GetLastWin32Error(), it clears the last error field, /// so you must save the HResult and pass it to this method. This method @@ -988,15 +980,6 @@ private static void Win32ErrorStatic(int errorCode, string str) } } - private static bool IsWritable(int rights) - { - return (rights & (Interop.Advapi32.RegistryOperations.KEY_SET_VALUE | - Interop.Advapi32.RegistryOperations.KEY_CREATE_SUB_KEY | - (int)RegistryRights.Delete | - (int)RegistryRights.TakeOwnership | - (int)RegistryRights.ChangePermissions)) != 0; - } - private static int GetRegistryKeyAccess(bool isWritable) { int winAccess; From 93e98cd95c630d269ef42abe791de3de8e0b1c73 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 14 Apr 2017 18:40:44 -0700 Subject: [PATCH 069/336] Update CoreClr to preview1-25215-01 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 06c9300d7c20..04c8aef9e447 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 344d7f54518693b73c16e19a6d6ebd29b928ecad - 344d7f54518693b73c16e19a6d6ebd29b928ecad + 11150940bb3a9beacf25201309df67b87f53e074 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 cf7c0960a7478e132dd1ccbed523635038a1546a cf7c0960a7478e132dd1ccbed523635038a1546a @@ -21,7 +21,7 @@ preview1-25214-03 - preview1-25214-03 + preview1-25215-01 beta-25016-01 beta-25214-00 beta-25214-00 From 9d895ebfeeb32dec8941c85f6cca4d317b8d810a Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Fri, 14 Apr 2017 21:02:17 -0700 Subject: [PATCH 070/336] Fix tests to test difference in behavior correctly in ProcessStartInfo (#18411) * Fix tests to test difference in behavior correctly in ProcessStartInfo * Fix Comment --- .../tests/ProcessStartInfoTests.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs index 473c3ce7633d..6746a5eaa8c8 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs @@ -234,9 +234,10 @@ public void TestEnvironmentOfChildProcess() } } - [PlatformSpecific(TestPlatforms.Windows)] // UseShellExecute currently not supported on Windows + [PlatformSpecific(TestPlatforms.Windows)] // UseShellExecute currently not supported on Windows on .NET Core [Fact] - public void UseShellExecute_GetSetWindows_Success() + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Desktop UseShellExecute is set to true by default but UseShellExecute=true is not supported on Core")] + public void UseShellExecute_GetSetWindows_Success_Netcore() { ProcessStartInfo psi = new ProcessStartInfo(); Assert.False(psi.UseShellExecute); @@ -249,6 +250,21 @@ public void UseShellExecute_GetSetWindows_Success() Assert.False(psi.UseShellExecute, "UseShellExecute=true is not supported on onecore."); } + [PlatformSpecific(TestPlatforms.Windows)] + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "Desktop UseShellExecute is set to true by default but UseShellExecute=true is not supported on Core")] + public void UseShellExecute_GetSetWindows_Success_Netfx() + { + ProcessStartInfo psi = new ProcessStartInfo(); + Assert.True(psi.UseShellExecute); + + psi.UseShellExecute = false; + Assert.False(psi.UseShellExecute); + + psi.UseShellExecute = true; + Assert.True(psi.UseShellExecute); + } + [PlatformSpecific(TestPlatforms.AnyUnix)] // UseShellExecute currently not supported on Windows [Fact] public void TestUseShellExecuteProperty_SetAndGet_Unix() From c8ab6e586c16e62abf8bdd516bf86fc13d311c73 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Fri, 14 Apr 2017 21:10:07 -0700 Subject: [PATCH 071/336] Fix CopyTo(this T[] array, Span destination) for covariant arrays --- src/System.Memory/src/System/SpanExtensions.cs | 2 +- src/System.Memory/tests/Span/CopyTo.cs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/System.Memory/src/System/SpanExtensions.cs b/src/System.Memory/src/System/SpanExtensions.cs index 256c7f251402..343146b4349f 100644 --- a/src/System.Memory/src/System/SpanExtensions.cs +++ b/src/System.Memory/src/System/SpanExtensions.cs @@ -293,7 +293,7 @@ public static Span AsSpan(this ArraySegment arraySegment) [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void CopyTo(this T[] array, Span destination) { - array.AsSpan().CopyTo(destination); + new ReadOnlySpan(array).CopyTo(destination); } } } \ No newline at end of file diff --git a/src/System.Memory/tests/Span/CopyTo.cs b/src/System.Memory/tests/Span/CopyTo.cs index dab71cff154e..8330bea04128 100644 --- a/src/System.Memory/tests/Span/CopyTo.cs +++ b/src/System.Memory/tests/Span/CopyTo.cs @@ -182,6 +182,15 @@ public static void CopyToShorterArray() Assert.Equal(expected, dst); // CopyTo() checks for sufficient space before doing any copying. } + [Fact] + public static void CopyToCovariantArray() + { + string[] src = new string[] { "Hello" }; + object[] dst = new object[] { "world" }; + + src.CopyTo(dst); + Assert.Equal("Hello", dst[0]); + } // This test case tests the Span.CopyTo method for large buffers of size 4GB or more. In the fast path, // the CopyTo method performs copy in chunks of size 4GB (uint.MaxValue) with final iteration copying From 4c53e73f047976c2dac69c4e87b8a7e9043aeb2f Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Fri, 14 Apr 2017 16:20:59 +0200 Subject: [PATCH 072/336] attribute set --- .../src/System/Security/Cryptography/ECCurve.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/ECCurve.cs b/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/ECCurve.cs index 23b1483c9461..ca06f3cda7c2 100644 --- a/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/ECCurve.cs +++ b/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography/ECCurve.cs @@ -13,6 +13,7 @@ namespace System.Security.Cryptography /// The CurveType property determines whether the curve is a named curve or an explicit curve /// which is either a prime curve or a characteristic-2 curve. /// + [DebuggerDisplay("ECCurve: {Oid}")] public partial struct ECCurve { /// From c13adf13144fd5e5b88593481d1c129ade8fa558 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 13 Apr 2017 15:12:19 -0400 Subject: [PATCH 073/336] Change FileSystemInfo.CreationTime fall back on Unix If birth time isn't available, CreationTime currently falls back to `default(DateTimeOffset)`. This changes it to instead fall back to the last access (st_atime) or status change time (st_ctime), whichever is older. --- .../src/System/IO/FileSystemInfo.Unix.cs | 14 +++++++------- .../IO/IsolatedStorage/GetCreationTimeTests.cs | 10 +++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs index 716076dceb1c..dfe55128cc87 100644 --- a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs +++ b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs @@ -163,16 +163,16 @@ DateTimeOffset IFileSystemObject.CreationTime get { EnsureStatInitialized(); - return (_fileStatus.Flags & Interop.Sys.FileStatusFlags.HasBirthTime) != 0 ? - DateTimeOffset.FromUnixTimeSeconds(_fileStatus.BirthTime).ToLocalTime() : - default(DateTimeOffset); + long rawTime = (_fileStatus.Flags & Interop.Sys.FileStatusFlags.HasBirthTime) != 0 ? + _fileStatus.BirthTime : + Math.Min(_fileStatus.ATime, Math.Min(_fileStatus.CTime, _fileStatus.MTime)); // fall back to the oldest time we have + return DateTimeOffset.FromUnixTimeSeconds(rawTime).ToLocalTime(); } set { - // The ctime in Unix can be interpreted differently by different formats so there isn't - // a reliable way to set this; however, we can't just do nothing since the FileSystemWatcher - // specifically looks for this call to make a Metatdata Change, so we should set the - // LastAccessTime of the file to cause the metadata change we need. + // There isn't a reliable way to set this; however, we can't just do nothing since the + // FileSystemWatcher specifically looks for this call to make a Metatdata Change, so we + // should set the LastAccessTime of the file to cause the metadata change we need. LastAccessTime = LastAccessTime; } } diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/GetCreationTimeTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/GetCreationTimeTests.cs index c751815b1177..ab53319c1aaf 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/GetCreationTimeTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/GetCreationTimeTests.cs @@ -63,12 +63,16 @@ public void GetCreationTime_GetsTime_Unix() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { + DateTimeOffset before = DateTimeOffset.Now; + string file = "GetCreationTime_GetsTime"; isf.CreateTestFile(file); - // Filesystem timestamps vary in granularity, we can't make a positive assertion that - // the time will come before or after the current time. - Assert.Equal(default(DateTimeOffset).ToLocalTime(), isf.GetCreationTime(file)); + DateTimeOffset after = DateTimeOffset.Now; + + DateTimeOffset creationTime = isf.GetCreationTime(file); + Assert.InRange(creationTime, before.AddSeconds(-10), after.AddSeconds(10)); // +/- 10 for some wiggle room + Assert.Equal(creationTime, isf.GetCreationTime(file)); } } From 8fd9800cab67fe7eac59be441eadaec048234ed1 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 15 Apr 2017 13:49:27 +0200 Subject: [PATCH 074/336] Removed ActiveIssue comment in favor of explanation why this behavior is intended on Windows --- .../tests/FunctionalTests/HttpClientHandlerTest.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs index 08da3f19b71f..5c311dda3a98 100644 --- a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs +++ b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs @@ -1653,7 +1653,9 @@ public async Task SendAsync_SendRequestUsingNoBodyMethodToEchoServerWithContent_ { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && method == "TRACE") { - // [ActiveIssue(9023, TestPlatforms.Windows)] + // .NET Framework also allows the HttpWebRequest and HttpClient APIs to send a request using 'TRACE' + // verb and a request body. The usual response from a server is "400 Bad Request". + // See here for more info: https://github.com/dotnet/corefx/issues/9023 Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } else From 8667ad1a282c9af0fd5b75b2996d70e9ffd2ec75 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sat, 15 Apr 2017 08:07:34 -0400 Subject: [PATCH 075/336] Reduce System.Collections.Tests running time from ~30s to ~8s Just lowered the set capacity for some of the tests from 4000 to 1000. --- src/Common/tests/System/Collections/ISet.Generic.Tests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Common/tests/System/Collections/ISet.Generic.Tests.cs b/src/Common/tests/System/Collections/ISet.Generic.Tests.cs index ede53ef9dff7..fea47c1fd0e6 100644 --- a/src/Common/tests/System/Collections/ISet.Generic.Tests.cs +++ b/src/Common/tests/System/Collections/ISet.Generic.Tests.cs @@ -54,7 +54,7 @@ protected override void AddToCollection(ICollection collection, int numberOfI } } - protected virtual int ISet_Large_Capacity => 4000; + protected virtual int ISet_Large_Capacity => 1000; #endregion @@ -492,7 +492,7 @@ public void ISet_Generic_UnionWith_Itself(int setLength) #endregion - #region Set Function tests on a very large Set + #region Set Function tests on a large Set [Fact] [OuterLoop] From 0280db5ea1c57319cc0eb73461b383143aee3775 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sat, 15 Apr 2017 11:33:48 -0400 Subject: [PATCH 076/336] Fix FileVersionInfo on Unix for non-regular files FileVersionInfo.GetVersionInfo on Unix attempts to read from the file in order to parse out the metadata stored in it. This is only intended to work with regular files. If it instead is given something non-regular, like a named pipe, it could hang trying to read from it, and regardless it won't successfully parse any metadata. The fix is to change GetVersionInfo to detect the file type and throw for anything other than files. For the test project, because the test involved adding a P/Invoke that won't work in UWP, I've split the test project into a Windows build and a Unix build. --- .../src/Resources/Strings.resx | 123 +++++++++++++++ .../System.Diagnostics.FileVersionInfo.csproj | 12 +- ...fo.Metadata.cs => FileVersionInfo.Unix.cs} | 10 ++ .../Configurations.props | 3 +- .../FileVersionInfoTest.Unix.cs | 84 ++++++++++ .../FileVersionInfoTest.Windows.cs | 137 +++++++++++++++++ .../FileVersionInfoTest.cs | 143 ++---------------- ...m.Diagnostics.FileVersionInfo.Tests.csproj | 12 +- 8 files changed, 388 insertions(+), 136 deletions(-) create mode 100644 src/System.Diagnostics.FileVersionInfo/src/Resources/Strings.resx rename src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/{FileVersionInfo.Metadata.cs => FileVersionInfo.Unix.cs} (96%) create mode 100644 src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Unix.cs create mode 100644 src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Windows.cs diff --git a/src/System.Diagnostics.FileVersionInfo/src/Resources/Strings.resx b/src/System.Diagnostics.FileVersionInfo/src/Resources/Strings.resx new file mode 100644 index 000000000000..0437a4e5ff76 --- /dev/null +++ b/src/System.Diagnostics.FileVersionInfo/src/Resources/Strings.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Could not find file '{0}'. + + \ No newline at end of file diff --git a/src/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj b/src/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj index b569113b8e8e..770c3d0ae3e7 100644 --- a/src/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj +++ b/src/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj @@ -44,12 +44,22 @@ - + + + Common\Interop\Unix\Interop.Libraries.cs + + + Common\Interop\Unix\Interop.Errors.cs + + + Common\Interop\Unix\Interop.Stat.cs + + diff --git a/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Metadata.cs b/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Unix.cs similarity index 96% rename from src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Metadata.cs rename to src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Unix.cs index 9af3f7bf17d8..08723d8afee6 100644 --- a/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Metadata.cs +++ b/src/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Unix.cs @@ -43,6 +43,16 @@ private FileVersionInfo(string fileName) /// true if the file is a managed assembly; otherwise, false. private bool TryLoadManagedAssemblyMetadata() { + // First make sure it's a file we can actually read from. Only regular files are relevant, + // and attempting to open and read from a file such as a named pipe file could cause us to + // hang (waiting for someone else to open and write to the file). + Interop.Sys.FileStatus fileStatus; + if (Interop.Sys.Stat(_fileName, out fileStatus) != 0 || + (fileStatus.Mode & Interop.Sys.FileTypes.S_IFMT) != Interop.Sys.FileTypes.S_IFREG) + { + throw new FileNotFoundException(SR.Format(SR.IO_FileNotFound_FileName, _fileName), _fileName); + } + try { // Try to load the file using the managed metadata reader diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/Configurations.props b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/Configurations.props index fc9ef9822c01..58b5995845eb 100644 --- a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/Configurations.props +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/Configurations.props @@ -2,7 +2,8 @@ - netstandard; + netstandard-Windows_NT; + netstandard-Unix; diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Unix.cs b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Unix.cs new file mode 100644 index 000000000000..7b54938272ac --- /dev/null +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Unix.cs @@ -0,0 +1,84 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using System.Runtime.InteropServices; +using Xunit; + +namespace System.Diagnostics.Tests +{ + public partial class FileVersionInfoTest + { + [PlatformSpecific(TestPlatforms.AnyUnix)] + [Fact] + public void NonRegularFile_Throws() + { + string pipePath = GetTestFilePath(); + Assert.Equal(0, mkfifo(pipePath, 0)); + Assert.Throws(() => FileVersionInfo.GetVersionInfo(pipePath)); + } + + [PlatformSpecific(TestPlatforms.AnyUnix)] + [Fact] + public void Symlink_ValidFile_Succeeds() + { + string filePath = Path.Combine(Directory.GetCurrentDirectory(), TestAssemblyFileName); + string linkPath = GetTestFilePath(); + + Assert.Equal(0, symlink(filePath, linkPath)); + + // Assembly1.dll + VerifyVersionInfo(linkPath, new MyFVI() + { + Comments = "Have you played a Contoso amusement device today?", + CompanyName = "The name of the company.", + FileBuildPart = 2, + FileDescription = "My File", + FileMajorPart = 4, + FileMinorPart = 3, + FileName = linkPath, + FilePrivatePart = 1, + FileVersion = "4.3.2.1", + InternalName = Path.GetFileName(linkPath), + IsDebug = false, + IsPatched = false, + IsPrivateBuild = false, + IsPreRelease = false, + IsSpecialBuild = false, + Language = GetFileVersionLanguage(0x0000), + Language2 = null, + LegalCopyright = "Copyright, you betcha!", + LegalTrademarks = "TM", + OriginalFilename = Path.GetFileName(linkPath), + PrivateBuild = "", + ProductBuildPart = 3, + ProductMajorPart = 1, + ProductMinorPart = 2, + ProductName = "The greatest product EVER", + ProductPrivatePart = 0, + ProductVersion = "1.2.3-beta.4", + SpecialBuild = "", + }); + } + + [PlatformSpecific(TestPlatforms.AnyUnix)] + [Fact] + public void Symlink_InvalidFile_Throws() + { + string filePath = Path.Combine(Directory.GetCurrentDirectory(), TestAssemblyFileName); + string linkPath = GetTestFilePath(); + Assert.Equal(0, symlink(filePath, linkPath)); + File.Delete(filePath); + Assert.Throws(() => FileVersionInfo.GetVersionInfo(linkPath)); + } + + private static string GetFileVersionLanguage(uint langid) => "Language Neutral"; + + [DllImport("libc", SetLastError = true)] + private static extern int mkfifo(string path, int mode); + + [DllImport("libc", SetLastError = true)] + private static extern int symlink(string target, string linkpath); + } +} diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Windows.cs b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Windows.cs new file mode 100644 index 000000000000..7bff7ea4346b --- /dev/null +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.Windows.cs @@ -0,0 +1,137 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using System.Runtime.InteropServices; +using System.Text; +using Xunit; + +namespace System.Diagnostics.Tests +{ + public partial class FileVersionInfoTest + { + private const string NativeConsoleAppFileName = "NativeConsoleApp.exe"; + private const string NativeLibraryFileName = "NativeLibrary.dll"; + private const string SecondNativeLibraryFileName = "SecondNativeLibrary.dll"; + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows + public void FileVersionInfo_Normal() + { + // NativeConsoleApp (English) + VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), NativeConsoleAppFileName), new MyFVI() + { + Comments = "", + CompanyName = "Microsoft Corporation", + FileBuildPart = 3, + FileDescription = "This is the description for the native console application.", + FileMajorPart = 5, + FileMinorPart = 4, + FileName = Path.Combine(Directory.GetCurrentDirectory(), NativeConsoleAppFileName), + FilePrivatePart = 2, + FileVersion = "5.4.3.2", + InternalName = NativeConsoleAppFileName, + IsDebug = false, + IsPatched = false, + IsPrivateBuild = false, + IsPreRelease = true, + IsSpecialBuild = true, + Language = GetFileVersionLanguage(0x0409), //English (United States) + LegalCopyright = "Copyright (C) 2050", + LegalTrademarks = "", + OriginalFilename = NativeConsoleAppFileName, + PrivateBuild = "", + ProductBuildPart = 3, + ProductMajorPart = 5, + ProductMinorPart = 4, + ProductName = Path.GetFileNameWithoutExtension(NativeConsoleAppFileName), + ProductPrivatePart = 2, + ProductVersion = "5.4.3.2", + SpecialBuild = "" + }); + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows + public void FileVersionInfo_Chinese() + { + // NativeLibrary.dll (Chinese) + VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), NativeLibraryFileName), new MyFVI() + { + Comments = "", + CompanyName = "A non-existent company", + FileBuildPart = 3, + FileDescription = "Here is the description of the native library.", + FileMajorPart = 9, + FileMinorPart = 9, + FileName = Path.Combine(Directory.GetCurrentDirectory(), NativeLibraryFileName), + FilePrivatePart = 3, + FileVersion = "9.9.3.3", + InternalName = "NativeLibrary.dll", + IsDebug = false, + IsPatched = true, + IsPrivateBuild = false, + IsPreRelease = true, + IsSpecialBuild = false, + Language = GetFileVersionLanguage(0x0004),//Chinese (Simplified) + Language2 = GetFileVersionLanguage(0x0804),//Chinese (Simplified, PRC) - changed, but not yet on all platforms + LegalCopyright = "None", + LegalTrademarks = "", + OriginalFilename = "NativeLibrary.dll", + PrivateBuild = "", + ProductBuildPart = 40, + ProductMajorPart = 20, + ProductMinorPart = 30, + ProductName = "I was never given a name.", + ProductPrivatePart = 50, + ProductVersion = "20.30.40.50", + SpecialBuild = "", + }); + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows + public void FileVersionInfo_DifferentFileVersionAndProductVersion() + { + // Mtxex.dll + VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), SecondNativeLibraryFileName), new MyFVI() + { + Comments = "", + CompanyName = "", + FileBuildPart = 0, + FileDescription = "", + FileMajorPart = 0, + FileMinorPart = 65535, + FileName = Path.Combine(Directory.GetCurrentDirectory(), SecondNativeLibraryFileName), + FilePrivatePart = 2, + FileVersion = "0.65535.0.2", + InternalName = "SecondNativeLibrary.dll", + IsDebug = false, + IsPatched = false, + IsPrivateBuild = false, + IsPreRelease = false, + IsSpecialBuild = false, + Language = GetFileVersionLanguage(0x0400),//Process Default Language + LegalCopyright = "Copyright (C) 1 - 2014", + LegalTrademarks = "", + OriginalFilename = "SecondNativeLibrary.dll", + PrivateBuild = "", + ProductBuildPart = 0, + ProductMajorPart = 1, + ProductMinorPart = 0, + ProductName = "Unknown_Product_Name", + ProductPrivatePart = 1, + ProductVersion = "1.0.0.1", + SpecialBuild = "", + }); + } + + private static string GetFileVersionLanguage(uint langid) + { + var lang = new StringBuilder(256); + Interop.Kernel32.VerLanguageName(langid, lang, (uint)lang.Capacity); + return lang.ToString(); + } + } +} diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.cs b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.cs index 1d841fbe4668..cdf39188ff69 100644 --- a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.cs +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/FileVersionInfoTest.cs @@ -2,137 +2,18 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Diagnostics; -using System.Globalization; using System.IO; -using System.Runtime.InteropServices; using System.Text; using Xunit; namespace System.Diagnostics.Tests { - public class FileVersionInfoTest + public partial class FileVersionInfoTest : FileCleanupTestBase { - private const string NativeConsoleAppFileName = "NativeConsoleApp.exe"; - private const string NativeLibraryFileName = "NativeLibrary.dll"; - private const string SecondNativeLibraryFileName = "SecondNativeLibrary.dll"; private const string TestAssemblyFileName = "System.Diagnostics.FileVersionInfo.TestAssembly.dll"; private const string TestCsFileName = "Assembly1.cs"; private const string TestNotFoundFileName = "notfound.dll"; - [Fact] - [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows - public void FileVersionInfo_Normal() - { - // NativeConsoleApp (English) - VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), NativeConsoleAppFileName), new MyFVI() - { - Comments = "", - CompanyName = "Microsoft Corporation", - FileBuildPart = 3, - FileDescription = "This is the description for the native console application.", - FileMajorPart = 5, - FileMinorPart = 4, - FileName = Path.Combine(Directory.GetCurrentDirectory(), NativeConsoleAppFileName), - FilePrivatePart = 2, - FileVersion = "5.4.3.2", - InternalName = NativeConsoleAppFileName, - IsDebug = false, - IsPatched = false, - IsPrivateBuild = false, - IsPreRelease = true, - IsSpecialBuild = true, - Language = GetFileVersionLanguage(0x0409), //English (United States) - LegalCopyright = "Copyright (C) 2050", - LegalTrademarks = "", - OriginalFilename = NativeConsoleAppFileName, - PrivateBuild = "", - ProductBuildPart = 3, - ProductMajorPart = 5, - ProductMinorPart = 4, - ProductName = Path.GetFileNameWithoutExtension(NativeConsoleAppFileName), - ProductPrivatePart = 2, - ProductVersion = "5.4.3.2", - SpecialBuild = "" - }); - } - - [Fact] - [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows - public void FileVersionInfo_Chinese() - { - // NativeLibrary.dll (Chinese) - VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), NativeLibraryFileName), new MyFVI() - { - Comments = "", - CompanyName = "A non-existent company", - FileBuildPart = 3, - FileDescription = "Here is the description of the native library.", - FileMajorPart = 9, - FileMinorPart = 9, - FileName = Path.Combine(Directory.GetCurrentDirectory(), NativeLibraryFileName), - FilePrivatePart = 3, - FileVersion = "9.9.3.3", - InternalName = "NativeLibrary.dll", - IsDebug = false, - IsPatched = true, - IsPrivateBuild = false, - IsPreRelease = true, - IsSpecialBuild = false, - Language = GetFileVersionLanguage(0x0004),//Chinese (Simplified) - Language2 = GetFileVersionLanguage(0x0804),//Chinese (Simplified, PRC) - changed, but not yet on all platforms - LegalCopyright = "None", - LegalTrademarks = "", - OriginalFilename = "NativeLibrary.dll", - PrivateBuild = "", - ProductBuildPart = 40, - ProductMajorPart = 20, - ProductMinorPart = 30, - ProductName = "I was never given a name.", - ProductPrivatePart = 50, - ProductVersion = "20.30.40.50", - SpecialBuild = "", - }); - } - - [Fact] - [PlatformSpecific(TestPlatforms.Windows)] // native PE files only supported on Windows - public void FileVersionInfo_DifferentFileVersionAndProductVersion() - { - // Mtxex.dll - VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), SecondNativeLibraryFileName), new MyFVI() - { - Comments = "", - CompanyName = "", - FileBuildPart = 0, - FileDescription = "", - FileMajorPart = 0, - FileMinorPart = 65535, - FileName = Path.Combine(Directory.GetCurrentDirectory(), SecondNativeLibraryFileName), - FilePrivatePart = 2, - FileVersion = "0.65535.0.2", - InternalName = "SecondNativeLibrary.dll", - IsDebug = false, - IsPatched = false, - IsPrivateBuild = false, - IsPreRelease = false, - IsSpecialBuild = false, - Language = GetFileVersionLanguage(0x0400),//Process Default Language - LegalCopyright = "Copyright (C) 1 - 2014", - LegalTrademarks = "", - OriginalFilename = "SecondNativeLibrary.dll", - PrivateBuild = "", - ProductBuildPart = 0, - ProductMajorPart = 1, - ProductMinorPart = 0, - ProductName = "Unknown_Product_Name", - ProductPrivatePart = 1, - ProductVersion = "1.0.0.1", - SpecialBuild = "", - }); - } - [Fact] public void FileVersionInfo_CustomManagedAssembly() { @@ -154,7 +35,7 @@ public void FileVersionInfo_CustomManagedAssembly() IsPrivateBuild = false, IsPreRelease = false, IsSpecialBuild = false, - Language = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? GetFileVersionLanguage(0x0000) : "Language Neutral", + Language = GetFileVersionLanguage(0x0000), LegalCopyright = "Copyright, you betcha!", LegalTrademarks = "TM", OriginalFilename = TestAssemblyFileName, @@ -206,7 +87,14 @@ public void FileVersionInfo_EmptyFVI() } [Fact] - public void FileVersionInfo_FileNotFound() + public void FileVersionInfo_CurrentDirectory_FileNotFound() + { + Assert.Throws(() => + FileVersionInfo.GetVersionInfo(Directory.GetCurrentDirectory())); + } + + [Fact] + public void FileVersionInfo_NonExistentFile_FileNotFound() { Assert.Throws(() => FileVersionInfo.GetVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), TestNotFoundFileName))); @@ -217,7 +105,7 @@ public void FileVersionInfo_FileNotFound() // [] DLL has unknown codepage info // [] DLL language/codepage is 8-hex-digits (locale > 0x999) (different codepath) - private void VerifyVersionInfo(String filePath, MyFVI expected) + private void VerifyVersionInfo(string filePath, MyFVI expected) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(filePath); Assert.Equal(expected.Comments, fvi.Comments); @@ -249,7 +137,7 @@ private void VerifyVersionInfo(String filePath, MyFVI expected) Assert.Equal(expected.SpecialBuild, fvi.SpecialBuild); //ToString - String nl = Environment.NewLine; + string nl = Environment.NewLine; Assert.Equal("File: " + fvi.FileName + nl + "InternalName: " + fvi.InternalName + nl + "OriginalFilename: " + fvi.OriginalFilename + nl + @@ -341,12 +229,5 @@ static string GetUnicodeString(String str) buffer.Append("\""); return (buffer.ToString()); } - - private static string GetFileVersionLanguage(uint langid) - { - var lang = new StringBuilder(256); - Interop.Kernel32.VerLanguageName(langid, lang, (uint)lang.Capacity); - return lang.ToString(); - } } } diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj index a869bbf2f391..6ca127d1d7ed 100644 --- a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj @@ -1,8 +1,5 @@  - - Windows_Debug - System.Diagnostics.FileVersionInfo.Tests @@ -28,6 +25,12 @@ + + Common\System\IO\FileCleanupTestBase.cs + + + + ProductionCode\Common\Interop\Windows\Interop.Libraries.cs @@ -35,6 +38,9 @@ ProductionCode\Common\Interop\Windows\kernel32\Interop.VerLanguageName.cs + + + From 2f3f49c5e44853069fca83e0777cd7144edaafba Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Sat, 15 Apr 2017 11:21:07 -0700 Subject: [PATCH 077/336] Delete unnecessary reference --- .../src/System.Runtime.WindowsRuntime.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj index 4d8e9e07c06c..31e7b604587e 100644 --- a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj +++ b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj @@ -49,7 +49,6 @@ - From 704d3b4c40c8d693784e51a241cf65bb2de42fba Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Sat, 15 Apr 2017 12:13:26 -0700 Subject: [PATCH 078/336] Update CoreClr to preview1-25215-03 (#18433) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 04c8aef9e447..5862e4c17c74 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 344d7f54518693b73c16e19a6d6ebd29b928ecad - 11150940bb3a9beacf25201309df67b87f53e074 + af313dccb7aff26364a85300da16d39a783c86cd 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 cf7c0960a7478e132dd1ccbed523635038a1546a cf7c0960a7478e132dd1ccbed523635038a1546a @@ -21,7 +21,7 @@ preview1-25214-03 - preview1-25215-01 + preview1-25215-03 beta-25016-01 beta-25214-00 beta-25214-00 From 597eab5afce0cbf2b42899f3a4e0bb4bc2ec33bc Mon Sep 17 00:00:00 2001 From: Koundinya Veluri Date: Sat, 15 Apr 2017 13:47:22 -0700 Subject: [PATCH 079/336] =?UTF-8?q?Add=20test=20for=20serialization=20of?= =?UTF-8?q?=20closed=20delegate=20involving=20an=20extension=20=E2=80=A6?= =?UTF-8?q?=20(#18227)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add test for serialization of closed delegate involving an extension method Depends on PR dotnet/coreclr#10901 Fixes dotnet/coreclr#9597 --- .../tests/System/DelegateTests.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/System.Runtime/tests/System/DelegateTests.cs b/src/System.Runtime/tests/System/DelegateTests.cs index 38addac65cbc..54e0940f1c96 100644 --- a/src/System.Runtime/tests/System/DelegateTests.cs +++ b/src/System.Runtime/tests/System/DelegateTests.cs @@ -2,9 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Runtime.Serialization.Formatters.Binary; +using System.Runtime.Serialization.Formatters.Tests; using Xunit; namespace System.Tests @@ -15,6 +18,11 @@ public static DelegateTests.TestStruct TestFunc(this DelegateTests.TestClass tes { return testparam.structField; } + + public static void IncrementX(this DelegateTests.TestSerializableClass t) + { + t.x++; + } } public static unsafe class DelegateTests @@ -30,6 +38,12 @@ public class TestClass public TestStruct structField; } + [Serializable] + public class TestSerializableClass + { + public int x = 1; + } + private static void EmptyFunc() { } public delegate TestStruct StructReturningDelegate(); @@ -46,6 +60,22 @@ public static void ClosedStaticDelegate() Assert.Same(foo.structField.o2, returnedStruct.o2); } + [Fact] + public static void ClosedStaticDelegateSerialization() + { + var t = new TestSerializableClass(); + Assert.Equal(1, t.x); + Action d = t.IncrementX; + d(); + Assert.Equal(2, t.x); + + d = BinaryFormatterHelpers.Clone(d); + t = (TestSerializableClass)d.Target; + Assert.Equal(2, t.x); + d(); + Assert.Equal(3, t.x); + } + public class A { } public class B : A { } public delegate A DynamicInvokeDelegate(A nonRefParam1, B nonRefParam2, ref A refParam, out B outParam); From c4fd22fd78a8282b27d3115fdc0623fef70741a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Matou=C5=A1ek?= Date: Sat, 15 Apr 2017 13:53:21 -0700 Subject: [PATCH 080/336] Update PE-COFF.md --- src/System.Reflection.Metadata/specs/PE-COFF.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Reflection.Metadata/specs/PE-COFF.md b/src/System.Reflection.Metadata/specs/PE-COFF.md index aae3cf7d31df..46fa14e87f75 100644 --- a/src/System.Reflection.Metadata/specs/PE-COFF.md +++ b/src/System.Reflection.Metadata/specs/PE-COFF.md @@ -29,7 +29,7 @@ The associated .pdb file may not exist at the path indicated by Path field. If i If the containing PE/COFF file is deterministic the Guid field above and DateTimeStamp field of the directory entry are calculated deterministically based solely on the content of the associated .pdb file. Otherwise the value of Guid is random and the value of DateTimeStamp indicates the time and date that the debug data was created. -*Version Major=any, Minor=0x504d* of the data format has the same structure as above. The Age shall be 1. The format of the associated .pdb file is Portable PDB. The Major version specified in the entry indicates the version of the Portable PDB format. Together 16B of the Guid concatenated with 4B of the TimeDateStamp field of the entry form a PDB ID that should be used to match the PE/COFF image with the associated PDB (instead of Guid and Age). Matching PDB ID is stored in the #Pdb stream of the .pdb file. +*Version Major=any, Minor=0x504d* of the data format has the same structure as above. The Age shall be 1. The format of the .pdb file that this PE/COFF file was built with is Portable PDB. The Major version specified in the entry indicates the version of the Portable PDB format. Together 16B of the Guid concatenated with 4B of the TimeDateStamp field of the entry form a PDB ID that should be used to match the PE/COFF image with the associated PDB (instead of Guid and Age). Matching PDB ID is stored in the #Pdb stream of the .pdb file. ### Deterministic Debug Directory Entry (type 16) From c2bc7c21175840058fa29924e19268bb4073569e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Matou=C5=A1ek?= Date: Sat, 15 Apr 2017 14:03:18 -0700 Subject: [PATCH 081/336] Update PE-COFF.md --- src/System.Reflection.Metadata/specs/PE-COFF.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System.Reflection.Metadata/specs/PE-COFF.md b/src/System.Reflection.Metadata/specs/PE-COFF.md index 46fa14e87f75..eb19faef3bff 100644 --- a/src/System.Reflection.Metadata/specs/PE-COFF.md +++ b/src/System.Reflection.Metadata/specs/PE-COFF.md @@ -31,6 +31,8 @@ If the containing PE/COFF file is deterministic the Guid field above and DateTim *Version Major=any, Minor=0x504d* of the data format has the same structure as above. The Age shall be 1. The format of the .pdb file that this PE/COFF file was built with is Portable PDB. The Major version specified in the entry indicates the version of the Portable PDB format. Together 16B of the Guid concatenated with 4B of the TimeDateStamp field of the entry form a PDB ID that should be used to match the PE/COFF image with the associated PDB (instead of Guid and Age). Matching PDB ID is stored in the #Pdb stream of the .pdb file. +> A matching PDB may be found whose format is different than the format of the PDB the PE/COFF file was built with. This may happen when the original PDB file is [converted](http://github.com/dotnet/symreader-converter) to the other format without updating the PE/COFF file. This scenario is fully supported. A tool looking for the associated PDB shall determine the actual format of the found PDB based on the signature at the start of the PDB file. The tool may use the version in CodeView entry as a hint to prefer the original format over the converted one if both are available. + ### Deterministic Debug Directory Entry (type 16) The entry doesn't have any data associated with it. All fields of the entry, but Type shall be zero. From 20b366e2fad3f7728c965796b56aefa35b348e1e Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Date: Sat, 15 Apr 2017 14:41:12 -0700 Subject: [PATCH 082/336] Disable ProcessStreamReadTest.TestAsyncHalfCharacterAtATime --- src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs b/src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs index 24dcda55a7f4..cd78e8649f74 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStreamReadTests.cs @@ -124,6 +124,7 @@ public void TestSyncStreams() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "There is 2 bugs in Desktop in this codepath, see: dotnet/corefx #18437 and #18436")] public void TestAsyncHalfCharacterAtATime() { var receivedOutput = false; @@ -150,9 +151,9 @@ public void TestAsyncHalfCharacterAtATime() { if (!receivedOutput) { + receivedOutput = true; Assert.Equal(e.Data, "a"); } - receivedOutput = true; } catch (Exception ex) { From ac9e0a63e62cf3249f958c40af2b56a1cd37b84e Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Sun, 16 Apr 2017 02:17:30 +0100 Subject: [PATCH 083/336] Optimise IL for nullable unary S.L.Expressions expressions. UnaryPlus is a nop for all possible inputs, so do nothing. Don't construct new value for null operand, just push previous value back on stack. Conversely, don't store then load computed value, just leave it on the stack. Separate path for Not on bool? values now has no advantage, so roll into rest. Only two paths differ from others, so handle majority as default branch (previous default is unreachable and if not would result in same exception this way anyway). TypeAs is nop when result type is same as operand type, so do nothing. (Do this for non-nullable case too). --- .../Common/CachedReflectionInfo.cs | 5 - .../Compiler/LambdaCompiler.Unary.cs | 135 +++++++----------- 2 files changed, 49 insertions(+), 91 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs index 2e4ce68404c9..00592833a412 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs @@ -10,11 +10,6 @@ namespace System.Linq.Expressions { internal static partial class CachedReflectionInfo { - private static Type[] s_ArrayOfType_Bool; - public static Type[] ArrayOfType_Bool => - s_ArrayOfType_Bool ?? - (s_ArrayOfType_Bool = new[] { typeof(bool) }); - private static ConstructorInfo s_Nullable_Boolean_Ctor; public static ConstructorInfo Nullable_Boolean_Ctor diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs index b9ed49e22c85..055960ae919b 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs @@ -105,91 +105,49 @@ private void EmitUnaryOperator(ExpressionType op, Type operandType, Type resultT { switch (op) { - case ExpressionType.Not: - { - if (operandType != typeof(bool?)) - { - goto case ExpressionType.Negate; - } - Label labEnd = _ilg.DefineLabel(); - LocalBuilder loc = GetLocal(operandType); - - // store values (reverse order since they are already on the stack) - _ilg.Emit(OpCodes.Stloc, loc); - - // test for null - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.EmitHasValue(operandType); - _ilg.Emit(OpCodes.Brfalse_S, labEnd); - - // do op on non-null value - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.EmitGetValueOrDefault(operandType); - Type nnOperandType = operandType.GetNonNullableType(); - EmitUnaryOperator(op, nnOperandType, typeof(bool)); - - // construct result - ConstructorInfo ci = resultType.GetConstructor(ArrayOfType_Bool); - _ilg.Emit(OpCodes.Newobj, ci); - _ilg.Emit(OpCodes.Stloc, loc); - - _ilg.MarkLabel(labEnd); - _ilg.Emit(OpCodes.Ldloc, loc); - FreeLocal(loc); - return; - } case ExpressionType.UnaryPlus: - case ExpressionType.NegateChecked: - case ExpressionType.Negate: - case ExpressionType.Increment: - case ExpressionType.Decrement: - case ExpressionType.OnesComplement: - case ExpressionType.IsFalse: - case ExpressionType.IsTrue: - { - Debug.Assert(TypeUtils.AreEquivalent(operandType, resultType)); - Label labIfNull = _ilg.DefineLabel(); - Label labEnd = _ilg.DefineLabel(); - LocalBuilder loc = GetLocal(operandType); - - // check for null - _ilg.Emit(OpCodes.Stloc, loc); - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.EmitHasValue(operandType); - _ilg.Emit(OpCodes.Brfalse_S, labIfNull); - - // apply operator to non-null value - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.EmitGetValueOrDefault(operandType); - Type nnOperandType = resultType.GetNonNullableType(); - EmitUnaryOperator(op, nnOperandType, nnOperandType); - - // construct result - ConstructorInfo ci = resultType.GetConstructor(new Type[] { nnOperandType }); - _ilg.Emit(OpCodes.Newobj, ci); - _ilg.Emit(OpCodes.Stloc, loc); - _ilg.Emit(OpCodes.Br_S, labEnd); - - // if null then create a default one - _ilg.MarkLabel(labIfNull); - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.Emit(OpCodes.Initobj, resultType); - - _ilg.MarkLabel(labEnd); - _ilg.Emit(OpCodes.Ldloc, loc); - FreeLocal(loc); - return; - } + return; case ExpressionType.TypeAs: - _ilg.Emit(OpCodes.Box, operandType); - _ilg.Emit(OpCodes.Isinst, resultType); - if (resultType.IsNullableType()) + if (operandType != resultType) { - _ilg.Emit(OpCodes.Unbox_Any, resultType); + _ilg.Emit(OpCodes.Box, operandType); + _ilg.Emit(OpCodes.Isinst, resultType); + if (resultType.IsNullableType()) + { + _ilg.Emit(OpCodes.Unbox_Any, resultType); + } } + return; default: - throw Error.UnhandledUnary(op, nameof(op)); + Debug.Assert(TypeUtils.AreEquivalent(operandType, resultType)); + Label labIfNull = _ilg.DefineLabel(); + Label labEnd = _ilg.DefineLabel(); + LocalBuilder loc = GetLocal(operandType); + + // check for null + _ilg.Emit(OpCodes.Stloc, loc); + _ilg.Emit(OpCodes.Ldloca, loc); + _ilg.EmitHasValue(operandType); + _ilg.Emit(OpCodes.Brfalse_S, labIfNull); + + // apply operator to non-null value + _ilg.Emit(OpCodes.Ldloca, loc); + _ilg.EmitGetValueOrDefault(operandType); + Type nnOperandType = resultType.GetNonNullableType(); + EmitUnaryOperator(op, nnOperandType, nnOperandType); + + // construct result + ConstructorInfo ci = resultType.GetConstructor(new Type[] { nnOperandType }); + _ilg.Emit(OpCodes.Newobj, ci); + _ilg.Emit(OpCodes.Br_S, labEnd); + + // if null then push back on stack. + _ilg.MarkLabel(labIfNull); + _ilg.Emit(OpCodes.Ldloc, loc); + FreeLocal(loc); + _ilg.MarkLabel(labEnd); + return; } } else @@ -233,15 +191,20 @@ private void EmitUnaryOperator(ExpressionType op, Type operandType, Type resultT // (integer NegateChecked was rewritten to 0 - operand and doesn't hit here). return; case ExpressionType.TypeAs: - if (operandType.IsValueType) - { - _ilg.Emit(OpCodes.Box, operandType); - } - _ilg.Emit(OpCodes.Isinst, resultType); - if (resultType.IsNullableType()) + if (operandType != resultType) { - _ilg.Emit(OpCodes.Unbox_Any, resultType); + if (operandType.IsValueType) + { + _ilg.Emit(OpCodes.Box, operandType); + } + + _ilg.Emit(OpCodes.Isinst, resultType); + if (resultType.IsNullableType()) + { + _ilg.Emit(OpCodes.Unbox_Any, resultType); + } } + // Not an arithmetic operation -> no conversion return; case ExpressionType.Increment: From 87238a156573c439a42793db73a8b2ddf18a135b Mon Sep 17 00:00:00 2001 From: JayG Date: Sat, 15 Apr 2017 23:13:31 -0600 Subject: [PATCH 084/336] Removed duplicate and unnecessary SHGetKnownFolderPath calls (#18443) Combined ShellFolders and Shell32 calls into a single call Fixes #18389 --- .../shell32/Interop.SHGetKnownFolderPath.cs | 39 +------------------ 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs b/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs index d7e8a9fd5b61..beb95d7b5486 100644 --- a/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs +++ b/src/Common/src/Interop/Windows/shell32/Interop.SHGetKnownFolderPath.cs @@ -12,48 +12,13 @@ internal partial class Shell32 internal const int COR_E_PLATFORMNOTSUPPORTED = unchecked((int)0x80131539); // https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx - [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, SetLastError = false, BestFitMapping = false, ExactSpelling = true, EntryPoint = "SHGetKnownFolderPath")] - private static extern int SHGetKnownFolderPath_ShellFolders( + [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, SetLastError = false, BestFitMapping = false, ExactSpelling = true)] + internal static extern int SHGetKnownFolderPath( [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out string ppszPath); - private static bool s_skipShellFolders; - - [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, SetLastError = false, BestFitMapping = false, ExactSpelling = true, EntryPoint = "SHGetKnownFolderPath")] - private static extern int SHGetKnownFolderPath_Shell32( - [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, - uint dwFlags, - IntPtr hToken, - out string ppszPath); - - internal static int SHGetKnownFolderPath( - Guid rfid, - uint dwFlags, - IntPtr hToken, - out string ppszPath) - { - // The ShellFolders API set isn't available on Win7, while the direct Shell32 isn't available - // on some mincore versions of Windows. We'll attempt the newer API set version and fall back - // to the older "Shell32" if needed. - if (!s_skipShellFolders) - { - try - { - return SHGetKnownFolderPath_ShellFolders(rfid, dwFlags, hToken, out ppszPath); - } - catch (TypeLoadException) - { - // TypeLoad contains DllNotFound and EntryPointNotFound. - // Skip the API set attempt next time through. - s_skipShellFolders = true; - } - } - - return SHGetKnownFolderPath_Shell32(rfid, dwFlags, hToken, out ppszPath); - } - // https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx internal static class KnownFolders { From ea09cc42a896514c28b86098f59f4dc7c1a416ba Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sun, 16 Apr 2017 12:33:07 +0700 Subject: [PATCH 085/336] Fix some more Assembly tests in System.Runtime and add a bit more LoadFrom coverage --- .../tests/System/Reflection/AssemblyTests.cs | 67 +++++++++++++++---- 1 file changed, 53 insertions(+), 14 deletions(-) diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index 00090827c50f..ec1c70c1ad52 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -376,27 +376,66 @@ public static void Test_LoadWithPartialName() #pragma warning restore 618 [Fact] - public void Test_LoadFrom() + public void LoadFrom_SamePath_ReturnsEqualAssemblies() { - var assem = Assembly.LoadFrom(destTestAssemblyPath); - Assert.Throws("assemblyFile", () => Assembly.LoadFrom(null)); - var assem1 = Assembly.LoadFrom(destTestAssemblyPath); - Assert.Equal(assem, assem1); + Assembly assembly1 = Assembly.LoadFrom(destTestAssemblyPath); + Assembly assembly2 = Assembly.LoadFrom(destTestAssemblyPath); + Assert.Equal(assembly1, assembly2); + } + + [Fact] + public void LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies() + { + Assembly assembly1 = Assembly.LoadFrom(typeof(AssemblyTests).Assembly.Location); + Assert.Equal(assembly1, typeof(AssemblyTests).Assembly); - assem = Assembly.LoadFrom(typeof(AssemblyTests).Assembly.Location); - Assert.Equal(assem, typeof(AssemblyTests).Assembly); + Assembly assembly2 = Assembly.LoadFrom(loadFromTestPath); - // Test that loading assembly of same identity as TPA returns TPA assembly even if paths differ - assem1 = Assembly.LoadFrom(loadFromTestPath); - Assert.Equal(assem, assem1); - } + if (PlatformDetection.IsFullFramework) + { + Assert.NotEqual(assembly1, assembly2); + } + else + { + Assert.Equal(assembly1, assembly2); + } + } [Fact] - public void Test_UnsafeLoadFrom() + public void LoadFrom_NullAssemblyFile_ThrowsArgumentNullException() { - var assem = Assembly.UnsafeLoadFrom(destTestAssemblyPath); + Assert.Throws("assemblyFile", () => Assembly.LoadFrom(null)); Assert.Throws("assemblyFile", () => Assembly.UnsafeLoadFrom(null)); - } + } + + [Fact] + public void LoadFrom_EmptyAssemblyFile_ThrowsArgumentException() + { + Assert.Throws(null, (() => Assembly.LoadFrom(""))); + Assert.Throws(null, (() => Assembly.UnsafeLoadFrom(""))); + } + + [Fact] + public void LoadFrom_NoSuchFile_ThrowsFileNotFoundException() + { + Assert.Throws(() => Assembly.LoadFrom("NoSuchPath")); + Assert.Throws(() => Assembly.UnsafeLoadFrom("NoSuchPath")); + } + + [Fact] + public void UnsafeLoadFrom_SamePath_ReturnsEqualAssemblies() + { + Assembly assembly1 = Assembly.UnsafeLoadFrom(destTestAssemblyPath); + Assembly assembly2 = Assembly.UnsafeLoadFrom(destTestAssemblyPath); + Assert.Equal(assembly1, assembly2); + } + + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The implementation of LoadFrom(string, byte[], AssemblyHashAlgorithm is not supported in .NET Core.")] + public void LoadFrom_WithHashValue_NetCoreCore_ThrowsNotSupportedException() + { + Assert.Throws(() => Assembly.LoadFrom(destTestAssemblyPath, new byte[0], Configuration.Assemblies.AssemblyHashAlgorithm.None)); + } [Fact] public void GetFile() From 8fd24a9d187dd40df7a96c3f6df0b29bca9a6f01 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sun, 16 Apr 2017 17:01:08 +0700 Subject: [PATCH 086/336] Expose and test string comparison replace overloads --- src/System.Runtime/ref/System.Runtime.cs | 4 + .../tests/System/StringTests.netcoreapp.cs | 156 +++++++++++++++++- 2 files changed, 158 insertions(+), 2 deletions(-) diff --git a/src/System.Runtime/ref/System.Runtime.cs b/src/System.Runtime/ref/System.Runtime.cs index 2f725c67ac70..526cbf96fb2c 100644 --- a/src/System.Runtime/ref/System.Runtime.cs +++ b/src/System.Runtime/ref/System.Runtime.cs @@ -5,6 +5,8 @@ // Changes to this file must follow the http://aka.ms/api-review process. // ------------------------------------------------------------------------------ +using System.Globalization; + namespace Microsoft.Win32.SafeHandles { [System.Security.SecurityCriticalAttribute] @@ -2080,6 +2082,8 @@ public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, in public string Remove(int startIndex, int count) { throw null; } public string Replace(char oldChar, char newChar) { throw null; } public string Replace(string oldValue, string newValue) { throw null; } + public string Replace(string oldValue, string newValue, StringComparison comparisonType) { throw null; } + public string Replace(string oldValue, string newValue, bool ignoreCase, CultureInfo culture) { throw null; } public string[] Split(char separator, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } public string[] Split(char separator, int count, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } public string[] Split(string separator, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } diff --git a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs index ab14dc37f2d1..89d694f4b1f5 100644 --- a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs @@ -3,11 +3,12 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; +using System.Globalization; using Xunit; namespace System.Tests { - public static partial class StringTests + public partial class StringTests { [Theory] [InlineData("Hello", 'o', true)] @@ -123,5 +124,156 @@ public static void Join_Char_InvalidStartIndexCount_ThrowsArgumentOutOfRangeExce { Assert.Throws("startIndex", () => string.Join('|', new string[] { "Foo" }, startIndex, count)); } + + public static IEnumerable Replace_StringComparison_TestData() + { + yield return new object[] { "abc", "abc", "def", StringComparison.CurrentCulture, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.CurrentCulture, "abc" }; + yield return new object[] { "abc", "abc", "", StringComparison.CurrentCulture, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.CurrentCulture, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.CurrentCulture, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.CurrentCulture, "ac" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.CurrentCulture, "def" }; + + yield return new object[] { "abc", "abc", "def", StringComparison.CurrentCultureIgnoreCase, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.CurrentCultureIgnoreCase, "def" }; + yield return new object[] { "abc", "abc", "", StringComparison.CurrentCultureIgnoreCase, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.CurrentCultureIgnoreCase, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.CurrentCultureIgnoreCase, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.CurrentCultureIgnoreCase, "ac" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.CurrentCultureIgnoreCase, "def" }; + + yield return new object[] { "abc", "abc", "def", StringComparison.Ordinal, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.Ordinal, "abc" }; + yield return new object[] { "abc", "abc", "", StringComparison.Ordinal, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.Ordinal, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.Ordinal, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.Ordinal, "ac" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.Ordinal, "abc" }; + + yield return new object[] { "abc", "abc", "def", StringComparison.OrdinalIgnoreCase, "def" }; + //TODO: yield return new object[] { "abc", "ABC", "def", StringComparison.OrdinalIgnoreCase, "def" }; + yield return new object[] { "abc", "abc", "", StringComparison.OrdinalIgnoreCase, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.OrdinalIgnoreCase, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.OrdinalIgnoreCase, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.OrdinalIgnoreCase, "ac" }; + //TODO: yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.OrdinalIgnoreCase, "abc" }; + + yield return new object[] { "abc", "abc", "def", StringComparison.InvariantCulture, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.InvariantCulture, "abc" }; + yield return new object[] { "abc", "abc", "", StringComparison.InvariantCulture, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.InvariantCulture, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.InvariantCulture, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.InvariantCulture, "ac" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.InvariantCulture, "def" }; + + yield return new object[] { "abc", "abc", "def", StringComparison.InvariantCultureIgnoreCase, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.InvariantCultureIgnoreCase, "def" }; + yield return new object[] { "abc", "abc", "", StringComparison.InvariantCultureIgnoreCase, "" }; + yield return new object[] { "abc", "b", "LONG", StringComparison.InvariantCultureIgnoreCase, "aLONGc" }; + yield return new object[] { "abc", "b", "d", StringComparison.InvariantCultureIgnoreCase, "adc" }; + yield return new object[] { "abc", "b", null, StringComparison.InvariantCultureIgnoreCase, "ac" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.InvariantCultureIgnoreCase, "def" }; + + string turkishSource = "\u0069\u0130"; + + yield return new object[] { turkishSource, "\u0069", "a", StringComparison.Ordinal, "a\u0130" }; + yield return new object[] { turkishSource, "\u0069", "a", StringComparison.OrdinalIgnoreCase, "a\u0130" }; + yield return new object[] { turkishSource, "\u0130", "a", StringComparison.Ordinal, "\u0069a" }; + yield return new object[] { turkishSource, "\u0130", "a", StringComparison.OrdinalIgnoreCase, "\u0069a" }; + + yield return new object[] { turkishSource, "\u0069", "a", StringComparison.InvariantCulture, "a\u0130" }; + yield return new object[] { turkishSource, "\u0069", "a", StringComparison.InvariantCultureIgnoreCase, "a\u0130" }; + yield return new object[] { turkishSource, "\u0130", "a", StringComparison.InvariantCulture, "\u0069a" }; + yield return new object[] { turkishSource, "\u0130", "a", StringComparison.InvariantCultureIgnoreCase, "\u0069a" }; + } + + [Theory] + [MemberData(nameof(Replace_StringComparison_TestData))] + public void Replace_StringComparison_ReturnsExpected(string original, string oldValue, string newValue, StringComparison comparisonType, string expected) + { + Assert.Equal(expected, original.Replace(oldValue, newValue, comparisonType)); + } + + [Fact] + public void Replace_StringComparison_TurkishI() + { + string source = "\u0069\u0130"; + Helpers.PerformActionWithCulture(new CultureInfo("tr-TR"), () => + { + Assert.True("\u0069".Equals("\u0130", StringComparison.CurrentCultureIgnoreCase)); + + Assert.Equal("a\u0130", source.Replace("\u0069", "a", StringComparison.CurrentCulture)); + Assert.Equal("aa", source.Replace("\u0069", "a", StringComparison.CurrentCultureIgnoreCase)); + Assert.Equal("\u0069a", source.Replace("\u0130", "a", StringComparison.CurrentCulture)); + Assert.Equal("aa", source.Replace("\u0130", "a", StringComparison.CurrentCultureIgnoreCase)); + }); + + Helpers.PerformActionWithCulture(new CultureInfo("en-US"), () => + { + Assert.False("\u0069".Equals("\u0130", StringComparison.CurrentCultureIgnoreCase)); + + Assert.Equal("a\u0130", source.Replace("\u0069", "a", StringComparison.CurrentCulture)); + Assert.Equal("a\u0130", source.Replace("\u0069", "a", StringComparison.CurrentCultureIgnoreCase)); + Assert.Equal("\u0069a", source.Replace("\u0130", "a", StringComparison.CurrentCulture)); + Assert.Equal("\u0069a", source.Replace("\u0130", "a", StringComparison.CurrentCultureIgnoreCase)); + }); + } + + public static IEnumerable Replace_StringComparisonCulture_TestData() + { + yield return new object[] { "abc", "abc", "def", false, null, "def" }; + yield return new object[] { "abc", "ABC", "def", false, null, "abc" }; + yield return new object[] { "abc", "abc", "def", false, CultureInfo.InvariantCulture, "def" }; + yield return new object[] { "abc", "ABC", "def", false, CultureInfo.InvariantCulture, "abc" }; + + yield return new object[] { "abc", "abc", "def", true, null, "def" }; + yield return new object[] { "abc", "ABC", "def", true, null, "def" }; + yield return new object[] { "abc", "abc", "def", true, CultureInfo.InvariantCulture, "def" }; + yield return new object[] { "abc", "ABC", "def", true, CultureInfo.InvariantCulture, "def" }; + + yield return new object[] { "abc", "abc" + SoftHyphen, "def", false, null, "def" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", true, null, "def" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", false, CultureInfo.InvariantCulture, "def" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", true, CultureInfo.InvariantCulture, "def" }; + + yield return new object[] { "\u0069\u0130", "\u0069", "a", false, new CultureInfo("tr-TR"), "a\u0130" }; + yield return new object[] { "\u0069\u0130", "\u0069", "a", true, new CultureInfo("tr-TR"), "aa" }; + yield return new object[] { "\u0069\u0130", "\u0069", "a", false, CultureInfo.InvariantCulture, "a\u0130" }; + yield return new object[] { "\u0069\u0130", "\u0069", "a", true, CultureInfo.InvariantCulture, "a\u0130" }; + } + + [Theory] + [MemberData(nameof(Replace_StringComparisonCulture_TestData))] + public void Replace_StringComparisonCulture_ReturnsExpected(string original, string oldValue, string newValue, bool ignoreCase, CultureInfo culture, string expected) + { + Assert.Equal(expected, original.Replace(oldValue, newValue, ignoreCase, culture)); + if (culture == null) + { + Assert.Equal(expected, original.Replace(oldValue, newValue, ignoreCase, CultureInfo.CurrentCulture)); + } + } + + [Fact] + public void Replace_StringComparsion_NullOldValue_ThrowsArgumentException() + { + Assert.Throws("oldValue", () => "abc".Replace(null, "def", StringComparison.CurrentCulture)); + Assert.Throws("oldValue", () => "abc".Replace(null, "def", true, CultureInfo.CurrentCulture)); + } + + //TODO: [Fact] + public void Replace_StringComparsion_EmptyOldValue_ThrowsArgumentException() + { + Assert.Throws("oldValue", () => "abc".Replace("", "def", StringComparison.CurrentCulture)); + Assert.Throws("oldValue", () => "abc".Replace("", "def", true, CultureInfo.CurrentCulture)); + } + + [Theory] + [InlineData(StringComparison.CurrentCulture - 1)] + [InlineData(StringComparison.OrdinalIgnoreCase + 1)] + public void Replace_NoSuchStringComparison_ThrowsArgumentException(StringComparison comparisonType) + { + Assert.Throws("comparisonType", () => "abc".Replace("abc", "def", comparisonType)); + } } -} \ No newline at end of file +} From 51cba35b4e5f49ff00458ab31c3f28a2a379144d Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sun, 16 Apr 2017 17:01:35 +0700 Subject: [PATCH 087/336] Fixup stale comments in StringTests --- .../tests/System/StringTests.cs | 234 +++++++++--------- 1 file changed, 118 insertions(+), 116 deletions(-) diff --git a/src/System.Runtime/tests/System/StringTests.cs b/src/System.Runtime/tests/System/StringTests.cs index ccad39972e26..42919cfb7d1a 100644 --- a/src/System.Runtime/tests/System/StringTests.cs +++ b/src/System.Runtime/tests/System/StringTests.cs @@ -2,12 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; -using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -15,10 +13,9 @@ namespace System.Tests { - public static partial class StringTests + public partial class StringTests { - private static readonly bool s_isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); - private const string c_SoftHyphen = "\u00AD"; + private const string SoftHyphen = "\u00AD"; [Theory] [InlineData(new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '\0' }, "abcdefgh")] @@ -420,7 +417,7 @@ public static void Concat_Invalid() [InlineData("Hello", 2, 0, 3, new char[] { 'l', 'l', 'o', '\0', '\0', '\0', '\0', '\0', '\0', '\0' })] [InlineData("Hello", 0, 7, 3, new char[] { '\0', '\0', '\0', '\0', '\0', '\0', '\0', 'H', 'e', 'l' })] [InlineData("Hello", 5, 10, 0, new char[] { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' })] - [InlineData("H" + c_SoftHyphen + "ello", 0, 0, 3, new char[] { 'H', '\u00AD', 'e' })] + [InlineData("H" + SoftHyphen + "ello", 0, 0, 3, new char[] { 'H', '\u00AD', 'e' })] public static void CopyTo(string s, int sourceIndex, int destinationIndex, int count, char[] expected) { char[] dst = new char[expected.Length]; @@ -481,27 +478,27 @@ public static void CopyTo_Invalid() [InlineData(null, -1, null, -1, -1, StringComparison.CurrentCultureIgnoreCase, 0)] [InlineData("foo", -1, null, -1, -1, StringComparison.CurrentCultureIgnoreCase, 1)] [InlineData(null, -1, "foo", -1, -1, StringComparison.CurrentCultureIgnoreCase, -1)] - // InvariantCulture (not exposed as enum case, but is valid) - [InlineData("Hello", 0, "Hello", 0, 5, (StringComparison)2, 0)] - [InlineData("Hello", 0, "Goodbye", 0, 5, (StringComparison)2, 1)] - [InlineData("Goodbye", 0, "Hello", 0, 5, (StringComparison)2, -1)] - [InlineData("HELLO", 2, "hello", 2, 3, (StringComparison)2, 1)] - [InlineData("hello", 2, "HELLO", 2, 3, (StringComparison)2, -1)] - [InlineData(null, 0, null, 0, 0, (StringComparison)2, 0)] - [InlineData("Hello", 0, null, 0, 5, (StringComparison)2, 1)] - [InlineData(null, 0, "Hello", 0, 5, (StringComparison)2, -1)] - // InvariantCultureIgnoreCase (not exposed as enum case, but is valid) - [InlineData("HELLO", 0, "hello", 0, 5, (StringComparison)3, 0)] - [InlineData("Hello", 0, "Hello", 0, 5, (StringComparison)3, 0)] - [InlineData("Hello", 2, "Hello", 2, 3, (StringComparison)3, 0)] - [InlineData("Hello", 2, "Yellow", 2, 3, (StringComparison)3, 0)] - [InlineData("Hello", 0, "Goodbye", 0, 5, (StringComparison)3, 1)] - [InlineData("Goodbye", 0, "Hello", 0, 5, (StringComparison)3, -1)] - [InlineData("HELLO", 2, "hello", 2, 3, (StringComparison)3, 0)] - [InlineData("Hello", 2, "Goodbye", 2, 3, (StringComparison)3, -1)] - [InlineData(null, 0, null, 0, 0, (StringComparison)3, 0)] - [InlineData("Hello", 0, null, 0, 5, (StringComparison)3, 1)] - [InlineData(null, 0, "Hello", 0, 5, (StringComparison)3, -1)] + // InvariantCulture + [InlineData("Hello", 0, "Hello", 0, 5, StringComparison.InvariantCulture, 0)] + [InlineData("Hello", 0, "Goodbye", 0, 5, StringComparison.InvariantCulture, 1)] + [InlineData("Goodbye", 0, "Hello", 0, 5, StringComparison.InvariantCulture, -1)] + [InlineData("HELLO", 2, "hello", 2, 3, StringComparison.InvariantCulture, 1)] + [InlineData("hello", 2, "HELLO", 2, 3, StringComparison.InvariantCulture, -1)] + [InlineData(null, 0, null, 0, 0, StringComparison.InvariantCulture, 0)] + [InlineData("Hello", 0, null, 0, 5, StringComparison.InvariantCulture, 1)] + [InlineData(null, 0, "Hello", 0, 5, StringComparison.InvariantCulture, -1)] + // InvariantCultureIgnoreCase + [InlineData("HELLO", 0, "hello", 0, 5, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 0, "Hello", 0, 5, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 2, "Hello", 2, 3, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 2, "Yellow", 2, 3, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 0, "Goodbye", 0, 5, StringComparison.InvariantCultureIgnoreCase, 1)] + [InlineData("Goodbye", 0, "Hello", 0, 5, StringComparison.InvariantCultureIgnoreCase, -1)] + [InlineData("HELLO", 2, "hello", 2, 3, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 2, "Goodbye", 2, 3, StringComparison.InvariantCultureIgnoreCase, -1)] + [InlineData(null, 0, null, 0, 0, StringComparison.InvariantCultureIgnoreCase, 0)] + [InlineData("Hello", 0, null, 0, 5, StringComparison.InvariantCultureIgnoreCase, 1)] + [InlineData(null, 0, "Hello", 0, 5, StringComparison.InvariantCultureIgnoreCase, -1)] // Ordinal [InlineData("Hello", 0, "Hello", 0, 5, StringComparison.Ordinal, 0)] [InlineData("Hello", 0, "Goodbye", 0, 5, StringComparison.Ordinal, 1)] @@ -513,7 +510,7 @@ public static void CopyTo_Invalid() [InlineData("Hello", 0, "Hello", 0, 5, StringComparison.Ordinal, 0)] [InlineData("Hello", 0, "Hello", 0, 3, StringComparison.Ordinal, 0)] [InlineData("Hello", 2, "Hello", 2, 3, StringComparison.Ordinal, 0)] - [InlineData("Hello", 0, "He" + c_SoftHyphen + "llo", 0, 5, StringComparison.Ordinal, -1)] + [InlineData("Hello", 0, "He" + SoftHyphen + "llo", 0, 5, StringComparison.Ordinal, -1)] [InlineData("Hello", 0, "-==-", 3, 5, StringComparison.Ordinal, 0)] [InlineData("\uD83D\uDD53Hello\uD83D\uDD50", 1, "\uD83D\uDD53Hello\uD83D\uDD54", 1, 7, StringComparison.Ordinal, 0)] // Surrogate split [InlineData("Hello", 0, "Hello123", 0, int.MaxValue, StringComparison.Ordinal, -1)] // Recalculated length, second string longer @@ -771,7 +768,7 @@ public static void Contains_NullValue_ThrowsArgumentNullException() [InlineData("Hello", "", StringComparison.CurrentCulture, true)] [InlineData("Hello", "HELLO", StringComparison.CurrentCulture, false)] [InlineData("Hello", "Abc", StringComparison.CurrentCulture, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, StringComparison.CurrentCulture, true)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.CurrentCulture, true)] [InlineData("", "", StringComparison.CurrentCulture, true)] [InlineData("", "a", StringComparison.CurrentCulture, false)] // CurrentCultureIgnoreCase @@ -780,28 +777,28 @@ public static void Contains_NullValue_ThrowsArgumentNullException() [InlineData("Hello", "", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "LLO", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "Abc", StringComparison.CurrentCultureIgnoreCase, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, StringComparison.CurrentCultureIgnoreCase, true)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("", "", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("", "a", StringComparison.CurrentCultureIgnoreCase, false)] - // InvariantCulture (not exposed as enum case, but is valid) - [InlineData("", "Foo", (StringComparison)2, false)] - [InlineData("Hello", "llo", (StringComparison)2, true)] - [InlineData("Hello", "Hello", (StringComparison)2, true)] - [InlineData("Hello", "", (StringComparison)2, true)] - [InlineData("Hello", "HELLO", (StringComparison)2, false)] - [InlineData("Hello", "Abc", (StringComparison)2, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, (StringComparison)2, true)] - [InlineData("", "", (StringComparison)2, true)] - [InlineData("", "a", (StringComparison)2, false)] - // InvariantCultureIgnoreCase (not exposed as enum case, but is valid) - [InlineData("Hello", "llo", (StringComparison)3, true)] - [InlineData("Hello", "Hello", (StringComparison)3, true)] - [InlineData("Hello", "", (StringComparison)3, true)] - [InlineData("Hello", "LLO", (StringComparison)3, true)] - [InlineData("Hello", "Abc", (StringComparison)3, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, (StringComparison)3, true)] - [InlineData("", "", (StringComparison)3, true)] - [InlineData("", "a", (StringComparison)3, false)] + // InvariantCulture + [InlineData("", "Foo", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "llo", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "Hello", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "HELLO", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "Abc", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.InvariantCulture, true)] + [InlineData("", "", StringComparison.InvariantCulture, true)] + [InlineData("", "a", StringComparison.InvariantCulture, false)] + // InvariantCultureIgnoreCase + [InlineData("Hello", "llo", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "Hello", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "LLO", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "Abc", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("", "", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("", "a", StringComparison.InvariantCultureIgnoreCase, false)] // Ordinal [InlineData("Hello", "o", StringComparison.Ordinal, true)] [InlineData("Hello", "llo", StringComparison.Ordinal, true)] @@ -810,7 +807,7 @@ public static void Contains_NullValue_ThrowsArgumentNullException() [InlineData("Hello", "", StringComparison.Ordinal, true)] [InlineData("Hello", "LLO", StringComparison.Ordinal, false)] [InlineData("Hello", "Abc", StringComparison.Ordinal, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, StringComparison.Ordinal, false)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.Ordinal, false)] [InlineData("", "", StringComparison.Ordinal, true)] [InlineData("", "a", StringComparison.Ordinal, false)] // OrdinalIgnoreCase @@ -820,7 +817,7 @@ public static void Contains_NullValue_ThrowsArgumentNullException() [InlineData("Hello", "", StringComparison.OrdinalIgnoreCase, true)] [InlineData("Hello", "LLO", StringComparison.OrdinalIgnoreCase, true)] [InlineData("Hello", "Abc", StringComparison.OrdinalIgnoreCase, false)] - [InlineData("Hello", "llo" + c_SoftHyphen, StringComparison.OrdinalIgnoreCase, false)] + [InlineData("Hello", "llo" + SoftHyphen, StringComparison.OrdinalIgnoreCase, false)] [InlineData("", "", StringComparison.OrdinalIgnoreCase, true)] [InlineData("", "a", StringComparison.OrdinalIgnoreCase, false)] public static void EndsWith(string s, string value, StringComparison comparisonType, bool expected) @@ -974,7 +971,7 @@ public static void GetEnumerator_Generic_Invalid() [InlineData("", "Hello", StringComparison.CurrentCulture, false)] [InlineData("", "", StringComparison.CurrentCulture, true)] [InlineData("123", 123, StringComparison.CurrentCulture, false)] // Not a string - // CurrentCultureIgnoreCase + // CurrentCultureIgnoreCase [InlineData("Hello", "Hello", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "hello", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "helloo", StringComparison.CurrentCultureIgnoreCase, false)] @@ -986,31 +983,31 @@ public static void GetEnumerator_Generic_Invalid() [InlineData("", "Hello", StringComparison.CurrentCultureIgnoreCase, false)] [InlineData("", "", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("123", 123, StringComparison.CurrentCultureIgnoreCase, false)] // Not a string - // InvariantCulture (not exposed as enum case, but is valid) - [InlineData("Hello", "Hello", (StringComparison)2, true)] - [InlineData("Hello", "hello", (StringComparison)2, false)] - [InlineData("Hello", "Helloo", (StringComparison)2, false)] - [InlineData("Hello", "Hell", (StringComparison)2, false)] - [InlineData("Hello", null, (StringComparison)2, false)] - [InlineData(null, "Hello", (StringComparison)2, false)] - [InlineData(null, null, (StringComparison)2, true)] - [InlineData("Hello", "", (StringComparison)2, false)] - [InlineData("", "Hello", (StringComparison)2, false)] - [InlineData("", "", (StringComparison)2, true)] - [InlineData("123", 123, (StringComparison)3, false)] // Not a string - // InvariantCultureIgnoreCase (not exposed as enum case, but is valid) - [InlineData("Hello", "Hello", (StringComparison)3, true)] - [InlineData("Hello", "hello", (StringComparison)3, true)] - [InlineData("Hello", "Helloo", (StringComparison)3, false)] - [InlineData("Hello", "Hell", (StringComparison)3, false)] - [InlineData("Hello", null, (StringComparison)3, false)] - [InlineData(null, "Hello", (StringComparison)3, false)] - [InlineData(null, null, (StringComparison)3, true)] - [InlineData("Hello", "", (StringComparison)3, false)] - [InlineData("", "Hello", (StringComparison)3, false)] - [InlineData("", "", (StringComparison)3, true)] - [InlineData("123", 123, (StringComparison)3, false)] // Not a string - // Ordinal + // InvariantCulture + [InlineData("Hello", "Hello", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "hello", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "Helloo", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "Hell", StringComparison.InvariantCulture, false)] + [InlineData("Hello", null, StringComparison.InvariantCulture, false)] + [InlineData(null, "Hello", StringComparison.InvariantCulture, false)] + [InlineData(null, null, StringComparison.InvariantCulture, true)] + [InlineData("Hello", "", StringComparison.InvariantCulture, false)] + [InlineData("", "Hello", StringComparison.InvariantCulture, false)] + [InlineData("", "", StringComparison.InvariantCulture, true)] + [InlineData("123", 123, StringComparison.InvariantCultureIgnoreCase, false)] // Not a string + // InvariantCultureIgnoreCase + [InlineData("Hello", "Hello", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "hello", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "Helloo", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("Hello", "Hell", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("Hello", null, StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData(null, "Hello", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData(null, null, StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("", "Hello", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("", "", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("123", 123, StringComparison.InvariantCultureIgnoreCase, false)] // Not a string + // Ordinal [InlineData("Hello", "Hello", StringComparison.Ordinal, true)] [InlineData("Hello", "hello", StringComparison.Ordinal, false)] [InlineData("Hello", "Helloo", StringComparison.Ordinal, false)] @@ -1022,7 +1019,7 @@ public static void GetEnumerator_Generic_Invalid() [InlineData("", "Hello", StringComparison.Ordinal, false)] [InlineData("", "", StringComparison.Ordinal, true)] [InlineData("123", 123, StringComparison.Ordinal, false)] // Not a string - // OridinalIgnoreCase + // OridinalIgnoreCase [InlineData("Hello", "Hello", StringComparison.OrdinalIgnoreCase, true)] [InlineData("HELLO", "hello", StringComparison.OrdinalIgnoreCase, true)] [InlineData("Hello", "Helloo", StringComparison.OrdinalIgnoreCase, false)] @@ -1154,7 +1151,7 @@ public static void Format_Invalid() [InlineData("Hello", 'l', 4, 1, -1)] [InlineData("Hello", 'x', 1, 4, -1)] [InlineData("Hello", 'o', 5, 0, -1)] - [InlineData("H" + c_SoftHyphen + "ello", 'e', 0, 3, 2)] + [InlineData("H" + SoftHyphen + "ello", 'e', 0, 3, 2)] // For some reason, this is failing on *nix with ordinal comparisons. // Possibly related issue: dotnet/coreclr#2051 // [InlineData("Hello", '\0', 0, 5, -1)] // .NET strings are terminated with a null character, but they should not be included as part of the string @@ -1343,15 +1340,15 @@ public static void IndexOf_HungarianDoubleCompression() string target = "ddzs"; Helpers.PerformActionWithCulture(new CultureInfo("hu-HU"), () => { - /* - There are differences between Windows and ICU regarding contractions. - Windows has equal contraction collation weights, including case (target="Ddzs" same behavior as "ddzs"). - ICU has different contraction collation weights, depending on locale collation rules. - If CurrentCultureIgnoreCase is specified, ICU will use 'secondary' collation rules - which ignore the contraction collation weights (defined as 'tertiary' rules) - */ - Assert.Equal(s_isWindows ? 0 : -1, source.IndexOf(target)); - Assert.Equal(s_isWindows ? 0 : -1, source.IndexOf(target, StringComparison.CurrentCulture)); + /* + There are differences between Windows and ICU regarding contractions. + Windows has equal contraction collation weights, including case (target="Ddzs" same behavior as "ddzs"). + ICU has different contraction collation weights, depending on locale collation rules. + If CurrentCultureIgnoreCase is specified, ICU will use 'secondary' collation rules + which ignore the contraction collation weights (defined as 'tertiary' rules) + */ + Assert.Equal(PlatformDetection.IsWindows ? 0 : -1, source.IndexOf(target)); + Assert.Equal(PlatformDetection.IsWindows ? 0 : -1, source.IndexOf(target, StringComparison.CurrentCulture)); Assert.Equal(0, source.IndexOf(target, StringComparison.CurrentCultureIgnoreCase)); Assert.Equal(-1, source.IndexOf(target, StringComparison.Ordinal)); @@ -1490,7 +1487,7 @@ public static void IndexOf_Invalid() [InlineData("Hello", new char[] { 'd', 'e', 'f' }, 1, 3, 1)] [InlineData("Hello", new char[] { 'a', 'b', 'c' }, 2, 3, -1)] [InlineData("Hello", new char[0], 2, 3, -1)] - [InlineData("H" + c_SoftHyphen + "ello", new char[] { 'a', '\u00AD', 'c' }, 0, 2, 1)] + [InlineData("H" + SoftHyphen + "ello", new char[] { 'a', '\u00AD', 'c' }, 0, 2, 1)] [InlineData("", new char[] { 'd', 'e', 'f' }, 0, 0, -1)] public static void IndexOfAny(string s, char[] anyOf, int startIndex, int count, int expected) { @@ -1710,7 +1707,7 @@ public static void Join_ObjectArray_Null_ThrowsArgumentNullException() [InlineData("Hello", 'l', 4, 3, 3)] [InlineData("Hello", 'l', 0, 1, -1)] [InlineData("Hello", 'x', 3, 4, -1)] - [InlineData("H" + c_SoftHyphen + "ello", 'H', 2, 3, 0)] + [InlineData("H" + SoftHyphen + "ello", 'H', 2, 3, 0)] public static void LastIndexOf_SingleLetter(string s, char value, int startIndex, int count, int expected) { if (count == s.Length) @@ -1883,7 +1880,7 @@ public static void LastIndexOf_EmptyString(string s, int expected) [InlineData("Hello", new char[] { 'd', 'e', 'f' }, 2, 3, 1)] [InlineData("Hello", new char[] { 'a', 'b', 'c' }, 2, 3, -1)] [InlineData("Hello", new char[0], 2, 3, -1)] - [InlineData("H" + c_SoftHyphen + "ello", new char[] { 'a', '\u00AD', 'c' }, 2, 3, 1)] + [InlineData("H" + SoftHyphen + "ello", new char[] { 'a', '\u00AD', 'c' }, 2, 3, 1)] [InlineData("", new char[] { 'd', 'e', 'f' }, -1, -1, -1)] public static void LastIndexOfAny(string s, char[] anyOf, int startIndex, int count, int expected) { @@ -2044,10 +2041,15 @@ public static void Replace_String_String_DoesntAllocateIfNothingIsReplaced(strin } [Fact] - public static void Replace_String_StringInvalid() + public void Replace_NullOldValue_ThrowsArgumentNullException() + { + Assert.Throws("oldValue", () => "Hello".Replace(null, "")); + } + + [Fact] + public void Replace_EmptyOldValue_ThrowsArgumentException() { - Assert.Throws("oldValue", () => "Hello".Replace(null, "")); // Old value is null - Assert.Throws("oldValue", () => "Hello".Replace("", "l")); // Old value is empty + Assert.Throws("oldValue", () => "Hello".Replace("", "l")); } [Theory] @@ -2057,7 +2059,7 @@ public static void Replace_String_StringInvalid() [InlineData("Hello", "", StringComparison.CurrentCulture, true)] [InlineData("Hello", "HELLO", StringComparison.CurrentCulture, false)] [InlineData("Hello", "Abc", StringComparison.CurrentCulture, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", StringComparison.CurrentCulture, true)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.CurrentCulture, true)] [InlineData("", "", StringComparison.CurrentCulture, true)] [InlineData("", "hello", StringComparison.CurrentCulture, false)] // CurrentCultureIgnoreCase @@ -2066,27 +2068,27 @@ public static void Replace_String_StringInvalid() [InlineData("Hello", "", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "HEL", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("Hello", "Abc", StringComparison.CurrentCultureIgnoreCase, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", StringComparison.CurrentCultureIgnoreCase, true)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("", "", StringComparison.CurrentCultureIgnoreCase, true)] [InlineData("", "hello", StringComparison.CurrentCultureIgnoreCase, false)] - // InvariantCulture (not exposed as enum case, but is valid) - [InlineData("Hello", "Hel", (StringComparison)2, true)] - [InlineData("Hello", "Hello", (StringComparison)2, true)] - [InlineData("Hello", "", (StringComparison)2, true)] - [InlineData("Hello", "HELLO", (StringComparison)2, false)] - [InlineData("Hello", "Abc", (StringComparison)2, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", (StringComparison)2, true)] - [InlineData("", "", (StringComparison)2, true)] - [InlineData("", "hello", (StringComparison)2, false)] - // InvariantCultureIgnoreCase (not exposed as enum case, but is valid) - [InlineData("Hello", "Hel", (StringComparison)3, true)] - [InlineData("Hello", "Hello", (StringComparison)3, true)] - [InlineData("Hello", "", (StringComparison)3, true)] - [InlineData("Hello", "HEL", (StringComparison)3, true)] - [InlineData("Hello", "Abc", (StringComparison)3, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", (StringComparison)3, true)] - [InlineData("", "", (StringComparison)3, true)] - [InlineData("", "hello", (StringComparison)3, false)] + // InvariantCulture + [InlineData("Hello", "Hel", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "Hello", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "", StringComparison.InvariantCulture, true)] + [InlineData("Hello", "HELLO", StringComparison.InvariantCulture, false)] + [InlineData("Hello", "Abc", StringComparison.InvariantCulture, false)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.InvariantCulture, true)] + [InlineData("", "", StringComparison.InvariantCulture, true)] + [InlineData("", "hello", StringComparison.InvariantCulture, false)] + // InvariantCultureIgnoreCase + [InlineData("Hello", "Hel", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "Hello", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "HEL", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("Hello", "Abc", StringComparison.InvariantCultureIgnoreCase, false)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("", "", StringComparison.InvariantCultureIgnoreCase, true)] + [InlineData("", "hello", StringComparison.InvariantCultureIgnoreCase, false)] // Ordinal [InlineData("Hello", "H", StringComparison.Ordinal, true)] [InlineData("Hello", "Hel", StringComparison.Ordinal, true)] @@ -2095,7 +2097,7 @@ public static void Replace_String_StringInvalid() [InlineData("Hello", "", StringComparison.Ordinal, true)] [InlineData("Hello", "HEL", StringComparison.Ordinal, false)] [InlineData("Hello", "Abc", StringComparison.Ordinal, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", StringComparison.Ordinal, false)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.Ordinal, false)] [InlineData("", "", StringComparison.Ordinal, true)] [InlineData("", "hello", StringComparison.Ordinal, false)] [InlineData("abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz", StringComparison.Ordinal, true)] @@ -2113,7 +2115,7 @@ public static void Replace_String_StringInvalid() [InlineData("Hello", "", StringComparison.OrdinalIgnoreCase, true)] [InlineData("Hello", "HEL", StringComparison.OrdinalIgnoreCase, true)] [InlineData("Hello", "Abc", StringComparison.OrdinalIgnoreCase, false)] - [InlineData("Hello", c_SoftHyphen + "Hel", StringComparison.OrdinalIgnoreCase, false)] + [InlineData("Hello", SoftHyphen + "Hel", StringComparison.OrdinalIgnoreCase, false)] [InlineData("", "", StringComparison.OrdinalIgnoreCase, true)] [InlineData("", "hello", StringComparison.OrdinalIgnoreCase, false)] public static void StartsWith(string s, string value, StringComparison comparisonType, bool expected) From 37e0be878fed9e9b5eca08970ee83ec02ba2ba09 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sun, 16 Apr 2017 17:40:45 +0700 Subject: [PATCH 088/336] Update uapaot API Compat baseline --- .../src/ApiCompatBaseline.uapaot.txt | 34 ++----------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt b/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt index 8d25411ef3a4..2937ec5bfbae 100644 --- a/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt +++ b/src/System.Runtime/src/ApiCompatBaseline.uapaot.txt @@ -1,44 +1,16 @@ Compat issues with assembly System.Runtime: -TypesMustExist : Type 'System.ArgIterator' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Decimal.FromOACurrency(System.Int64)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Decimal.ToOACurrency(System.Decimal)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Exception.add_SerializeObjectState(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Exception.remove_SerializeObjectState(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Exception.TargetSite.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.GC.GetAllocatedBytesForCurrentThread()' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IntPtr' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. -TypesMustExist : Type 'System.RuntimeArgumentHandle' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.EndsWith(System.Char)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.String.Replace(System.String, System.String, System.Boolean, System.Globalization.CultureInfo)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.String.Replace(System.String, System.String, System.StringComparison)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.String.StartsWith(System.Char)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.TypedReference' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.UIntPtr' does not implement interface 'System.Runtime.Serialization.ISerializable' in the implementation but it does in the contract. -MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.SByte)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt16)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.ComponentModel.DefaultValueAttribute..ctor(System.UInt64)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Globalization.CompareInfo' does not implement interface 'System.Runtime.Serialization.IDeserializationCallback' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -MembersMustExist : Member 'System.IO.Stream.CreateWaitHandle()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Stream.ObjectInvariant()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.IO.Stream.Synchronized(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.FieldInfo.GetValueDirect(System.TypedReference)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Reflection.FieldInfo.SetValueDirect(System.TypedReference, System.Object)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.MemoryFailPoint' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Decoder.GetCharCount(System.Byte*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Decoder.GetChars(System.Byte*, System.Int32, System.Char*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoder.GetBytes(System.Char*, System.Int32, System.Byte*, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.Default.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsAlwaysNormalized()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsAlwaysNormalized(System.Text.NormalizationForm)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.EncodingInfo' does not exist in the implementation but it does exist in the contract. -Total Issues: 42 +Total Issues: 14 From 4676aea61092f9ac2ac5210e10b4e7fbe804438c Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sun, 16 Apr 2017 19:02:17 +0700 Subject: [PATCH 089/336] Address PR feedback --- src/System.Runtime/ref/System.Runtime.cs | 6 ++---- .../tests/System/StringTests.netcoreapp.cs | 9 ++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/System.Runtime/ref/System.Runtime.cs b/src/System.Runtime/ref/System.Runtime.cs index 526cbf96fb2c..fb0d3690b7a6 100644 --- a/src/System.Runtime/ref/System.Runtime.cs +++ b/src/System.Runtime/ref/System.Runtime.cs @@ -5,8 +5,6 @@ // Changes to this file must follow the http://aka.ms/api-review process. // ------------------------------------------------------------------------------ -using System.Globalization; - namespace Microsoft.Win32.SafeHandles { [System.Security.SecurityCriticalAttribute] @@ -2082,8 +2080,8 @@ public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, in public string Remove(int startIndex, int count) { throw null; } public string Replace(char oldChar, char newChar) { throw null; } public string Replace(string oldValue, string newValue) { throw null; } - public string Replace(string oldValue, string newValue, StringComparison comparisonType) { throw null; } - public string Replace(string oldValue, string newValue, bool ignoreCase, CultureInfo culture) { throw null; } + public string Replace(string oldValue, string newValue, System.StringComparison comparisonType) { throw null; } + public string Replace(string oldValue, string newValue, bool ignoreCase, System.Globalization.CultureInfo culture) { throw null; } public string[] Split(char separator, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } public string[] Split(char separator, int count, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } public string[] Split(string separator, System.StringSplitOptions options = System.StringSplitOptions.None) { throw null; } diff --git a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs index 89d694f4b1f5..1f1e07288558 100644 --- a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs @@ -152,12 +152,14 @@ public static IEnumerable Replace_StringComparison_TestData() yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.Ordinal, "abc" }; yield return new object[] { "abc", "abc", "def", StringComparison.OrdinalIgnoreCase, "def" }; - //TODO: yield return new object[] { "abc", "ABC", "def", StringComparison.OrdinalIgnoreCase, "def" }; + // [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] + //yield return new object[] { "abc", "ABC", "def", StringComparison.OrdinalIgnoreCase, "def" }; yield return new object[] { "abc", "abc", "", StringComparison.OrdinalIgnoreCase, "" }; yield return new object[] { "abc", "b", "LONG", StringComparison.OrdinalIgnoreCase, "aLONGc" }; yield return new object[] { "abc", "b", "d", StringComparison.OrdinalIgnoreCase, "adc" }; yield return new object[] { "abc", "b", null, StringComparison.OrdinalIgnoreCase, "ac" }; - //TODO: yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.OrdinalIgnoreCase, "abc" }; + // [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] + //yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.OrdinalIgnoreCase, "abc" }; yield return new object[] { "abc", "abc", "def", StringComparison.InvariantCulture, "def" }; yield return new object[] { "abc", "ABC", "def", StringComparison.InvariantCulture, "abc" }; @@ -261,7 +263,8 @@ public void Replace_StringComparsion_NullOldValue_ThrowsArgumentException() Assert.Throws("oldValue", () => "abc".Replace(null, "def", true, CultureInfo.CurrentCulture)); } - //TODO: [Fact] + [Fact] + [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] public void Replace_StringComparsion_EmptyOldValue_ThrowsArgumentException() { Assert.Throws("oldValue", () => "abc".Replace("", "def", StringComparison.CurrentCulture)); From 3b5f2be4bcf778e5ba9592eb34ad050c95c96c32 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sun, 16 Apr 2017 08:49:33 -0400 Subject: [PATCH 090/336] Disable frequently failing AddDefaultListElement2 test --- .../tests/Mono/ConfigurationSaveTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index c4e0310279bc..6c1eace89432 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -372,6 +372,7 @@ public void AddDefaultListElement() }); } + [ActiveIssue(18431)] [Fact] public void AddDefaultListElement2() { From 239c73fc4a4197e1ef666bed9fb2daf176bd09a7 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sun, 16 Apr 2017 11:04:12 -0400 Subject: [PATCH 091/336] Also disable AddDefaultListElement, which is also failing --- .../tests/Mono/ConfigurationSaveTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index 6c1eace89432..c6e8594b4821 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -350,6 +350,7 @@ public void DefaultValues() }); } + [ActiveIssue(18431)] [Fact] public void AddDefaultListElement() { From 7bd27a096f7a51d3cd6d90a19578bee85f2606cf Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Date: Sun, 16 Apr 2017 14:53:40 -0700 Subject: [PATCH 092/336] Disable MonoTests.System.Configuration.ConfigurationSaveTest.TestElementWithCollection2 --- .../tests/Mono/ConfigurationSaveTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index c4e0310279bc..95116f42153c 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -711,6 +711,7 @@ public void TestElementWithCollection() } [Fact] + [ActiveIssue(18431)] public void TestElementWithCollection2() { Run("TestElementWithCollection2", (config, label) => From 500d6854c2e54a00a820f226c7e6ca6bd1eb756b Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Sun, 16 Apr 2017 15:27:19 -0700 Subject: [PATCH 093/336] Disable Private.Uri tests due to quirked behavior (#18439) * Disable Private.Uri tests due to quirked behavior --- .../tests/FunctionalTests/UriBuilderTests.cs | 17 ++++++++++++++++- .../UriRelativeResolutionTest.cs | 6 ++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs b/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs index 7347a69f5f07..68f9b312fd0b 100644 --- a/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs +++ b/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs @@ -13,6 +13,7 @@ public class UriBuilderTests //This test tests a case where the Core implementation of UriBuilder differs from Desktop Framework UriBuilder. //The Query property will not longer prepend a ? character if the string being assigned is already prepended. [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Difference in behavior")] public static void TestQuery() { var uriBuilder = new UriBuilder(@"http://foo/bar/baz?date=today"); @@ -289,9 +290,23 @@ public void Query_Get_Set(string value, string expected) } [Theory] - [InlineData("fragment", "#fragment")] [InlineData("#fragment", "#fragment")] [InlineData("#", "#")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "In NET Core if the value starts with # then no other # is prepended, in Desktop we always prepend #")] + public void Fragment_Get_Set_StartsWithPound(string value, string expected) + { + var uriBuilder = new UriBuilder(); + uriBuilder.Fragment = value; + Assert.Equal(expected, uriBuilder.Fragment); + + Uri oldUri = uriBuilder.Uri; + uriBuilder.Fragment = value; + Assert.NotSame(uriBuilder.Uri, oldUri); // Should generate new uri + Assert.Equal(uriBuilder.Fragment, uriBuilder.Uri.Fragment); + } + + [Theory] + [InlineData("fragment", "#fragment")] [InlineData("", "")] [InlineData(null, "")] public void Fragment_Get_Set(string value, string expected) diff --git a/src/System.Private.Uri/tests/FunctionalTests/UriRelativeResolutionTest.cs b/src/System.Private.Uri/tests/FunctionalTests/UriRelativeResolutionTest.cs index 15287a51eb01..12a9b2ac3f04 100644 --- a/src/System.Private.Uri/tests/FunctionalTests/UriRelativeResolutionTest.cs +++ b/src/System.Private.Uri/tests/FunctionalTests/UriRelativeResolutionTest.cs @@ -136,6 +136,7 @@ public void Uri_Relative_BaseVsSimplePartialPathWithScheme_ReturnsPartialPathWit } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Relative_SimplePartialPathWithUnknownScheme_Unicode_ReturnsPartialPathWithScheme() { string schemeAndRelative = "scheme:\u011E"; @@ -146,6 +147,7 @@ public void Uri_Relative_SimplePartialPathWithUnknownScheme_Unicode_ReturnsParti } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathWithScheme() { string schemeAndRelative = "http:\u00C7"; @@ -156,6 +158,7 @@ public void Uri_Relative_SimplePartialPathWithScheme_Unicode_ReturnsPartialPathW } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Relative_RightToLeft() { var loremIpsumArabic = "\u0643\u0644 \u0627\u0644\u0649 \u0627\u0644\u0639\u0627\u0644\u0645"; @@ -168,6 +171,7 @@ public void Uri_Relative_RightToLeft() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Relative_Unicode_Glitchy() { var glitchy = "4\u0308\u0311\u031A\u030B\u0352\u034A\u030D\u036C\u036C\u036B\u0344\u0312\u0322\u0334\u0328\u0319\u0323\u0359\u0317\u0324\u0319\u032D\u0331\u0319\u031F\u0331\u0330\u0347\u0353\u0318\u032F\u032C\u03162\u0303\u0313\u031A\u0368\u036E\u0368\u0301\u0367\u0368\u0306\u0305\u0350\u036A\u036F\u0307\u0328\u035F\u0321\u0361\u0320\u032F\u032B\u034E\u0326\u033B"; @@ -180,6 +184,7 @@ public void Uri_Relative_Unicode_Glitchy() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Unicode_Format_Character_Combinations_Scheme() { var combinations = CartesianProductAll(_ => CharUnicodeInfo.GetUnicodeCategory(_) == UnicodeCategory.Format && !UriHelper.IsIriDisallowedBidi(_)); @@ -227,6 +232,7 @@ public void Uri_Unicode_IriUnreserved_Character_Combinations_Scheme() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "See: dotnet/corefx #15145")] public void Uri_Unicode_SurrogatePairs_Scheme() { var combinations = CartesianProductAll(char.IsHighSurrogate, char.IsLowSurrogate, false); From c8ed5b616c140494f8713a839ea4bc16dab47ef2 Mon Sep 17 00:00:00 2001 From: Nate Barbettini Date: Sun, 16 Apr 2017 15:56:26 -0700 Subject: [PATCH 094/336] Add TryAdd/Remove extension methods in CollectionExtensions (#18091) * Add TryAdd and Remove to CollectionExtensions --- ...System.Collections.Concurrent.Tests.csproj | 2 +- .../System.Collections.Immutable.Tests.csproj | 2 +- .../ref/System.Collections.cs | 3 + .../Generic/CollectionExtensions.cs | 33 ++++++++++ .../Generic/CollectionExtensionsTests.cs | 65 +++++++++++++++++++ .../tests/System.Collections.Tests.csproj | 4 +- 6 files changed, 105 insertions(+), 4 deletions(-) diff --git a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj index 88f05125e65c..5d3c9a88962d 100644 --- a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj +++ b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj @@ -10,7 +10,7 @@ - + Common\System\Collections\DictionaryExtensions.cs diff --git a/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj b/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj index 01a3daf0d60d..0562168caad7 100644 --- a/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj +++ b/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj @@ -14,7 +14,7 @@ - + Common\System\Collections\DictionaryExtensions.cs diff --git a/src/System.Collections/ref/System.Collections.cs b/src/System.Collections/ref/System.Collections.cs index 81db6619e614..feeb5b8632dc 100644 --- a/src/System.Collections/ref/System.Collections.cs +++ b/src/System.Collections/ref/System.Collections.cs @@ -49,6 +49,9 @@ public static class CollectionExtensions public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key) { throw null; } public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key, TValue defaultValue) { throw null; } + + public static bool TryAdd(this IDictionary dictionary, TKey key, TValue value) { throw null; } + public static bool Remove(this IDictionary dictionary, TKey key, out TValue value) { throw null; } } public abstract partial class Comparer : System.Collections.Generic.IComparer, System.Collections.IComparer { diff --git a/src/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs b/src/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs index e3a5ef2e95a8..4a4078d565c0 100644 --- a/src/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs +++ b/src/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs @@ -37,5 +37,38 @@ public static TValue GetValueOrDefault(this IReadOnlyDictionary(this IDictionary dictionary, TKey key, TValue value) + { + if (dictionary == null) + { + throw new ArgumentNullException(nameof(dictionary)); + } + + if (!dictionary.ContainsKey(key)) + { + dictionary.Add(key, value); + return true; + } + + return false; + } + + public static bool Remove(this IDictionary dictionary, TKey key, out TValue value) + { + if (dictionary == null) + { + throw new ArgumentNullException(nameof(dictionary)); + } + + if (dictionary.TryGetValue(key, out value)) + { + dictionary.Remove(key); + return true; + } + + value = default(TValue); + return false; + } } } diff --git a/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs b/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs index 74501974d91a..13d5f7aa56e0 100644 --- a/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs +++ b/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs @@ -72,5 +72,70 @@ public void GetValueOrDefault_NullIReadOnlyDictionary_ThrowsArgumentNullExceptio Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key")); Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key", "value")); } + + [Fact] + public void TryAdd_NullIDictionary_ThrowsArgumentNullException() + { + IDictionary dictionary = null; + Assert.Throws("dictionary", () => dictionary.TryAdd("key", "value")); + } + + [Fact] + public void TryAdd_NullKeyIDictionary_ThrowsArgumentNullException() + { + IDictionary dictionary = new SortedDictionary(); + Assert.Throws("key", () => dictionary.TryAdd(null, "value")); + } + + [Fact] + public void TryAdd_KeyDoesntExistInIDictionary_ReturnsTrue() + { + IDictionary dictionary = new SortedDictionary(); + Assert.True(dictionary.TryAdd("key", "value")); + Assert.Equal("value", dictionary["key"]); + } + + [Fact] + public void TryAdd_KeyExistsInIDictionary_ReturnsFalse() + { + IDictionary dictionary = new SortedDictionary() { ["key"] = "value" }; + Assert.False(dictionary.TryAdd("key", "value2")); + Assert.Equal("value", dictionary["key"]); + } + + [Fact] + public void Remove_NullIDictionary_ThrowsArgumentNullException() + { + IDictionary dictionary = null; + string value = null; + Assert.Throws("dictionary", () => dictionary.Remove("key", out value)); + Assert.Null(value); + } + + [Fact] + public void Remove_NullKeyIDictionary_ThrowsArgumentNullException() + { + IDictionary dictionary = new SortedDictionary(); + string value = null; + Assert.Throws("key", () => dictionary.Remove(null, out value)); + Assert.Null(value); + } + + [Fact] + public void Remove_KeyExistsInIDictionary_ReturnsTrue() + { + IDictionary dictionary = new SortedDictionary() { ["key"] = "value" }; + Assert.True(dictionary.Remove("key", out var value)); + Assert.Equal("value", value); + Assert.Throws(() => dictionary["key"]); + } + + [Fact] + public void Remove_KeyDoesntExistInIDictionary_ReturnsFalse() + { + IDictionary dictionary = new SortedDictionary(); + Assert.False(dictionary.Remove("key", out var value)); + Assert.Equal(default(string), value); + } } } diff --git a/src/System.Collections/tests/System.Collections.Tests.csproj b/src/System.Collections/tests/System.Collections.Tests.csproj index d820abc79a0d..1a3a94b83614 100644 --- a/src/System.Collections/tests/System.Collections.Tests.csproj +++ b/src/System.Collections/tests/System.Collections.Tests.csproj @@ -71,7 +71,7 @@ Common\System\ObjectCloner.cs - + Common\System\Collections\DictionaryExtensions.cs @@ -161,4 +161,4 @@ - \ No newline at end of file + From a1f530342368aea9491d519f71ca670e4d7d2570 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 17 Apr 2017 02:07:04 +0200 Subject: [PATCH 095/336] Fix EnvelopedCms empty attribute collection handling Make corefx match netfx behavior --- .../Pal/Windows/HelpersWindows.cs | 5 +- .../EnvelopedCms/UnprotectedAttributeTests.cs | 54 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/HelpersWindows.cs b/src/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/HelpersWindows.cs index ccb11353cedf..bd4f2e8ebe7d 100644 --- a/src/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/HelpersWindows.cs +++ b/src/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/HelpersWindows.cs @@ -341,13 +341,16 @@ private static unsafe void AddCryptAttribute(CryptographicAttributeObjectCollect { string oidValue = pCryptAttribute->pszObjId.ToStringAnsi(); Oid oid = new Oid(oidValue); + AsnEncodedDataCollection attributeCollection = new AsnEncodedDataCollection(); for (int i = 0; i < pCryptAttribute->cValue; i++) { byte[] encodedAttribute = pCryptAttribute->rgValue[i].ToByteArray(); AsnEncodedData attributeObject = Helpers.CreateBestPkcs9AttributeObjectAvailable(oid, encodedAttribute); - collection.Add(attributeObject); + attributeCollection.Add(attributeObject); } + + collection.Add(new CryptographicAttributeObject(oid, attributeCollection)); } } } diff --git a/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/UnprotectedAttributeTests.cs b/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/UnprotectedAttributeTests.cs index 35c165db70e8..5c797fe3fcd4 100644 --- a/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/UnprotectedAttributeTests.cs +++ b/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/UnprotectedAttributeTests.cs @@ -267,6 +267,60 @@ private static void VerifyUnprotectedAttributes_Heterogenous3(byte[] encodedMess attributes[2].AssertIsDocumentationDescription("My Description 2"); } + [Fact] + public static void TestUnprotectedAttributes1_EmptySet() + { + // This tests the behavior of unprotected attribute extraction when one of the attribute sequences declares an + // attribute type, but the contained SET OF AttributeValue is empty. + // + // Attribute ::= SEQUENCE { + // attrType OBJECT IDENTIFIER, + // attrValues SET OF AttributeValue } + // + // The encoded message was built in ASN.1 editor and tested in framework.It contains an enveloped message + // version 2 with a key transport recipient, the enveloped message contains data encrypted with 3DES. + // + // The attributes set is built as + // { + // { attrType: document description, attrValues: { value1, value2 } }, + // { attrType: document name, attrValues: { } }, + // } + // + // The important part of this test is that there are 0 attributes of a type that is declared within the encoded message. + // This should return 2 as it should create a CryptographicAttributeObjectCollection with two CryptographicAttributeObjects, + // the first one holding a list of document description with the two values, the second one holding an empty list of + // document name. + + byte[] encodedMessage = + ("3082017806092A864886F70D010703A0820169308201650201023181C83081C5020100302E301A311830160603550403" + + "130F5253414B65795472616E7366657231021031D935FB63E8CFAB48A0BF7B397B67C0300D06092A864886F70D010101" + + "05000481802EE6A4AAA9F907E8EF472D8CD8603098488EC1C462815E6FC5A53A3DF6EB730F3D191746FDBBCA89114C6D" + + "45FB6C4F26088043894D5A706889A29D52E03ABEDFAC98336BD01B0A9CFA57CC6C80908F4B42EFCE5E60E7A761451A4D" + + "1A39783072000E551062027795A1CEB079791BA48C5F77D360EE48E185DE6C8CCB1C093D4B302B06092A864886F70D01" + + "0701301406082A864886F70D03070408F55F613664678EE9800800BC3504D1F59470A168300E060A2B06010401823758" + + "020131003056060A2B060104018237580202314804224D00790020004400650073006300720069007000740069006F00" + + "6E0020003100000004224D00790020004400650073006300720069007000740069006F006E00200032000000").HexToByteArray(); + + EnvelopedCms ecms = new EnvelopedCms(); + ecms.Decode(encodedMessage); + + Assert.Equal(2, ecms.UnprotectedAttributes.Count); + + CryptographicAttributeObjectCollection collection = ecms.UnprotectedAttributes; + string attrObj0Oid = collection[0].Oid.Value; + + CryptographicAttributeObject documentDescObj = (attrObj0Oid == Oids.DocumentDescription) ? + collection[0] : + collection[1]; + + CryptographicAttributeObject documentNameObj = (attrObj0Oid == Oids.DocumentName) ? + collection[0] : + collection[1]; + + Assert.Equal(0, documentNameObj.Values.Count); + Assert.Equal(2, documentDescObj.Values.Count); + } + [Fact] public static void TestUnprotectedAttributes1_Arbitrary_RoundTrip() { From d9287b2dfe6c89c2067c23d5b956abd4e2a3ef95 Mon Sep 17 00:00:00 2001 From: Benjamin Bartels Date: Mon, 17 Apr 2017 03:21:44 +0200 Subject: [PATCH 096/336] Performance improvement of CopyTo method of System.Collections.Generic.Stack (#18456) * Improving performance of CopyTo method of generic Stack * Changed tabs to spaces to fix indentation. --- .../src/System/Collections/Generic/Stack.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/System.Collections/src/System/Collections/Generic/Stack.cs b/src/System.Collections/src/System/Collections/Generic/Stack.cs index 93daf914e6cb..2e878554727e 100644 --- a/src/System.Collections/src/System/Collections/Generic/Stack.cs +++ b/src/System.Collections/src/System/Collections/Generic/Stack.cs @@ -126,8 +126,10 @@ public void CopyTo(T[] array, int arrayIndex) Debug.Assert(array != _array); int srcIndex = 0; int dstIndex = arrayIndex + _size; - for (int i = 0; i < _size; i++) + while(srcIndex < _size) + { array[--dstIndex] = _array[srcIndex++]; + } } void ICollection.CopyTo(Array array, int arrayIndex) From 7d35b484890fe95302dd5d5a9aebbefd802095bc Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 08:47:15 +0700 Subject: [PATCH 097/336] Various HttpListener managed implementation improvements (#18450) * Fix HttpListener managed FlushAsync implementation * Perform proper argument validation on HttpListener managed streams * Perform proper argument validation on managed HttpResponseStream.EndWrite * Fix exceptions for managed HttpListener stream invalid operations * Clean up closed connection write tests * Test both chunked and non-chunked input streams in HttpListener --- .../System/Net/Managed/ChunkedInputStream.cs | 16 ++-- .../Net/Managed/HttpRequestStream.Managed.cs | 55 +++++++++++--- .../Net/Managed/HttpResponseStream.Managed.cs | 74 +++++++++++++----- .../tests/GetContextHelper.cs | 18 ++++- .../tests/HttpRequestStreamTests.cs | 76 ++++++++++--------- .../tests/HttpResponseStreamTests.cs | 26 +++---- 6 files changed, 174 insertions(+), 91 deletions(-) diff --git a/src/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs b/src/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs index 0b31a86e9217..b264f20df097 100644 --- a/src/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs +++ b/src/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs @@ -76,7 +76,7 @@ public override int Read(byte[] buffer, int offset, int count) return EndRead(ares); } - public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback cback, object state) + public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback cback, object state) { if (_disposed) throw new ObjectDisposedException(GetType().ToString()); @@ -88,8 +88,8 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy if (offset < 0 || offset > len) throw new ArgumentOutOfRangeException(nameof(offset), SR.offset_out_of_range); - if (count < 0 || offset > len - count) - throw new ArgumentOutOfRangeException(nameof(count), SR.offset_out_of_range); + if (size < 0 || offset > len - size) + throw new ArgumentOutOfRangeException(nameof(size), SR.offset_out_of_range); HttpStreamAsyncResult ares = new HttpStreamAsyncResult(); ares._callback = cback; @@ -99,10 +99,10 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy ares.Complete(); return ares; } - int nread = _decoder.Read(buffer, offset, count); + int nread = _decoder.Read(buffer, offset, size); offset += nread; - count -= nread; - if (count == 0) + size -= nread; + if (size == 0) { // got all we wanted, no need to bother the decoder yet ares._count = nread; @@ -119,7 +119,7 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy ares._buffer = new byte[8192]; ares._offset = 0; ares._count = 8192; - ReadBufferState rb = new ReadBufferState(buffer, offset, count, ares); + ReadBufferState rb = new ReadBufferState(buffer, offset, size, ares); rb.InitialCount += nread; base.BeginRead(ares._buffer, ares._offset, ares._count, OnRead, rb); return ares; @@ -158,6 +158,8 @@ public override int EndRead(IAsyncResult asyncResult) { if (_disposed) throw new ObjectDisposedException(GetType().ToString()); + if (asyncResult == null) + throw new ArgumentNullException(nameof(asyncResult)); HttpStreamAsyncResult ares = asyncResult as HttpStreamAsyncResult; if (asyncResult == null) diff --git a/src/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs b/src/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs index a22f28de1084..00d4d7c11d12 100644 --- a/src/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs +++ b/src/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs @@ -31,6 +31,8 @@ using System.IO; using System.Net.Sockets; using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; namespace System.Net { @@ -79,6 +81,11 @@ public override long Position public override void Flush() { } + + public override Task FlushAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } // Returns 0 if we can keep reading from the base stream, @@ -123,13 +130,25 @@ private int FillFromBuffer(byte[] buffer, int offset, int count) return size; } - public override int Read(byte[] buffer, int offset, int count) + public override int Read(byte[] buffer, int offset, int size) { if (_disposed) throw new ObjectDisposedException(typeof(HttpRequestStream).ToString()); + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } // Call FillFromBuffer to check for buffer boundaries even when remaining_body is 0 - int nread = FillFromBuffer(buffer, offset, count); + int nread = FillFromBuffer(buffer, offset, size); if (nread == -1) { // No more bytes available (Content-Length) return 0; @@ -139,24 +158,36 @@ public override int Read(byte[] buffer, int offset, int count) return nread; } - nread = _stream.Read(buffer, offset, count); + nread = _stream.Read(buffer, offset, size); if (nread > 0 && _remainingBody > 0) _remainingBody -= nread; return nread; } - public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback cback, object state) + public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback cback, object state) { if (_disposed) throw new ObjectDisposedException(typeof(HttpRequestStream).ToString()); + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } - int nread = FillFromBuffer(buffer, offset, count); + int nread = FillFromBuffer(buffer, offset, size); if (nread > 0 || nread == -1) { HttpStreamAsyncResult ares = new HttpStreamAsyncResult(); ares._buffer = buffer; ares._offset = offset; - ares._count = count; + ares._count = size; ares._callback = cback; ares._state = state; ares._synchRead = Math.Max(0, nread); @@ -166,12 +197,12 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy // Avoid reading past the end of the request to allow // for HTTP pipelining - if (_remainingBody >= 0 && count > _remainingBody) + if (_remainingBody >= 0 && size > _remainingBody) { - count = (int)Math.Min(int.MaxValue, _remainingBody); + size = (int)Math.Min(int.MaxValue, _remainingBody); } - return _stream.BeginRead(buffer, offset, count, cback, state); + return _stream.BeginRead(buffer, offset, size, cback, state); } public override int EndRead(IAsyncResult asyncResult) @@ -211,18 +242,18 @@ public override void SetLength(long value) public override void Write(byte[] buffer, int offset, int count) { - throw new NotSupportedException(SR.net_readonlystream); + throw new InvalidOperationException(SR.net_readonlystream); } public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback cback, object state) { - throw new NotSupportedException(SR.net_readonlystream); + throw new InvalidOperationException(SR.net_readonlystream); } public override void EndWrite(IAsyncResult async_result) { - throw new NotSupportedException(SR.net_readonlystream); + throw new InvalidOperationException(SR.net_readonlystream); } } } diff --git a/src/System.Net.HttpListener/src/System/Net/Managed/HttpResponseStream.Managed.cs b/src/System.Net.HttpListener/src/System/Net/Managed/HttpResponseStream.Managed.cs index e5839a01bb88..5e601296e35c 100644 --- a/src/System.Net.HttpListener/src/System/Net/Managed/HttpResponseStream.Managed.cs +++ b/src/System.Net.HttpListener/src/System/Net/Managed/HttpResponseStream.Managed.cs @@ -32,6 +32,7 @@ using System.Net.Sockets; using System.Text; using System.Runtime.InteropServices; +using System.Threading; using System.Threading.Tasks; namespace System.Net @@ -151,6 +152,11 @@ public override void Flush() { } + public override Task FlushAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } + private static byte[] s_crlf = new byte[] { 13, 10 }; private static byte[] GetChunkSizeBytes(int size, bool final) { @@ -183,11 +189,23 @@ private async Task InternalWriteIgnoreErrorsAsync(byte[] buffer, int offset, int catch { } } - public override void Write(byte[] buffer, int offset, int count) + public override void Write(byte[] buffer, int offset, int size) { if (_disposed) throw new ObjectDisposedException(GetType().ToString()); - if (count == 0) + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } + if (size == 0) return; byte[] bytes = null; @@ -199,13 +217,13 @@ public override void Write(byte[] buffer, int offset, int count) ms.Position = ms.Length; if (chunked) { - bytes = GetChunkSizeBytes(count, false); + bytes = GetChunkSizeBytes(size, false); ms.Write(bytes, 0, bytes.Length); } - int new_count = Math.Min(count, 16384 - (int)ms.Position + (int)start); + int new_count = Math.Min(size, 16384 - (int)ms.Position + (int)start); ms.Write(buffer, offset, new_count); - count -= new_count; + size -= new_count; offset += new_count; InternalWrite(ms.GetBuffer(), (int)start, (int)(ms.Length - start)); ms.SetLength(0); @@ -213,20 +231,32 @@ public override void Write(byte[] buffer, int offset, int count) } else if (chunked) { - bytes = GetChunkSizeBytes(count, false); + bytes = GetChunkSizeBytes(size, false); InternalWrite(bytes, 0, bytes.Length); } - if (count > 0) - InternalWrite(buffer, offset, count); + if (size > 0) + InternalWrite(buffer, offset, size); if (chunked) InternalWrite(s_crlf, 0, 2); } - public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback cback, object state) + public override IAsyncResult BeginWrite(byte[] buffer, int offset, int size, AsyncCallback cback, object state) { if (_disposed) throw new ObjectDisposedException(GetType().ToString()); + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer)); + } + if (offset < 0 || offset > buffer.Length) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + if (size < 0 || size > buffer.Length - offset) + { + throw new ArgumentOutOfRangeException(nameof(size)); + } byte[] bytes = null; MemoryStream ms = GetHeaders(false); @@ -237,33 +267,37 @@ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, As ms.Position = ms.Length; if (chunked) { - bytes = GetChunkSizeBytes(count, false); + bytes = GetChunkSizeBytes(size, false); ms.Write(bytes, 0, bytes.Length); } - ms.Write(buffer, offset, count); + ms.Write(buffer, offset, size); buffer = ms.GetBuffer(); offset = (int)start; - count = (int)(ms.Position - start); + size = (int)(ms.Position - start); } else if (chunked) { - bytes = GetChunkSizeBytes(count, false); + bytes = GetChunkSizeBytes(size, false); InternalWrite(bytes, 0, bytes.Length); } - return _stream.BeginWrite(buffer, offset, count, cback, state); + return _stream.BeginWrite(buffer, offset, size, cback, state); } - public override void EndWrite(IAsyncResult ares) + public override void EndWrite(IAsyncResult asyncResult) { if (_disposed) throw new ObjectDisposedException(GetType().ToString()); + if (asyncResult == null) + { + throw new ArgumentNullException(nameof(asyncResult)); + } if (_ignore_errors) { try { - _stream.EndWrite(ares); + _stream.EndWrite(asyncResult); if (_response.SendChunked) _stream.Write(s_crlf, 0, 2); } @@ -271,7 +305,7 @@ public override void EndWrite(IAsyncResult ares) } else { - _stream.EndWrite(ares); + _stream.EndWrite(asyncResult); if (_response.SendChunked) _stream.Write(s_crlf, 0, 2); } @@ -279,18 +313,18 @@ public override void EndWrite(IAsyncResult ares) public override int Read(byte[] buffer, int offset, int count) { - throw new NotSupportedException(SR.net_writeonlystream); + throw new InvalidOperationException(SR.net_writeonlystream); } public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback cback, object state) { - throw new NotSupportedException(SR.net_writeonlystream); + throw new InvalidOperationException(SR.net_writeonlystream); } public override int EndRead(IAsyncResult ares) { - throw new NotSupportedException(SR.net_writeonlystream); + throw new InvalidOperationException(SR.net_writeonlystream); } public override long Seek(long offset, SeekOrigin origin) diff --git a/src/System.Net.HttpListener/tests/GetContextHelper.cs b/src/System.Net.HttpListener/tests/GetContextHelper.cs index 4ca6d1bf54ba..f6db3343207a 100644 --- a/src/System.Net.HttpListener/tests/GetContextHelper.cs +++ b/src/System.Net.HttpListener/tests/GetContextHelper.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Net.Http; +using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; @@ -29,12 +30,12 @@ public async Task GetResponse() return context.Response; } - public async Task GetRequest() + public async Task GetRequest(bool chunked) { // We need to create a mock request to give the HttpListener a context. Task serverContext = _listener.GetContextAsync(); - _client.DefaultRequestHeaders.TransferEncodingChunked = true; + _client.DefaultRequestHeaders.TransferEncodingChunked = chunked; Task clientTask = _client.PostAsync(_listeningUrl, new StringContent("Hello")); HttpListenerContext context = await serverContext; @@ -54,4 +55,17 @@ public class CustomAsyncResult : IAsyncResult public bool CompletedSynchronously => throw new NotImplementedException(); public bool IsCompleted => throw new NotImplementedException(); } + + public class Helpers + { + public static void WaitForSocketShutdown(Socket socket) + { + while (SocketConnected(socket)); + } + + public static bool SocketConnected(Socket socket) + { + return !(socket.Poll(100, SelectMode.SelectRead) && socket.Available == 0); + } + } } diff --git a/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs b/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs index 07b18a0edbc7..8c7eef6197de 100644 --- a/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs +++ b/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs @@ -2,12 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Net.Sockets; -using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -287,7 +285,7 @@ public async Task Read_NotEnoughThenCloseAsynchronous_Success(bool transferEncod [Fact] public async Task CanSeek_Get_ReturnsFalse() { - HttpListenerRequest response = await _helper.GetRequest(); + HttpListenerRequest response = await _helper.GetRequest(chunked: true); using (Stream inputStream = response.InputStream) { Assert.False(inputStream.CanSeek); @@ -305,7 +303,7 @@ public async Task CanSeek_Get_ReturnsFalse() [Fact] public async Task CanRead_Get_ReturnsTrue() { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked: true); using (Stream inputStream = request.InputStream) { Assert.True(inputStream.CanRead); @@ -313,10 +311,9 @@ public async Task CanRead_Get_ReturnsTrue() } [Fact] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // NotSupportedException thrown instead of InvalidOperationException public async Task CanWrite_Get_ReturnsFalse() { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked: true); using (Stream inputStream = request.InputStream) { Assert.False(inputStream.CanWrite); @@ -331,10 +328,12 @@ public async Task CanWrite_Get_ReturnsFalse() } } - [Fact] - public async Task Read_NullBuffer_ThrowsArgumentNullException() + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task Read_NullBuffer_ThrowsArgumentNullException(bool chunked) { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { Assert.Throws("buffer", () => inputStream.Read(null, 0, 0)); @@ -343,12 +342,13 @@ public async Task Read_NullBuffer_ThrowsArgumentNullException() } [Theory] - [InlineData(-1)] - [InlineData(3)] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // Managed implementation throws different exception - public async Task Read_InvalidOffset_ThrowsArgumentOutOfRangeException(int offset) + [InlineData(-1, true)] + [InlineData(3, true)] + [InlineData(-1, false)] + [InlineData(3, false)] + public async Task Read_InvalidOffset_ThrowsArgumentOutOfRangeException(int offset, bool chunked) { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { Assert.Throws("offset", () => inputStream.Read(new byte[2], offset, 0)); @@ -357,13 +357,15 @@ public async Task Read_InvalidOffset_ThrowsArgumentOutOfRangeException(int offse } [Theory] - [InlineData(0, 3)] - [InlineData(1, 2)] - [InlineData(2, 1)] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // Managed implementation throws different exception - public async Task Read_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int offset, int size) + [InlineData(0, 3, true)] + [InlineData(1, 2, true)] + [InlineData(2, 1, true)] + [InlineData(0, 3, false)] + [InlineData(1, 2, false)] + [InlineData(2, 1, false)] + public async Task Read_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int offset, int size, bool chunked) { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { Assert.Throws("size", () => inputStream.Read(new byte[2], offset, size)); @@ -371,24 +373,26 @@ public async Task Read_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int o } } - [Fact] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // No validation performed - public async Task EndRead_NullAsyncResult_ThrowsArgumentNullException() + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task EndRead_NullAsyncResult_ThrowsArgumentNullException(bool chunked) { - HttpListenerRequest request = await _helper.GetRequest(); - + HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { Assert.Throws("asyncResult", () => inputStream.EndRead(null)); } } - [Fact] + [Theory] + [InlineData(true)] + [InlineData(false)] [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // No validation performed - public async Task EndRead_InvalidAsyncResult_ThrowsArgumentException() + public async Task EndRead_InvalidAsyncResult_ThrowsArgumentException(bool chunked) { - HttpListenerRequest request1 = await _helper.GetRequest(); - HttpListenerRequest request2 = await _helper.GetRequest(); + HttpListenerRequest request1 = await _helper.GetRequest(chunked); + HttpListenerRequest request2 = await _helper.GetRequest(chunked); using (Stream inputStream1 = request1.InputStream) using (Stream inputStream2 = request2.InputStream) @@ -400,11 +404,13 @@ public async Task EndRead_InvalidAsyncResult_ThrowsArgumentException() } } - [Fact] + [Theory] + [InlineData(true)] + [InlineData(false)] [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // No validation performed - public async Task EndRead_CalledTwice_ThrowsInvalidOperationException() + public async Task EndRead_CalledTwice_ThrowsInvalidOperationException(bool chunked) { - HttpListenerRequest request = await _helper.GetRequest(); + HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { IAsyncResult beginReadResult = inputStream.BeginRead(new byte[0], 0, 0, null, null); @@ -432,7 +438,8 @@ public async Task Read_FromClosedConnectionAsynchronously_ThrowsHttpListenerExce HttpListenerContext context = await _listener.GetContextAsync(); // Disconnect the Socket from the HttpListener. - client.Disconnect(false); + client.Shutdown(SocketShutdown.Both); + Helpers.WaitForSocketShutdown(client); // Reading from a closed connection should fail. byte[] buffer = new byte[expected.Length]; @@ -462,7 +469,8 @@ public async Task Read_FromClosedConnectionSynchronously_ThrowsHttpListenerExcep HttpListenerContext context = await _listener.GetContextAsync(); // Disconnect the Socket from the HttpListener. - client.Disconnect(false); + client.Shutdown(SocketShutdown.Both); + Helpers.WaitForSocketShutdown(client); // Reading from a closed connection should fail. byte[] buffer = new byte[expected.Length]; diff --git a/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs b/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs index 7b32980d6c44..49c28b831705 100644 --- a/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs +++ b/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs @@ -246,7 +246,6 @@ public async Task CanSeek_Get_ReturnsFalse() } [Fact] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // NotSupportedException thrown instead of InvalidOperationException public async Task CanRead_Get_ReturnsFalse() { using (HttpListenerResponse response = await _helper.GetResponse()) @@ -261,7 +260,6 @@ public async Task CanRead_Get_ReturnsFalse() } [Fact] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // Windows returns Task.CompletedTask in FlushAsync public async Task CanWrite_Get_ReturnsTrue() { using (HttpListenerResponse response = await _helper.GetResponse()) @@ -276,7 +274,6 @@ public async Task CanWrite_Get_ReturnsTrue() } [Fact] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] public async Task Write_NullBuffer_ThrowsArgumentNullException() { using (HttpListenerResponse response = await _helper.GetResponse()) @@ -290,7 +287,6 @@ public async Task Write_NullBuffer_ThrowsArgumentNullException() [Theory] [InlineData(-1)] [InlineData(3)] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] public async Task Write_InvalidOffset_ThrowsArgumentOutOfRangeException(int offset) { using (HttpListenerResponse response = await _helper.GetResponse()) @@ -305,7 +301,6 @@ public async Task Write_InvalidOffset_ThrowsArgumentOutOfRangeException(int offs [InlineData(0, 3)] [InlineData(1, 2)] [InlineData(2, 1)] - [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] public async Task Write_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int offset, int size) { using (HttpListenerResponse response = await _helper.GetResponse()) @@ -403,7 +398,6 @@ public async Task Write_TooLittleSynchronouslyAndClose_ThrowsInvalidOperationExc [InlineData(true)] [InlineData(false)] [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // No exception thrown - [ActiveIssue(18188, platforms: TestPlatforms.Windows)] // Indeterminate failure - socket not always fully disconnected. public async Task Write_HeadersToClosedConnectionAsynchronously_ThrowsHttpListenerException(bool ignoreWriteExceptions) { const string Text = "Some-String"; @@ -419,9 +413,8 @@ public async Task Write_HeadersToClosedConnectionAsynchronously_ThrowsHttpListen HttpListenerContext context = await listener.GetContextAsync(); // Disconnect the Socket from the HttpListener. - client.Close(); - GC.Collect(); - GC.WaitForPendingFinalizers(); + client.Shutdown(SocketShutdown.Both); + Helpers.WaitForSocketShutdown(client); // Writing to a disconnected client should fail. await Assert.ThrowsAsync(() => context.Response.OutputStream.WriteAsync(buffer, 0, buffer.Length)); @@ -435,7 +428,6 @@ public async Task Write_HeadersToClosedConnectionAsynchronously_ThrowsHttpListen [InlineData(true)] [InlineData(false)] [ActiveIssue(18128, platforms: TestPlatforms.AnyUnix)] // No exception thrown - [ActiveIssue(18188, platforms: TestPlatforms.Windows)] // Indeterminate failure - socket not always fully disconnected. public async Task Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListenerException(bool ignoreWriteExceptions) { const string Text = "Some-String"; @@ -451,10 +443,9 @@ public async Task Write_HeadersToClosedConnectionSynchronously_ThrowsHttpListene HttpListenerContext context = await listener.GetContextAsync(); // Disconnect the Socket from the HttpListener. - client.Close(); - GC.Collect(); - GC.WaitForPendingFinalizers(); - + client.Shutdown(SocketShutdown.Both); + Helpers.WaitForSocketShutdown(client); + // Writing to, a closed connection should fail. Assert.Throws(() => context.Response.OutputStream.Write(buffer, 0, buffer.Length)); @@ -547,9 +538,12 @@ public async Task Write_ContentToClosedConnectionSynchronously_ThrowsHttpListene } } - [Fact] - public async Task EndWrite_NullAsyncResult_ThrowsArgumentNullException() + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task EndWrite_NullAsyncResult_ThrowsArgumentNullException(bool ignoreWriteExceptions) { + _listener.IgnoreWriteExceptions = ignoreWriteExceptions; using (HttpListenerResponse response = await _helper.GetResponse()) using (Stream outputStream = response.OutputStream) { From 6c48e0c13ffc5eea49bb70e40920f80b5e1d3d0c Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Sun, 16 Apr 2017 19:30:31 -0700 Subject: [PATCH 098/336] Fix GetAllCompilerInfo_ReturnsMinimumOfCSharpAndVB test (#18460) --- src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs b/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs index 7f81170d6c3b..5cb3925a62d1 100644 --- a/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs +++ b/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs @@ -16,7 +16,7 @@ public class CodeDomProviderTests [Fact] public void GetAllCompilerInfo_ReturnsMinimumOfCSharpAndVB() { - Type[] compilerInfos = CodeDomProvider.GetAllCompilerInfo().Select(provider => provider.CodeDomProviderType).ToArray(); + Type[] compilerInfos = CodeDomProvider.GetAllCompilerInfo().Where(provider => provider.IsCodeDomProviderTypeValid).Select(provider => provider.CodeDomProviderType).ToArray(); Assert.True(compilerInfos.Length >= 2); Assert.Contains(typeof(CSharpCodeProvider), compilerInfos); Assert.Contains(typeof(VBCodeProvider), compilerInfos); From b03ee60a651c862ea9f6bff63534839f26c83f6a Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 09:40:42 +0700 Subject: [PATCH 099/336] Fix different exception thrown for setting invalid PriorityProcessClass --- .../src/Resources/Strings.resx | 3 --- .../src/System/Diagnostics/Process.cs | 2 +- src/System.Diagnostics.Process/tests/ProcessTests.cs | 10 ++++++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/System.Diagnostics.Process/src/Resources/Strings.resx b/src/System.Diagnostics.Process/src/Resources/Strings.resx index 0eb6608e1193..6f94e34f49fe 100644 --- a/src/System.Diagnostics.Process/src/Resources/Strings.resx +++ b/src/System.Diagnostics.Process/src/Resources/Strings.resx @@ -160,9 +160,6 @@ Invalid value '{1}' for parameter '{0}'. - - The value of argument '{0}' ({1}) is invalid for Enum type '{2}'. - Cannot load Category Help data because an invalid index '{0}' was read from the registry. diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs index b96629e644a4..b1bf51bf01f1 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.cs @@ -479,7 +479,7 @@ public ProcessPriorityClass PriorityClass { if (!Enum.IsDefined(typeof(ProcessPriorityClass), value)) { - throw new ArgumentException(SR.Format(SR.InvalidEnumArgument, nameof(value), (int)value, typeof(ProcessPriorityClass))); + throw new InvalidEnumArgumentException(nameof(value), (int)value, typeof(ProcessPriorityClass)); } PriorityClassCore = value; diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index dbd84aa54a63..3c04d9ee6a9b 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -665,11 +665,13 @@ public void TestPriorityClassWindows() } } - [Fact] - public void TestInvalidPriorityClass() + [Theory] + [InlineData((ProcessPriorityClass)0)] + [InlineData(ProcessPriorityClass.Normal | ProcessPriorityClass.Idle)] + public void TestInvalidPriorityClass(ProcessPriorityClass priorityClass) { - Process p = new Process(); - Assert.Throws(() => { p.PriorityClass = ProcessPriorityClass.Normal | ProcessPriorityClass.Idle; }); + var process = new Process(); + Assert.Throws(() => process.PriorityClass = priorityClass); } [Fact] From 4832d5affaabb8e1ac0f92ef0c6f644681f58578 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 10:55:22 +0700 Subject: [PATCH 100/336] Fix Process tests relying on specific host name --- .../tests/System/Diagnostics/RemoteExecutorTestBase.cs | 8 +++++--- .../tests/ProcessModuleTests.cs | 4 ++-- src/System.Diagnostics.Process/tests/ProcessTests.cs | 10 +++------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs b/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs index 923cb262ffa5..bf048fd213d2 100644 --- a/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs +++ b/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs @@ -14,9 +14,11 @@ namespace System.Diagnostics public abstract class RemoteExecutorTestBase : FileCleanupTestBase { /// The name of the test console app. - protected const string TestConsoleApp = "RemoteExecutorConsoleApp.exe"; - /// The name of the CoreCLR host used to host the test console app. - protected static readonly string HostRunnerName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "dotnet.exe" : "dotnet"; + protected static readonly string TestConsoleApp = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "RemoteExecutorConsoleApp.exe" : "RemoteExecutorConsoleApp"; + /// The name, without an extension, of the host used to host the test console app. + private static readonly string HostRunnerExecutableName = IsFullFramework ? "xunit.console" : "dotnet"; + /// The name, with an extension, of the host host used to host the test console app. + protected static readonly string HostRunnerName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? HostRunnerExecutableName + ".exe" : HostRunnerExecutableName; /// The absolute path to the host runner executable. protected static string HostRunner => Process.GetCurrentProcess().MainModule.FileName; diff --git a/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs b/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs index aeac8fb1fccb..dbb45872ef4c 100644 --- a/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessModuleTests.cs @@ -29,10 +29,10 @@ public void TestModuleProperties() } [Fact] - public void TestModulesContainsDotnet() + public void Modules_Get_ContainsHostFileName() { ProcessModuleCollection modules = Process.GetCurrentProcess().Modules; - Assert.Contains(modules.Cast(), m => m.FileName.Contains("dotnet")); + Assert.Contains(modules.Cast(), m => m.FileName.Contains(HostRunnerName)); } [Fact] diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index 3c04d9ee6a9b..9dc25dc4bd15 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -262,15 +262,11 @@ public void MachineName_GetNotStarted_ThrowsInvalidOperationException() [Fact] public void TestMainModuleOnNonOSX() { - string fileName = "dotnet"; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - fileName = "dotnet.exe"; - Process p = Process.GetCurrentProcess(); Assert.True(p.Modules.Count > 0); - Assert.Equal(fileName, p.MainModule.ModuleName); - Assert.EndsWith(fileName, p.MainModule.FileName); - Assert.Equal(string.Format("System.Diagnostics.ProcessModule ({0})", fileName), p.MainModule.ToString()); + Assert.Equal(HostRunnerName, p.MainModule.ModuleName); + Assert.EndsWith(HostRunnerName, p.MainModule.FileName); + Assert.Equal(string.Format("System.Diagnostics.ProcessModule ({0})", HostRunnerName), p.MainModule.ToString()); } [Fact] From ee68863b292b7a3c5749719a5236f6062e39e5a3 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 10:55:41 +0700 Subject: [PATCH 101/336] Fix ProcessStartInfo tests for Dictionary returned from Environment --- .../tests/ProcessStartInfoTests.cs | 70 ++++++++++++++++--- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs index 6746a5eaa8c8..bcb9850f270e 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs @@ -43,8 +43,19 @@ public void TestEnvironmentProperty() environment.Remove("NewKey"); Assert.Equal(CountItems + 1, environment.Count); - //Exception not thrown with invalid key - Assert.Throws(() => { environment.Add("NewKey2", "NewValue2"); }); + // Exception thrown with invalid key + // The full .NET framework represents Environment with StringDictionary. On .NET Core we use + // use Dictionary, because we need to have case sensitive behaviour on Unix. + // The full .NET Framework uses CaseSensitiveStringDictionary, but we can't have an + // equivilent as we don't have access to the internal state of StringDictionary in .NET Core. + if (PlatformDetection.IsFullFramework) + { + environment.Add("NewKey2", "NewValue2"); + } + else + { + Assert.Throws(null, () => environment.Add("NewKey2", "NewValue2")); + } //Clear environment.Clear(); @@ -128,8 +139,18 @@ public void TestEnvironmentProperty() //Exception not thrown with invalid key Assert.Throws(() => environment.Add(null, "NewValue2")); - //Invalid Key to add - Assert.Throws(() => environment.Add("NewKey2", "NewValue2")); + // Invalid Key to add + // .NET Core uses a Dictionary, but the full .NET Framework uses + // StringDictionary. These collections have different behaviour for Add where + // the key already exists. + if (PlatformDetection.IsFullFramework) + { + environment.Add("NewKey2", "NewValue2"); + } + else + { + Assert.Throws(null, () => environment.Add("NewKey2", "NewValue2")); + } //Remove Item environment.Remove("NewKey98"); @@ -167,7 +188,10 @@ public void TestEnvironmentProperty() KeyValuePair[] kvpa = new KeyValuePair[10]; environment.CopyTo(kvpa, 0); Assert.Equal("NewKey", kvpa[0].Key); - Assert.Equal("NewKey3", kvpa[2].Key); + + // .NET Core uses a Dictionary, but the full .NET Framework uses + // StringDictionary. These collections order the output of CopyTo differently. + Assert.Equal(PlatformDetection.IsFullFramework ? "NewKey2" : "NewKey3", kvpa[2].Key); environment.CopyTo(kvpa, 6); Assert.Equal("NewKey", kvpa[6].Key); @@ -463,7 +487,17 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() Assert.Throws(() => { psi.EnvironmentVariables.Add("NewKey2", "NewValue2"); }); psi.EnvironmentVariables.Add("NewKey3", "NewValue3"); - Assert.Throws(() => { psi.Environment.Add("NewKey3", "NewValue3"); }); + // .NET Core uses a Dictionary, but the full .NET Framework uses + // StringDictionary. These collections have different behaviour for Add where + // the key already exists. + if (PlatformDetection.IsFullFramework) + { + psi.Environment.Add("NewKey3", "NewValue3"); + } + else + { + Assert.Throws(() => psi.Environment.Add("NewKey3", "NewValue3")); + } psi.EnvironmentVariables.Clear(); Assert.Equal(0, psi.Environment.Count); @@ -484,10 +518,21 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() string envVarResultKey = ""; string envVarResultValue = ""; - foreach(KeyValuePair entry in psi.EnvironmentVariables) + + // .NET Core uses a Dictionary, but the full .NET Framework uses + // StringDictionary. These collections return different types from GetEnumerator. + foreach (var entry in psi.EnvironmentVariables) { - envVarResultKey += entry.Key; - envVarResultValue += entry.Value; + if (PlatformDetection.IsFullFramework) + { + envVarResultKey += ((DictionaryEntry)entry).Key; + envVarResultValue += ((DictionaryEntry)entry).Value; + } + else + { + envVarResultKey += ((KeyValuePair)entry).Key; + envVarResultValue += ((KeyValuePair)entry).Value; + } } Assert.Equal(environmentResultKey, envVarResultKey); @@ -496,8 +541,11 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() psi.EnvironmentVariables.Add("NewKey3", "NewValue3"); KeyValuePair[] kvpa = new KeyValuePair[5]; psi.Environment.CopyTo(kvpa, 0); - Assert.Equal("NewKey3", kvpa[2].Key); - Assert.Equal("NewValue3", kvpa[2].Value); + + // .NET Core uses a Dictionary, but the full .NET Framework uses + // StringDictionary. These collections order the output of CopyTo differently. + Assert.Equal(PlatformDetection.IsFullFramework ? "NewKey2" : "NewKey3", kvpa[2].Key); + Assert.Equal(PlatformDetection.IsFullFramework ? "NewValue2" : "NewValue3", kvpa[2].Value); psi.EnvironmentVariables.Remove("NewKey3"); Assert.False(psi.Environment.Contains(new KeyValuePair("NewKey3", "NewValue3"))); From d490d27820b7973a108f38dd94ecac5773e45331 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 10:57:04 +0700 Subject: [PATCH 102/336] Fix misc Process tests for netfx --- .../tests/ProcessTests.cs | 101 ++++++++++++------ 1 file changed, 68 insertions(+), 33 deletions(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index 9dc25dc4bd15..d388be4b29b4 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -680,7 +680,9 @@ public void PriorityClass_GetNotStarted_ThrowsInvalidOperationException() [Fact] public void TestProcessName() { - Assert.Equal(Path.GetFileNameWithoutExtension(_process.ProcessName), Path.GetFileNameWithoutExtension(HostRunner), StringComparer.OrdinalIgnoreCase); + // Processes are not hosted by dotnet in the full .NET Framework. + string expected = PlatformDetection.IsFullFramework ? TestConsoleApp : HostRunner; + Assert.Equal(Path.GetFileNameWithoutExtension(_process.ProcessName), Path.GetFileNameWithoutExtension(expected), StringComparer.OrdinalIgnoreCase); } [Fact] @@ -913,44 +915,75 @@ public void TestProcessOnRemoteMachineUnix() } [Fact] - public void TestStartInfo() + public void StartInfo_GetFileName_ReturnsExpected() { - { - Process process = CreateProcessLong(); - process.Start(); + Process process = CreateProcessLong(); + process.Start(); - Assert.Equal(HostRunner, process.StartInfo.FileName); + // Processes are not hosted by dotnet in the full .NET Framework. + string expectedFileName = PlatformDetection.IsFullFramework ? TestConsoleApp : HostRunner; + Assert.Equal(expectedFileName, process.StartInfo.FileName); - process.Kill(); - Assert.True(process.WaitForExit(WaitInMS)); - } + process.Kill(); + Assert.True(process.WaitForExit(WaitInMS)); + } + + [Fact] + public void StartInfo_SetOnRunningProcess_ThrowsInvalidOperationException() + { + Process process = CreateProcessLong(); + process.Start(); + // .NET Core fixes a bug where Process.StartInfo for a running process would + // return information about the current process, not the running process. + // See https://github.com/dotnet/corefx/issues/1100. + if (PlatformDetection.IsFullFramework) { - Process process = CreateProcessLong(); - process.Start(); - - Assert.Throws(() => (process.StartInfo = new ProcessStartInfo())); - - process.Kill(); - Assert.True(process.WaitForExit(WaitInMS)); + var startInfo = new ProcessStartInfo(); + process.StartInfo = startInfo; + Assert.Equal(startInfo, process.StartInfo); } - + else { - Process process = new Process(); - process.StartInfo = new ProcessStartInfo(TestConsoleApp); - Assert.Equal(TestConsoleApp, process.StartInfo.FileName); + Assert.Throws(() => process.StartInfo = new ProcessStartInfo()); } + process.Kill(); + Assert.True(process.WaitForExit(WaitInMS)); + } + + [Fact] + public void StartInfo_SetGet_ReturnsExpected() + { + var process = new Process() { StartInfo = new ProcessStartInfo(TestConsoleApp) }; + Assert.Equal(TestConsoleApp, process.StartInfo.FileName); + } + + [Fact] + public void StartInfo_SetNull_ThrowsArgumentNullException() + { + var process = new Process(); + Assert.Throws("value", () => process.StartInfo = null); + } + + [Fact] + public void StartInfo_GetOnRunningProcess_ThrowsInvalidOperationException() + { + Process process = Process.GetCurrentProcess(); + + // .NET Core fixes a bug where Process.StartInfo for a running process would + // return information about the current process, not the running process. + // See https://github.com/dotnet/corefx/issues/1100. + if (PlatformDetection.IsFullFramework) { - Process process = new Process(); - Assert.Throws(() => process.StartInfo = null); + Assert.NotNull(process.StartInfo); } - + else { - Process process = Process.GetCurrentProcess(); - Assert.Throws(() => process.StartInfo); + Assert.Throws(() => process.StartInfo); } } + [Theory] [InlineData(@"""abc"" d e", @"abc,d,e")] [InlineData(@"""abc"" d e", @"abc,d,e")] @@ -1451,15 +1484,17 @@ public void Process_StartWithArgumentsTest() [PlatformSpecific(TestPlatforms.Windows)] // Starting process with authentication not supported on Unix public void Process_StartWithDuplicatePassword() { - ProcessStartInfo psi = new ProcessStartInfo(); - psi.FileName = "exe"; - psi.UserName = "dummyUser"; - psi.PasswordInClearText = "Value"; - psi.Password = AsSecureString("Value"); + var startInfo = new ProcessStartInfo() + { + FileName = "exe", + UserName = "dummyUser", + PasswordInClearText = "Value", + Password = AsSecureString("Value"), + UseShellExecute = false + }; - Process p = new Process(); - p.StartInfo = psi; - Assert.Throws(() => p.Start()); + var process = new Process() { StartInfo = startInfo }; + Assert.Throws(null, () => process.Start()); } private string GetCurrentProcessName() From 5dc135fb1ba4e2998e3c7d585ac87156fc99540e Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Sun, 16 Apr 2017 21:47:34 -0700 Subject: [PATCH 103/336] Update ProjectNTfs, ProjectNTfsTestILC to beta-25217-00, beta-25217-00, respectively (#18466) --- dependencies.props | 10 +++++----- external/test-runtime/optional.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.props b/dependencies.props index 5862e4c17c74..01ca1e1b7665 100644 --- a/dependencies.props +++ b/dependencies.props @@ -12,8 +12,8 @@ 344d7f54518693b73c16e19a6d6ebd29b928ecad af313dccb7aff26364a85300da16d39a783c86cd 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - cf7c0960a7478e132dd1ccbed523635038a1546a - cf7c0960a7478e132dd1ccbed523635038a1546a + 771c73b52721b6d24e48e0093c169b48ec4a0ab5 + 771c73b52721b6d24e48e0093c169b48ec4a0ab5 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 7f4aa832af1fb686065b4bd1a5bc3df35bf81e15 @@ -23,9 +23,9 @@ preview1-25214-03 preview1-25215-03 beta-25016-01 - beta-25214-00 - beta-25214-00 - 1.0.0-beta-25214-00 + beta-25217-00 + beta-25217-00 + 1.0.0-beta-25217-00 2.0.0-preview1-25214-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index 7ab0c5c63935..79ce39d15b0f 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25214-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25217-00" } } } From 6fd2751688f68c93e09a0f56ba08b9c32c18bf58 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 12:04:25 +0700 Subject: [PATCH 104/336] Address PR feedback - Use OrderByDescending instead of OrderBy, as there are nulls in the array that we want to ignore --- .../tests/ProcessStartInfoTests.cs | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs index bcb9850f270e..f970763a46b9 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs @@ -32,22 +32,21 @@ public void TestEnvironmentProperty() IDictionary environment = psi.Environment; - Assert.NotEqual(environment.Count, 0); + Assert.NotEqual(0, environment.Count); - int CountItems = environment.Count; + int countItems = environment.Count; environment.Add("NewKey", "NewValue"); environment.Add("NewKey2", "NewValue2"); - Assert.Equal(CountItems + 2, environment.Count); + Assert.Equal(countItems + 2, environment.Count); environment.Remove("NewKey"); - Assert.Equal(CountItems + 1, environment.Count); + Assert.Equal(countItems + 1, environment.Count); - // Exception thrown with invalid key // The full .NET framework represents Environment with StringDictionary. On .NET Core we use // use Dictionary, because we need to have case sensitive behaviour on Unix. // The full .NET Framework uses CaseSensitiveStringDictionary, but we can't have an - // equivilent as we don't have access to the internal state of StringDictionary in .NET Core. + // equivalent as we don't have access to the internal state of StringDictionary in .NET Core. if (PlatformDetection.IsFullFramework) { environment.Add("NewKey2", "NewValue2"); @@ -139,7 +138,6 @@ public void TestEnvironmentProperty() //Exception not thrown with invalid key Assert.Throws(() => environment.Add(null, "NewValue2")); - // Invalid Key to add // .NET Core uses a Dictionary, but the full .NET Framework uses // StringDictionary. These collections have different behaviour for Add where // the key already exists. @@ -187,11 +185,10 @@ public void TestEnvironmentProperty() //CopyTo KeyValuePair[] kvpa = new KeyValuePair[10]; environment.CopyTo(kvpa, 0); - Assert.Equal("NewKey", kvpa[0].Key); - // .NET Core uses a Dictionary, but the full .NET Framework uses - // StringDictionary. These collections order the output of CopyTo differently. - Assert.Equal(PlatformDetection.IsFullFramework ? "NewKey2" : "NewKey3", kvpa[2].Key); + KeyValuePair[] kvpaOrdered = kvpa.OrderByDescending(k => k.Value).ToArray(); + Assert.Equal("NewKey4", kvpaOrdered[0].Key); + Assert.Equal("NewKey2", kvpaOrdered[2].Key); environment.CopyTo(kvpa, 6); Assert.Equal("NewKey", kvpa[6].Key); @@ -504,10 +501,9 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() psi.EnvironmentVariables.Add("NewKey", "NewValue"); psi.EnvironmentVariables.Add("NewKey2", "NewValue2"); - string environmentResultKey = ""; string environmentResultValue = ""; - foreach(var entry in psi.Environment) + foreach (var entry in psi.Environment) { environmentResultKey += entry.Key; environmentResultValue += entry.Value; @@ -542,10 +538,9 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() KeyValuePair[] kvpa = new KeyValuePair[5]; psi.Environment.CopyTo(kvpa, 0); - // .NET Core uses a Dictionary, but the full .NET Framework uses - // StringDictionary. These collections order the output of CopyTo differently. - Assert.Equal(PlatformDetection.IsFullFramework ? "NewKey2" : "NewKey3", kvpa[2].Key); - Assert.Equal(PlatformDetection.IsFullFramework ? "NewValue2" : "NewValue3", kvpa[2].Value); + KeyValuePair[] kvpaOrdered = kvpa.OrderByDescending(k => k.Key).ToArray(); + Assert.Equal("NewKey", kvpaOrdered[2].Key); + Assert.Equal("NewValue", kvpaOrdered[2].Value); psi.EnvironmentVariables.Remove("NewKey3"); Assert.False(psi.Environment.Contains(new KeyValuePair("NewKey3", "NewValue3"))); From 0f36cab05faa931d886241b922a4a04dc3bf2c5d Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 17 Apr 2017 09:05:31 -0400 Subject: [PATCH 105/336] Disable more ConfigurationSaveTests ModifyListElement and ModifyListElement2 have been failing with the same errors. --- .../tests/Mono/ConfigurationSaveTest.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index 5952449ecdd6..f3efad3a832d 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -612,6 +612,7 @@ public void AddElement() }); } + [ActiveIssue(18431)] [Fact] public void ModifyListElement() { @@ -632,6 +633,7 @@ public void ModifyListElement() }); } + [ActiveIssue(18431)] [Fact] public void ModifyListElement2() { From 1ec32f118dc67ca02fd606f651d50575b6259ef2 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Mon, 17 Apr 2017 06:18:10 -0700 Subject: [PATCH 106/336] Update Standard to preview1-25217-01 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 01ca1e1b7665..a95b8418f19a 100644 --- a/dependencies.props +++ b/dependencies.props @@ -15,7 +15,7 @@ 771c73b52721b6d24e48e0093c169b48ec4a0ab5 771c73b52721b6d24e48e0093c169b48ec4a0ab5 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 7f4aa832af1fb686065b4bd1a5bc3df35bf81e15 + 737d95c99c0dc7e489334bf16621e76d639fd9a4 @@ -26,7 +26,7 @@ beta-25217-00 beta-25217-00 1.0.0-beta-25217-00 - 2.0.0-preview1-25214-01 + 2.0.0-preview1-25217-01 NETStandard.Library 4.4.0-beta-25007-02 From 49e936ef33c55d571d4f1ce086f84689efa3408e Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 21:10:20 +0700 Subject: [PATCH 107/336] Fix some remote machine process tests (#18457) * Fix some remote machine process tests * Address PR feedback --- .../tests/ProcessTests.cs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index dbd84aa54a63..b1ed787fd026 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -809,8 +809,8 @@ public static IEnumerable MachineName_TestData() public static IEnumerable MachineName_Remote_TestData() { - yield return new object[] { "machine" }; - yield return new object[] { "\\machine" }; + yield return new object[] { Guid.NewGuid().ToString("N") }; + yield return new object[] { "\\" + Guid.NewGuid().ToString("N") }; } [Theory] @@ -824,8 +824,7 @@ public void GetProcessesByName_ProcessNameMachineName_ReturnsExpected(string mac Assert.All(processes, process => Assert.Equal(machineName, process.MachineName)); } - [ActiveIssue(18324)] - [Theory] + [ConditionalTheory(nameof(ProcessPerformanceCounterEnabled))] [MemberData(nameof(MachineName_Remote_TestData))] [PlatformSpecific(TestPlatforms.Windows)] // Accessing processes on remote machines is only supported on Windows. public void GetProcessesByName_RemoteMachineNameWindows_ReturnsExpected(string machineName) @@ -870,7 +869,7 @@ public static IEnumerable GetTestProcess() yield return new object[] { currentProcess, Process.GetProcessesByName(currentProcess.ProcessName, "127.0.0.1").Where(p => p.Id == currentProcess.Id).Single() }; } - private static bool ProcessPeformanceCounterEnabled() + private static bool ProcessPerformanceCounterEnabled() { try { @@ -884,15 +883,13 @@ private static bool ProcessPeformanceCounterEnabled() } catch (Exception) { - // Ignore exceptions, and just assume the counter is enabled. + // Ignore exceptions, and just assume the counter is disabled. + return false; } - - return true; } - [ActiveIssue(18324)] [PlatformSpecific(TestPlatforms.Windows)] // Behavior differs on Windows and Unix - [ConditionalTheory(nameof(ProcessPeformanceCounterEnabled))] + [ConditionalTheory(nameof(ProcessPerformanceCounterEnabled))] [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "https://github.com/dotnet/corefx/issues/18212")] [MemberData(nameof(GetTestProcess))] public void TestProcessOnRemoteMachineWindows(Process currentProcess, Process remoteProcess) From 12e09ce6b2627206d665a5c703bace2f7f1ac8f5 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 17 Apr 2017 22:22:52 +0700 Subject: [PATCH 108/336] Try to fix unix tests and fix non-deterministic netfx test failures --- src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs b/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs index bf048fd213d2..b5321a6666f7 100644 --- a/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs +++ b/src/Common/tests/System/Diagnostics/RemoteExecutorTestBase.cs @@ -14,7 +14,7 @@ namespace System.Diagnostics public abstract class RemoteExecutorTestBase : FileCleanupTestBase { /// The name of the test console app. - protected static readonly string TestConsoleApp = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "RemoteExecutorConsoleApp.exe" : "RemoteExecutorConsoleApp"; + protected static readonly string TestConsoleApp = "RemoteExecutorConsoleApp.exe"; /// The name, without an extension, of the host used to host the test console app. private static readonly string HostRunnerExecutableName = IsFullFramework ? "xunit.console" : "dotnet"; /// The name, with an extension, of the host host used to host the test console app. From bfcb92c33049bbc3736730391f8a0df189f3874c Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Mon, 17 Apr 2017 09:24:34 -0700 Subject: [PATCH 109/336] Remove more noise from System.Reflection tests on UapAot (#18489) - Module custom attributes not supported by .Net Native toolchain. - Invoking type constructors not supported by .Net Native toolchain (cannot reliably implement on .Net Native as the toolchain usually optimizes away simple type constructors by executing them at compile time and turning them into raw init blocks.) - Cannot call MetadataToken unconditionally. - Comparing type metadata tokens of two different framework types is not a valid test. This is only reliable if they live in the same module/assembly and we make no promises as to where things live. --- src/System.Reflection/tests/ConstructorInfoTests.cs | 1 + src/System.Reflection/tests/MemberInfoTests.cs | 3 +-- src/System.Reflection/tests/ModuleTests.cs | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/System.Reflection/tests/ConstructorInfoTests.cs b/src/System.Reflection/tests/ConstructorInfoTests.cs index bb78b30179d1..57ca18c1e430 100644 --- a/src/System.Reflection/tests/ConstructorInfoTests.cs +++ b/src/System.Reflection/tests/ConstructorInfoTests.cs @@ -60,6 +60,7 @@ public void Invoke() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Invoking static constructors are not supported on UapAot.")] public void Invoke_StaticConstructor_NullObject_NullParameters() { ConstructorInfo[] constructors = GetConstructors(typeof(ClassWithStaticConstructor)); diff --git a/src/System.Reflection/tests/MemberInfoTests.cs b/src/System.Reflection/tests/MemberInfoTests.cs index 5ec419a80ac1..d90d138bbea6 100644 --- a/src/System.Reflection/tests/MemberInfoTests.cs +++ b/src/System.Reflection/tests/MemberInfoTests.cs @@ -21,12 +21,11 @@ public void MetadataToken() Assert.Equal(GetMembers(new Dictionary().GetType()), GetMembers(new Dictionary().GetType())); Assert.Equal(GetMembers(typeof(int)), GetMembers(typeof(int))); Assert.Equal(GetMembers(typeof(Dictionary<,>)), GetMembers(typeof(Dictionary<,>))); - Assert.NotEqual(GetMembers(new Dictionary().GetType()), GetMembers(new HashSet().GetType())); } private IEnumerable GetMembers(Type type) { - return type.GetTypeInfo().GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Select(m => m.MetadataToken); + return type.GetTypeInfo().GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Select(m => m.HasMetadataToken() ? m.MetadataToken : 0); } #pragma warning disable 0067, 0169 diff --git a/src/System.Reflection/tests/ModuleTests.cs b/src/System.Reflection/tests/ModuleTests.cs index f4139f04df2e..3067c7651566 100644 --- a/src/System.Reflection/tests/ModuleTests.cs +++ b/src/System.Reflection/tests/ModuleTests.cs @@ -44,7 +44,8 @@ public void FullyQualifiedName(TypeInfo typeInfo) [InlineData(typeof(Int32Attr), 77, "Int32AttrSimple")] [InlineData(typeof(Int64Attr), (long)77, "Int64AttrSimple")] [InlineData(typeof(StringAttr), "hello", "StringAttrSimple")] - [InlineData(typeof(EnumAttr), PublicEnum.Case1, "EnumAttrSimple")] + [InlineData(typeof(EnumAttr), PublicEnum.Case1, "EnumAttrSimple")] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Custom Attributes on Modules not supported on UapAot.")] public void CustomAttributes(Type attrType, CtorArg expectedCtorValue, NamedArg expectedNamedValue) { Module module = typeof(ModuleTest).GetTypeInfo().Module; From a84b2a07ce231da472192fc69062d3e109ddef9a Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 17 Apr 2017 09:44:49 -0700 Subject: [PATCH 110/336] Disabling signing for Corefx.Tools task library Since we no longer fully sign we cannot build and use this task library during the build because we get strong name validation errors. Given this assembly isn't shipping we don't need to sign it so to fix we are just disabling signing for it. --- src/Tools/CoreFx.Tools/CoreFx.Tools.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj b/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj index 1533222ead5d..6b5b614d675e 100644 --- a/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj +++ b/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj @@ -12,6 +12,7 @@ $(CoreFxToolsDir) $(CoreFxDesktopToolsDir) $(MSBuildThisFileDirectory)PackageReferences.msbuild + true From ca4e15107a38aa221de850959605b2e0a7a65c25 Mon Sep 17 00:00:00 2001 From: Joseph Musser Date: Mon, 17 Apr 2017 14:16:13 -0400 Subject: [PATCH 111/336] ConcurrentDictionary null comparer consistency with BCL (#18441) * ConcurrentDictionary now uses default comparer when given null for consistency --- .../Concurrent/ConcurrentDictionary.cs | 19 ++--- .../ConcurrentDictionaryTests.cs | 82 +++++++++++++++---- 2 files changed, 71 insertions(+), 30 deletions(-) diff --git a/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs b/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs index 14bc92394172..3f8a7b5d1825 100644 --- a/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs +++ b/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs @@ -125,7 +125,7 @@ private static bool IsValueWriteAtomic() /// class that is empty, has the default concurrency level, has the default initial capacity, and /// uses the default comparer for the key type. /// - public ConcurrentDictionary() : this(DefaultConcurrencyLevel, DefaultCapacity, true, EqualityComparer.Default) { } + public ConcurrentDictionary() : this(DefaultConcurrencyLevel, DefaultCapacity, true, null) { } /// /// Initializes a new instance of the /// is less than /// 0. - public ConcurrentDictionary(int concurrencyLevel, int capacity) : this(concurrencyLevel, capacity, false, EqualityComparer.Default) { } + public ConcurrentDictionary(int concurrencyLevel, int capacity) : this(concurrencyLevel, capacity, false, null) { } /// /// Initializes a new instance of the @@ -158,7 +158,7 @@ public ConcurrentDictionary(int concurrencyLevel, int capacity) : this(concurren /// (Nothing in Visual Basic). /// contains one or more /// duplicate keys. - public ConcurrentDictionary(IEnumerable> collection) : this(collection, EqualityComparer.Default) { } + public ConcurrentDictionary(IEnumerable> collection) : this(collection, null) { } /// /// Initializes a new instance of the @@ -167,8 +167,6 @@ public ConcurrentDictionary(IEnumerable> collection) /// /// The /// implementation to use when comparing keys. - /// is a null reference - /// (Nothing in Visual Basic). public ConcurrentDictionary(IEqualityComparer comparer) : this(DefaultConcurrencyLevel, DefaultCapacity, true, comparer) { } /// @@ -185,9 +183,7 @@ public ConcurrentDictionary(IEqualityComparer comparer) : this(DefaultConc /// The /// implementation to use when comparing keys. /// is a null reference - /// (Nothing in Visual Basic). -or- - /// is a null reference (Nothing in Visual Basic). - /// + /// (Nothing in Visual Basic). public ConcurrentDictionary(IEnumerable> collection, IEqualityComparer comparer) : this(comparer) { @@ -210,8 +206,6 @@ public ConcurrentDictionary(IEnumerable> collection, /// when comparing keys. /// /// is a null reference (Nothing in Visual Basic). - /// -or- - /// is a null reference (Nothing in Visual Basic). /// /// /// is less than 1. @@ -261,8 +255,6 @@ private void InitializeFromCollection(IEnumerable> co /// is less than 1. -or- /// is less than 0. /// - /// is a null reference - /// (Nothing in Visual Basic). public ConcurrentDictionary(int concurrencyLevel, int capacity, IEqualityComparer comparer) : this(concurrencyLevel, capacity, false, comparer) { @@ -278,7 +270,6 @@ internal ConcurrentDictionary(int concurrencyLevel, int capacity, bool growLockA { throw new ArgumentOutOfRangeException(nameof(capacity), SR.ConcurrentDictionary_CapacityMustNotBeNegative); } - if (comparer == null) throw new ArgumentNullException(nameof(comparer)); // The capacity should be at least as large as the concurrency level. Otherwise, we would have locks that don't guard // any buckets. @@ -297,7 +288,7 @@ internal ConcurrentDictionary(int concurrencyLevel, int capacity, bool growLockA Node[] buckets = new Node[capacity]; _tables = new Tables(buckets, locks, countPerLock); - _comparer = comparer; + _comparer = comparer ?? EqualityComparer.Default; _growLockArray = growLockArray; _budget = buckets.Length / locks.Length; } diff --git a/src/System.Collections.Concurrent/tests/ConcurrentDictionary/ConcurrentDictionaryTests.cs b/src/System.Collections.Concurrent/tests/ConcurrentDictionary/ConcurrentDictionaryTests.cs index 66654ad8d179..7e1f27deb301 100644 --- a/src/System.Collections.Concurrent/tests/ConcurrentDictionary/ConcurrentDictionaryTests.cs +++ b/src/System.Collections.Concurrent/tests/ConcurrentDictionary/ConcurrentDictionaryTests.cs @@ -546,24 +546,82 @@ public static void TestDebuggerAttributes() } [Fact] - public static void TestConstructor_Negative() + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Framework hasn't received the fix for https://github.com/dotnet/corefx/issues/18432 yet.")] + public static void TestNullComparer() { - Assert.Throws( - () => new ConcurrentDictionary((ICollection>)null)); - // "TestConstructor: FAILED. Constructor didn't throw ANE when null collection is passed"); + AssertDefaultComparerBehavior(new ConcurrentDictionary((IEqualityComparer)null)); + + AssertDefaultComparerBehavior(new ConcurrentDictionary(new[] { new KeyValuePair(new EqualityApiSpy(), 1) }, null)); + + AssertDefaultComparerBehavior(new ConcurrentDictionary(1, new[] { new KeyValuePair(new EqualityApiSpy(), 1) }, null)); + + AssertDefaultComparerBehavior(new ConcurrentDictionary(1, 1, null)); + + void AssertDefaultComparerBehavior(ConcurrentDictionary dictionary) + { + var spyKey = new EqualityApiSpy(); + + Assert.True(dictionary.TryAdd(spyKey, 1)); + Assert.False(dictionary.TryAdd(spyKey, 1)); + + Assert.False(spyKey.ObjectApiUsed); + Assert.True(spyKey.IEquatableApiUsed); + } + } + + private sealed class EqualityApiSpy : IEquatable + { + public bool ObjectApiUsed { get; private set; } + public bool IEquatableApiUsed { get; private set; } + + public override bool Equals(object obj) + { + ObjectApiUsed = true; + return ReferenceEquals(this, obj); + } + + public override int GetHashCode() => base.GetHashCode(); + + public bool Equals(EqualityApiSpy other) + { + IEquatableApiUsed = true; + return ReferenceEquals(this, other); + } + } + + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, ".NET Framework hasn't received the fix for https://github.com/dotnet/corefx/issues/18432 yet.")] + public static void TestNullComparer_netfx() + { Assert.Throws( () => new ConcurrentDictionary((IEqualityComparer)null)); // "TestConstructor: FAILED. Constructor didn't throw ANE when null IEqualityComparer is passed"); - Assert.Throws( - () => new ConcurrentDictionary((ICollection>)null, EqualityComparer.Default)); - // "TestConstructor: FAILED. Constructor didn't throw ANE when null collection and non null IEqualityComparer passed"); - Assert.Throws( () => new ConcurrentDictionary(new[] { new KeyValuePair(1, 1) }, null)); // "TestConstructor: FAILED. Constructor didn't throw ANE when non null collection and null IEqualityComparer passed"); + Assert.Throws( + () => new ConcurrentDictionary(1, new[] { new KeyValuePair(1, 1) }, null)); + // "TestConstructor: FAILED. Constructor didn't throw ANE when null comparer is passed"); + + Assert.Throws( + () => new ConcurrentDictionary(1, 1, null)); + // "TestConstructor: FAILED. Constructor didn't throw ANE when null comparer is passed"); + } + + [Fact] + public static void TestConstructor_Negative() + { + Assert.Throws( + () => new ConcurrentDictionary((ICollection>)null)); + // "TestConstructor: FAILED. Constructor didn't throw ANE when null collection is passed"); + + Assert.Throws( + () => new ConcurrentDictionary((ICollection>)null, EqualityComparer.Default)); + // "TestConstructor: FAILED. Constructor didn't throw ANE when null collection and non null IEqualityComparer passed"); + Assert.Throws( () => new ConcurrentDictionary(new[] { new KeyValuePair(null, 1) })); // "TestConstructor: FAILED. Constructor didn't throw ANE when collection has null key passed"); @@ -575,14 +633,6 @@ public static void TestConstructor_Negative() () => new ConcurrentDictionary(1, null, EqualityComparer.Default)); // "TestConstructor: FAILED. Constructor didn't throw ANE when null collection is passed"); - Assert.Throws( - () => new ConcurrentDictionary(1, new[] { new KeyValuePair(1, 1) }, null)); - // "TestConstructor: FAILED. Constructor didn't throw ANE when null comparer is passed"); - - Assert.Throws( - () => new ConcurrentDictionary(1, 1, null)); - // "TestConstructor: FAILED. Constructor didn't throw ANE when null comparer is passed"); - Assert.Throws( () => new ConcurrentDictionary(0, 10)); // "TestConstructor: FAILED. Constructor didn't throw AORE when <1 concurrencyLevel passed"); From 29cfa210a18b18600f02fdc2dd7ff10427354f13 Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Mon, 17 Apr 2017 14:45:04 -0700 Subject: [PATCH 112/336] Disable MonoTests.System.Configuration.ConfigurationSaveTest.NotModifiedAfterSave (#18508) * Add ActiveIssue to MonoTests.System.Configuration.ConfigurationSaveTest.NotModifiedAfterSave * Disable other test --- .../tests/Mono/ConfigurationSaveTest.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index f3efad3a832d..14b623c60002 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -504,6 +504,7 @@ public void AddListElement() } [Fact] + [ActiveIssue(18431)] public void NotModifiedAfterSave() { Run("NotModifiedAfterSave", (config, label) => @@ -658,6 +659,7 @@ public void ModifyListElement2() } [Fact] + [ActiveIssue(18431)] public void TestElementWithCollection() { Run("TestElementWithCollection", (config, label) => From 44734bfc0530c85bab36be7b2aa68fb456713d88 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Mon, 17 Apr 2017 14:56:11 -0700 Subject: [PATCH 113/336] Update CoreFx to preview1-25217-04 (#18494) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index a95b8418f19a..17eab851bb0c 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,7 +9,7 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 344d7f54518693b73c16e19a6d6ebd29b928ecad + 9912be5588df727a968c803c3bba64d109a1c86a af313dccb7aff26364a85300da16d39a783c86cd 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 771c73b52721b6d24e48e0093c169b48ec4a0ab5 @@ -20,7 +20,7 @@ - preview1-25214-03 + preview1-25217-04 preview1-25215-03 beta-25016-01 beta-25217-00 From a7822d26a2208f57f21d700ccf0f934c1874fa80 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Mon, 17 Apr 2017 15:14:05 -0700 Subject: [PATCH 114/336] Remove some bogus tests from System.Reflection.Tests (#18513) - I choose not to be bug-for-bug compatible with invalid unicode strings passed to AssemblyName::ctor(), especially since CoreCLR's response to that isn't very helpful. - ModuleTest.FullyQualifiedName Test isn't correct even on non-Uat-Aot platforms. There's no required relationship between the assembly name and its module names. On the full framework, Module.Name and Module.FullyQualifiedName return the filename and fully qualified filename of the module... which can be anything I rename the file to. --- src/System.Reflection/tests/AssemblyNameTests.cs | 4 ---- src/System.Reflection/tests/ModuleTests.cs | 11 ----------- 2 files changed, 15 deletions(-) diff --git a/src/System.Reflection/tests/AssemblyNameTests.cs b/src/System.Reflection/tests/AssemblyNameTests.cs index 22044e905d28..b8addf31504f 100644 --- a/src/System.Reflection/tests/AssemblyNameTests.cs +++ b/src/System.Reflection/tests/AssemblyNameTests.cs @@ -31,10 +31,6 @@ public static IEnumerable Names_TestData() yield return new object[] { "name with spaces", "name with spaces" }; yield return new object[] { "\uD800\uDC00", "\uD800\uDC00" }; yield return new object[] { "привет", "привет" }; - - // Invalid Unicode - yield return new object[] { "\uD800", "\uFFFD" }; - yield return new object[] { "\uDC00", "\uFFFD" }; } [Fact] diff --git a/src/System.Reflection/tests/ModuleTests.cs b/src/System.Reflection/tests/ModuleTests.cs index 3067c7651566..fe132711bfda 100644 --- a/src/System.Reflection/tests/ModuleTests.cs +++ b/src/System.Reflection/tests/ModuleTests.cs @@ -28,17 +28,6 @@ public void Assembly(TypeInfo typeInfo) Assert.Equal(typeInfo.Assembly, module.Assembly); } - [Theory] - [InlineData(typeof(int))] - [InlineData(typeof(List<>))] - [InlineData(typeof(ModuleTest))] - public void FullyQualifiedName(TypeInfo typeInfo) - { - Module module = typeInfo.Module; - Assert.Contains(typeInfo.Assembly.GetName().Name, module.FullyQualifiedName, StringComparison.CurrentCultureIgnoreCase); - Assert.Contains(typeInfo.Assembly.GetName().Name, module.Name, StringComparison.CurrentCultureIgnoreCase); - } - [Theory] [InlineData(typeof(Attr), 77, "AttrSimple")] [InlineData(typeof(Int32Attr), 77, "Int32AttrSimple")] From db181f448f3c6bc252ae267025adf7f77f36869c Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Mon, 17 Apr 2017 15:18:32 -0700 Subject: [PATCH 115/336] Add missing members to SecurityContext (#18510) * Add missing members * Baseline --- .../ref/System.Security.Permissions.cs | 2 ++ .../src/System/Security/CodeAccessPermission.cs | 2 +- .../src/System/Security/PermissionSet.cs | 2 +- .../src/System/Security/SecurityContext.cs | 16 +++++++++------- .../ApiCompatBaseline.netcoreapp.netfx461.txt | 4 +--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/System.Security.Permissions/ref/System.Security.Permissions.cs b/src/System.Security.Permissions/ref/System.Security.Permissions.cs index 23bed3cc76ba..0cd00a9482ee 100644 --- a/src/System.Security.Permissions/ref/System.Security.Permissions.cs +++ b/src/System.Security.Permissions/ref/System.Security.Permissions.cs @@ -209,6 +209,8 @@ public void Dispose() { } public static bool IsWindowsIdentityFlowSuppressed() { throw null; } public static void RestoreFlow() { } public static void Run(System.Security.SecurityContext securityContext, System.Threading.ContextCallback callback, object state) { } + public static System.Threading.AsyncFlowControl SuppressFlow() { throw null; } + public static System.Threading.AsyncFlowControl SuppressFlowWindowsIdentity() { throw null; } } public enum SecurityContextSource { diff --git a/src/System.Security.Permissions/src/System/Security/CodeAccessPermission.cs b/src/System.Security.Permissions/src/System/Security/CodeAccessPermission.cs index 314df4f27038..83fab561362e 100644 --- a/src/System.Security.Permissions/src/System/Security/CodeAccessPermission.cs +++ b/src/System.Security.Permissions/src/System/Security/CodeAccessPermission.cs @@ -12,7 +12,7 @@ public void Assert() { } public abstract IPermission Copy(); public void Demand() { } [Obsolete] - public void Deny() { throw new NotSupportedException(); } + public void Deny() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } public override bool Equals(object obj) => base.Equals(obj); public abstract void FromXml(SecurityElement elem); public override int GetHashCode() => base.GetHashCode(); diff --git a/src/System.Security.Permissions/src/System/Security/PermissionSet.cs b/src/System.Security.Permissions/src/System/Security/PermissionSet.cs index 7e0428cd6ef6..fbf7d12ccf01 100644 --- a/src/System.Security.Permissions/src/System/Security/PermissionSet.cs +++ b/src/System.Security.Permissions/src/System/Security/PermissionSet.cs @@ -27,7 +27,7 @@ public void Assert() { } public virtual void CopyTo(Array array, int index) { } public void Demand() { } [Obsolete] - public void Deny() { throw new NotSupportedException(); } + public void Deny() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } public override bool Equals(object o) => base.Equals(o); public virtual void FromXml(SecurityElement et) { } public IEnumerator GetEnumerator() { return GetEnumeratorImpl(); } diff --git a/src/System.Security.Permissions/src/System/Security/SecurityContext.cs b/src/System.Security.Permissions/src/System/Security/SecurityContext.cs index ba279e9051f3..843368d8cdcc 100644 --- a/src/System.Security.Permissions/src/System/Security/SecurityContext.cs +++ b/src/System.Security.Permissions/src/System/Security/SecurityContext.cs @@ -9,12 +9,14 @@ namespace System.Security public sealed partial class SecurityContext : System.IDisposable { internal SecurityContext() { } - public static SecurityContext Capture() { throw new NotSupportedException(); } - public SecurityContext CreateCopy() { throw new NotSupportedException(); } - public void Dispose() { throw new NotSupportedException(); } - public static bool IsFlowSuppressed() { throw new NotSupportedException(); } - public static bool IsWindowsIdentityFlowSuppressed() { throw new NotSupportedException(); } - public static void RestoreFlow() { throw new NotSupportedException(); } - public static void Run(SecurityContext securityContext, ContextCallback callback, object state) { throw new NotSupportedException(); } + public static SecurityContext Capture() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public SecurityContext CreateCopy() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public void Dispose() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static bool IsFlowSuppressed() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static bool IsWindowsIdentityFlowSuppressed() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static void RestoreFlow() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static void Run(SecurityContext securityContext, ContextCallback callback, object state) { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static AsyncFlowControl SuppressFlow() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } + public static AsyncFlowControl SuppressFlowWindowsIdentity() { throw new PlatformNotSupportedException(SR.PlatformNotSupported_CAS); } } } diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index 876979f8391b..f39804c9b9db 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -6,8 +6,6 @@ ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.Applic ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: -MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlow()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityContext.SuppressFlowWindowsIdentity()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. @@ -97,4 +95,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 87 +Total Issues: 85 From fa8fdd2b897c5dc001e839d084419718e313a93a Mon Sep 17 00:00:00 2001 From: Eric Mellino Date: Mon, 17 Apr 2017 15:37:12 -0700 Subject: [PATCH 116/336] Don't run perf tests in parallel in outerloop runs. (#18503) --- Tools-Override/tests.targets | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tools-Override/tests.targets b/Tools-Override/tests.targets index d61bf1177b5c..e49116280719 100644 --- a/Tools-Override/tests.targets +++ b/Tools-Override/tests.targets @@ -52,6 +52,8 @@ $(XunitOptions) -xml $(XunitResultsFileName) $(XunitOptions) -notrait Benchmark=true + + $(XunitOptions) -parallel none $(XunitOptions) -redirectoutput $(XunitOptions) -notrait category=non$(_bc_TargetGroup)tests From afa27181fcb0de91982b69da95624736c1a271b3 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 23:57:22 +0100 Subject: [PATCH 117/336] Move lookups of delegate Invoke method into single helper. --- .../src/System/Dynamic/Utils/DelegateHelpers.cs | 2 +- .../src/System/Dynamic/Utils/TypeUtils.cs | 6 ++++++ .../src/System/Linq/Expressions/BinaryExpression.cs | 4 ++-- .../Expressions/Compiler/LambdaCompiler.Expressions.cs | 6 +++--- .../Linq/Expressions/Compiler/LambdaCompiler.Logical.cs | 4 ++-- .../src/System/Linq/Expressions/Compiler/StackSpiller.cs | 2 +- .../src/System/Linq/Expressions/DynamicExpression.cs | 6 +++--- .../System/Linq/Expressions/Interpreter/LightCompiler.cs | 6 +++--- .../src/System/Linq/Expressions/Interpreter/LightLambda.cs | 7 ++++--- .../src/System/Linq/Expressions/InvocationExpression.cs | 2 +- .../src/System/Linq/Expressions/LambdaExpression.cs | 4 ++-- .../src/System/Runtime/CompilerServices/CallSite.cs | 4 ++-- .../src/System/Runtime/CompilerServices/CallSiteBinder.cs | 2 +- 13 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Dynamic/Utils/DelegateHelpers.cs b/src/System.Linq.Expressions/src/System/Dynamic/Utils/DelegateHelpers.cs index bbbbf562fa56..7e7331fc060e 100644 --- a/src/System.Linq.Expressions/src/System/Dynamic/Utils/DelegateHelpers.cs +++ b/src/System.Linq.Expressions/src/System/Dynamic/Utils/DelegateHelpers.cs @@ -42,7 +42,7 @@ internal static Delegate CreateObjectArrayDelegate(Type delegateType, Func handler) { - MethodInfo delegateInvokeMethod = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo delegateInvokeMethod = delegateType.GetInvokeMethod(); Type returnType = delegateInvokeMethod.ReturnType; bool hasReturnValue = returnType != typeof(void); diff --git a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeUtils.cs b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeUtils.cs index 16592482b1fd..0dca675a091c 100644 --- a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeUtils.cs +++ b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeUtils.cs @@ -775,6 +775,12 @@ public static bool CanCache(this Type t) return true; } + public static MethodInfo GetInvokeMethod(this Type delegateType) + { + Debug.Assert(typeof(Delegate).IsAssignableFrom(delegateType)); + return delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + } + #if FEATURE_COMPILE internal static bool IsUnsigned(this Type type) => IsUnsigned(GetNonNullableType(type).GetTypeCode()); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/BinaryExpression.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/BinaryExpression.cs index d0946262fb69..d81c0bdaa997 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/BinaryExpression.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/BinaryExpression.cs @@ -1434,7 +1434,7 @@ public static BinaryExpression Coalesce(Expression left, Expression right, Lambd Type delegateType = conversion.Type; Debug.Assert(typeof(System.MulticastDelegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.MulticastDelegate)); - MethodInfo method = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo method = delegateType.GetInvokeMethod(); if (method.ReturnType == typeof(void)) { throw Error.UserDefinedOperatorMustNotBeVoid(conversion, nameof(conversion)); @@ -1590,7 +1590,7 @@ private static void ValidateOpAssignConversionLambda(LambdaExpression conversion { Type delegateType = conversion.Type; Debug.Assert(typeof(System.MulticastDelegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.MulticastDelegate)); - MethodInfo mi = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo mi = delegateType.GetInvokeMethod(); ParameterInfo[] pms = mi.GetParametersCached(); Debug.Assert(pms.Length == conversion.ParameterCount); if (pms.Length != 1) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs index 684854667dfa..958678e9c4c9 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs @@ -187,7 +187,7 @@ private void EmitInvocationExpression(Expression expr, CompilationFlags flags) expr = Expression.Call(expr, expr.Type.GetMethod("Compile", Array.Empty())); } - EmitMethodCall(expr, expr.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitExpressionStart); + EmitMethodCall(expr, expr.Type.GetInvokeMethod(), node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitExpressionStart); } private void EmitInlinedInvoke(InvocationExpression invoke, CompilationFlags flags) @@ -199,7 +199,7 @@ private void EmitInlinedInvoke(InvocationExpression invoke, CompilationFlags fla // stack it is entirely doable. // 1. Emit invoke arguments - List wb = EmitArguments(lambda.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), invoke); + List wb = EmitArguments(lambda.Type.GetInvokeMethod(), invoke); // 2. Create the nested LambdaCompiler var inner = new LambdaCompiler(this, lambda, invoke); @@ -594,7 +594,7 @@ private void EmitDynamicExpression(Expression expr) object site = node.CreateCallSite(); Type siteType = site.GetType(); - MethodInfo invoke = node.DelegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo invoke = node.DelegateType.GetInvokeMethod(); // site.Target.Invoke(site, args) EmitConstant(site, siteType); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Logical.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Logical.cs index 8870963c7cf3..3a7c6949e94d 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Logical.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Logical.cs @@ -144,7 +144,7 @@ private void EmitNullableCoalesce(BinaryExpression b) } // emit call to invoke - _ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)); + _ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetInvokeMethod()); } else if (!TypeUtils.AreEquivalent(b.Type, nnLeftType)) { @@ -194,7 +194,7 @@ private void EmitLambdaReferenceCoalesce(BinaryExpression b) FreeLocal(loc); // emit call to invoke - _ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)); + _ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetInvokeMethod()); _ilg.MarkLabel(labEnd); } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/StackSpiller.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/StackSpiller.cs index 8430918794aa..36954a8b3992 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/StackSpiller.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/StackSpiller.cs @@ -172,7 +172,7 @@ private Result RewriteDynamicExpression(Expression expr) if (cr.Action == RewriteAction.SpillStack) { - RequireNoRefArgs(node.DelegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)); + RequireNoRefArgs(node.DelegateType.GetInvokeMethod()); } return cr.Finish(cr.Rewrite ? node.Rewrite(cr[0, -1]) : expr); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs index 2661c2ec5748..3faf880673f4 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/DynamicExpression.cs @@ -22,7 +22,7 @@ public class DynamicExpression : Expression, IDynamicExpression { internal DynamicExpression(Type delegateType, CallSiteBinder binder) { - Debug.Assert(delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetReturnType() == typeof(object) || GetType() != typeof(DynamicExpression)); + Debug.Assert(delegateType.GetInvokeMethod().GetReturnType() == typeof(object) || GetType() != typeof(DynamicExpression)); DelegateType = delegateType; Binder = binder; } @@ -516,7 +516,7 @@ internal class TypedDynamicExpressionN : DynamicExpressionN internal TypedDynamicExpressionN(Type returnType, Type delegateType, CallSiteBinder binder, IReadOnlyList arguments) : base(delegateType, binder, arguments) { - Debug.Assert(delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetReturnType() == returnType); + Debug.Assert(delegateType.GetInvokeMethod().GetReturnType() == returnType); Type = returnType; } @@ -1014,7 +1014,7 @@ public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder bi private static MethodInfo GetValidMethodForDynamic(Type delegateType) { - var method = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + var method = delegateType.GetInvokeMethod(); var pi = method.GetParametersCached(); if (pi.Length == 0 || pi[0].ParameterType != typeof(CallSite)) throw Error.FirstArgumentMustBeCallSite(); return method; diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightCompiler.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightCompiler.cs index c49734c7451a..0e7ec2f30a0e 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightCompiler.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightCompiler.cs @@ -2611,7 +2611,7 @@ private void CompileCoalesceBinaryExpression(Expression expr) _instructions.EmitStoreLocal(local.Index); CompileMethodCallExpression( - Expression.Call(node.Conversion, node.Conversion.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), new[] { temp }) + Expression.Call(node.Conversion, node.Conversion.Type.GetInvokeMethod(), new[] { temp }) ); _locals.UndefineLocal(local, _instructions.Count); @@ -2640,14 +2640,14 @@ private void CompileInvocationExpression(Expression expr) node.Expression, compMethod ), - compMethod.ReturnType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), + compMethod.ReturnType.GetInvokeMethod(), node ); } else { CompileMethodCallExpression( - node.Expression, node.Expression.Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic), node + node.Expression, node.Expression.Type.GetInvokeMethod(), node ); } } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightLambda.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightLambda.cs index 25ab8c8b7006..3b7d3cf265ee 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightLambda.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Interpreter/LightLambda.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; +using System.Dynamic.Utils; using System.Globalization; using System.Reflection; using System.Runtime.CompilerServices; @@ -207,7 +208,7 @@ private static Func GetRunDelegateCtor(Type delegateType) private static Func MakeRunDelegateCtor(Type delegateType) { - MethodInfo method = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo method = delegateType.GetInvokeMethod(); ParameterInfo[] paramInfos = method.GetParametersCached(); Type[] paramTypes; string name = "Run"; @@ -287,7 +288,7 @@ private Delegate CreateCustomDelegate(Type delegateType) { //PerfTrack.NoteEvent(PerfTrack.Categories.Compiler, "Synchronously compiling a custom delegate"); - MethodInfo method = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo method = delegateType.GetInvokeMethod(); ParameterInfo[] paramInfos = method.GetParametersCached(); var parameters = new ParameterExpression[paramInfos.Length]; var parametersAsObject = new Expression[paramInfos.Length]; @@ -355,7 +356,7 @@ private Delegate CreateCustomDelegate(Type delegateType) internal Delegate MakeDelegate(Type delegateType) { #if !NO_FEATURE_STATIC_DELEGATE - MethodInfo method = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo method = delegateType.GetInvokeMethod(); if (method.ReturnType == typeof(void)) { return System.Dynamic.Utils.DelegateHelpers.CreateObjectArrayDelegate(delegateType, RunVoid); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/InvocationExpression.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/InvocationExpression.cs index dca43fbcf1c4..f248330d11a5 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/InvocationExpression.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/InvocationExpression.cs @@ -764,7 +764,7 @@ internal static MethodInfo GetInvokeMethod(Expression expression) delegateType = exprType.GetGenericArguments()[0]; } - return delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + return delegateType.GetInvokeMethod(); } } } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs index fedc95abefc6..1ff1b931101a 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs @@ -66,7 +66,7 @@ internal LambdaExpression(Expression body) /// /// Gets the return type of the lambda expression. /// - public Type ReturnType => Type.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).ReturnType; + public Type ReturnType => Type.GetInvokeMethod().ReturnType; /// /// Gets the value that indicates if the lambda expression will be compiled with @@ -897,7 +897,7 @@ private static void ValidateLambdaArgs(Type delegateType, ref Expression body, R CacheDict ldc = s_lambdaDelegateCache; if (!ldc.TryGetValue(delegateType, out mi)) { - mi = delegateType.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + mi = delegateType.GetInvokeMethod(); if (delegateType.CanCache()) { ldc[delegateType] = mi; diff --git a/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSite.cs b/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSite.cs index 4f05001b0d14..0c319df4c7db 100644 --- a/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSite.cs +++ b/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSite.cs @@ -273,14 +273,14 @@ internal T MakeUpdateDelegate() { #if !FEATURE_COMPILE Type target = typeof(T); - MethodInfo invoke = target.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo invoke = target.GetInvokeMethod(); s_cachedNoMatch = CreateCustomNoMatchDelegate(invoke); return CreateCustomUpdateDelegate(invoke); #else Type target = typeof(T); Type[] args; - MethodInfo invoke = target.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo invoke = target.GetInvokeMethod(); if (target.IsGenericType && IsSimpleSignature(invoke, out args)) { diff --git a/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs b/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs index a3467f75f10b..862d7a29207a 100644 --- a/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs +++ b/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs @@ -65,7 +65,7 @@ private LambdaSignature() throw System.Linq.Expressions.Error.TypeParameterIsNotDelegate(target); } - MethodInfo invoke = target.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + MethodInfo invoke = target.GetInvokeMethod(); ParameterInfo[] pis = invoke.GetParametersCached(); if (pis[0].ParameterType != typeof(CallSite)) { From 790f633dc071d4ac8486700cd9c2a3f4f5c36c01 Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Mon, 17 Apr 2017 16:43:50 -0700 Subject: [PATCH 118/336] Increase timeout --- src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs b/src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs index 8295ca9c8409..ed7920fe7cba 100644 --- a/src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs +++ b/src/System.Net.Http/tests/FunctionalTests/CancellationTest.cs @@ -72,7 +72,7 @@ await Assert.ThrowsAnyAsync(async () => _output.WriteLine("GetAsync() completed at: {0}", stopwatch.Elapsed.ToString()); triggerResponseWrite.SetResult(true); - Assert.True(stopwatch.Elapsed < new TimeSpan(0, 0, 10), $"Elapsed time {stopwatch.Elapsed} should be short"); + Assert.True(stopwatch.Elapsed < new TimeSpan(0, 0, 30), $"Elapsed time {stopwatch.Elapsed} should be less than 30 seconds, was {stopwatch.Elapsed.TotalSeconds}"); }); } } @@ -136,7 +136,7 @@ await Assert.ThrowsAnyAsync( triggerResponseWrite.SetResult(true); _output.WriteLine("ReadAsync() completed at: {0}", stopwatch.Elapsed.ToString()); - Assert.True(stopwatch.Elapsed < new TimeSpan(0, 0, 10), $"Elapsed time {stopwatch.Elapsed} should be short"); + Assert.True(stopwatch.Elapsed < new TimeSpan(0, 0, 30), $"Elapsed time {stopwatch.Elapsed} should be less than 30 seconds, was {stopwatch.Elapsed.TotalSeconds}"); } }); } From 6a2a0f6c6204c1146280fab1bb1de9b43cf2870f Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Mon, 17 Apr 2017 17:08:49 -0700 Subject: [PATCH 119/336] Logging for TestMultipleConcurrentRequests (#18496) Logging for 18474 --- .../tests/HttpHandlerDiagnosticListenerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs index 9d9a68465f75..43a58c61a0ac 100644 --- a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs +++ b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs @@ -171,7 +171,7 @@ public void TestDynamicPropertiesOnReceiveAndResponseEvents() // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, "The timestamp sent with the event doesn't look correct"); + Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); if (pair.Key == "System.Net.Http.Response") { @@ -241,7 +241,7 @@ public void TestMultipleConcurrentRequests() // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, "The timestamp sent with the event doesn't look correct"); + Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); if (pair.Key == "System.Net.Http.Request") { From 0723e486ba880be7bce85723b7834d2d60fd2741 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Mon, 17 Apr 2017 20:45:42 -0500 Subject: [PATCH 120/336] Fix typo (#18524) --- Documentation/coding-guidelines/project-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/coding-guidelines/project-guidelines.md b/Documentation/coding-guidelines/project-guidelines.md index 2db8be559f3d..c3aba1d2c0be 100644 --- a/Documentation/coding-guidelines/project-guidelines.md +++ b/Documentation/coding-guidelines/project-guidelines.md @@ -251,5 +251,5 @@ Each source file should use the following guidelines ## Define naming convention As mentioned in [Conventions for forked code](conventions-for-forked-code) `#ifdef`ing the code is the last resort as it makes code harder to maintain overtime. If we do need to use `#ifdef`'s we should use the following conventions: - Defines based on conventions should be one of `$(OSGroup)`, `$(TargetGroup)`, `$(ConfigurationGroup)`, or `$(Platform)`, matching exactly by case to ensure consistency. - - Examples: `$(DefineConstants),net46` + - Examples: `$(DefineConstants);net46` - Defines based on convention should match the pattern `FEATURE_`. These can unique to a given library project or potentially shared (via name) across multiple projects. From ec8699c2ff5234b00e57339c1cbae0ed3addbcc4 Mon Sep 17 00:00:00 2001 From: WinCPP Date: Tue, 18 Apr 2017 08:06:12 +0530 Subject: [PATCH 121/336] Issue #8578 Use reflection method with binding flags --- .../src/System/Dynamic/Utils/TypeExtensions.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs index 5e32cda42c8b..875b6dffe496 100644 --- a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs +++ b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs @@ -19,15 +19,8 @@ internal static class TypeExtensions public static MethodInfo GetAnyStaticMethodValidated(this Type type, string name, Type[] types) { Debug.Assert(types != null); - foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly)) - { - if (method.Name == name && method.MatchesArgumentTypes(types)) - { - return method; - } - } - - return null; + MethodInfo method = type.GetMethod(name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly, null, types, null); + return method.MatchesArgumentTypes(types) ? method : null; } /// @@ -44,6 +37,11 @@ private static bool MatchesArgumentTypes(this MethodInfo mi, Type[] argTypes) Debug.Assert(mi != null); Debug.Assert(argTypes != null); + if (mi == null) + { + return false; + } + ParameterInfo[] ps = mi.GetParametersCached(); if (ps.Length != argTypes.Length) From 21af8c7f4a16c8a555d7647821e3d26759a42e59 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Tue, 18 Apr 2017 03:22:05 +0100 Subject: [PATCH 122/336] Fill some testing gaps in S.L.Expressions compilation. Contributes to #11409 --- .../Coalesce/BinaryCoalesceTests.cs | 54 +++++++++++++++++++ .../ExceptionHandlingExpressions.cs | 27 ++++++++++ .../IndexExpression/IndexExpressionTests.cs | 26 +++++++++ .../tests/ListInit/ListInitExpressionTests.cs | 46 ++++++++++++++++ .../tests/Switch/SwitchTests.cs | 46 ++++++++++++++++ 5 files changed, 199 insertions(+) diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs index 53e4fb3037c8..79bf3e4e6730 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs @@ -440,5 +440,59 @@ public static void ToStringTest() BinaryExpression e = Expression.Coalesce(Expression.Parameter(typeof(string), "a"), Expression.Parameter(typeof(string), "b")); Assert.Equal("(a ?? b)", e.ToString()); } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void CoalesceToWiderReference(bool useInterpreter) + { + Func func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant("abc"), + Expression.Constant("def", typeof(object)) + )).Compile(useInterpreter); + Assert.Equal("abc", func()); + + func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant(null, typeof(string)), + Expression.Constant("def", typeof(object)) + )).Compile(useInterpreter); + Assert.Equal("def", func()); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void CoalesceToNarrowerReference(bool useInterpreter) + { + Func func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant("abc", typeof(object)), + Expression.Constant("def") + )).Compile(useInterpreter); + Assert.Equal("abc", func()); + + func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant(null), + Expression.Constant("def") + )).Compile(useInterpreter); + Assert.Equal("def", func()); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void CoalesceReferenceToValueType(bool useInterpreter) + { + Func func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant(2, typeof(object)), + Expression.Constant(1) + )).Compile(useInterpreter); + Assert.Equal(2, func()); + + func = Expression.Lambda>( + Expression.Coalesce( + Expression.Constant(null), + Expression.Constant(1) + )).Compile(useInterpreter); + Assert.Equal(1, func()); + } } } diff --git a/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs b/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs index a403f2d8e28f..3b1687e4928c 100644 --- a/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs +++ b/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs @@ -984,6 +984,33 @@ public void TryFinallyWithinFilterCompiled() TryFinallyWithinFilter(false); } + [Fact] + public void TryFinallyWithinFilterCompiledProhibited() + { + // Ideally we can change this behaviour (see issue 15719 above), + // but for now, check correct exception thrown. + + TryExpression tryExp = Expression.TryCatch( + Expression.Throw(Expression.Constant(new TestException()), typeof(int)), + Expression.Catch( + typeof(TestException), + Expression.Constant(1), + Expression.TryFinally(Expression.Constant(false), Expression.Empty()) + ), + Expression.Catch( + typeof(TestException), + Expression.Constant(2), + Expression.TryFinally(Expression.Constant(true), Expression.Empty()) + ), + Expression.Catch( + typeof(TestException), + Expression.Constant(3) + ) + ); + Expression> lambda = Expression.Lambda>(tryExp); + Assert.Throws(() => lambda.Compile(false)); + } + [Theory, InlineData(true)] public void TryCatchWithinFilter(bool useInterpreter) { diff --git a/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs b/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs index 016b10cfab01..9abf9f644d2d 100644 --- a/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs @@ -650,6 +650,32 @@ public void UnreadableIndex() Assert.Throws("arguments[0]", () => Expression.Property(instance, prop, index)); } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void ConstrainedVirtualCall(bool useInterpreter) + { + // Virtual call via base declaration to valuetype. + ConstantExpression instance = Expression.Constant(new InterfaceIndexableValueType()); + PropertyInfo prop = typeof(IIndexable).GetProperty("Item"); + IndexExpression index = Expression.Property(instance, prop, Expression.Constant(4)); + Expression> lambda = Expression.Lambda>( + index + ); + Func func = lambda.Compile(useInterpreter); + Assert.Equal(8, func()); + } + + + private interface IIndexable + { + int this[int index] { get; } + } + + private struct InterfaceIndexableValueType : IIndexable + { + public int this[int index] => index * 2; + } + private class IntAndExpressionIndexed { public bool this[int x, Expression y] => true; diff --git a/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs b/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs index 6e124c01a34a..133d072d0b12 100644 --- a/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs @@ -48,6 +48,23 @@ private class AnyTypeList : IEnumerable IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } + private struct ListValueType : IEnumerable + { + private List _store; + + private List EnsureStore() => _store ?? (_store = new List()); + + public int Add(int value) + { + EnsureStore().Add(value); + return value; + } + + public IEnumerator GetEnumerator() => EnsureStore().GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } + [Fact] public void NullNewMethod() { @@ -314,5 +331,34 @@ public static void ToStringTest() ListInitExpression e2 = Expression.ListInit(Expression.New(typeof(List)), Expression.Parameter(typeof(int), "x"), Expression.Parameter(typeof(int), "y")); Assert.Equal("new List`1() {Void Add(Int32)(x), Void Add(Int32)(y)}", e2.ToString()); } + + [Theory, ClassData(typeof(CompilationTypes))] + public void ValueTypeList(bool useInterpreter) + { + Expression> lambda = Expression.Lambda>( + Expression.ListInit( + Expression.New(typeof(ListValueType)), + Expression.Constant(5), + Expression.Constant(6), + Expression.Constant(7), + Expression.Constant(8) + ) + ); + Func func = lambda.Compile(useInterpreter); + Assert.Equal(new[] { 5, 6, 7, 8 }, func()); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public void EmptyValueTypeList(bool useInterpreter) + { + Expression> lambda = Expression.Lambda>( + Expression.ListInit( + Expression.New(typeof(ListValueType)), + Array.Empty() + ) + ); + Func func = lambda.Compile(useInterpreter); + Assert.Empty(func()); + } } } diff --git a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs index c005ff8f3e3f..0dd6e9dc84c5 100644 --- a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs +++ b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs @@ -203,6 +203,52 @@ public void IntSwitch3(bool useInterpreter) Assert.Equal("default", f(3)); } + [Theory] + [ClassData(typeof(CompilationTypes))] + public void LongSwitch(bool useInterpreter) + { + ParameterExpression p = Expression.Parameter(typeof(long)); + ParameterExpression p1 = Expression.Parameter(typeof(string)); + SwitchExpression s = Expression.Switch(p, + Expression.Assign(p1, Expression.Constant("default")), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("hello")), Expression.Constant(1L)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("two")), Expression.Constant(2L)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("lala")), Expression.Constant(1L)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("wow")), Expression.Constant(long.MaxValue))); + + BlockExpression block = Expression.Block(new [] { p1 }, s, p1); + + Func f = Expression.Lambda>(block, p).Compile(useInterpreter); + + Assert.Equal("hello", f(1)); + Assert.Equal("wow", f(long.MaxValue)); + Assert.Equal("two", f(2)); + Assert.Equal("default", f(3)); + } + + [Theory] + [ClassData(typeof(CompilationTypes))] + public void ULongSwitch(bool useInterpreter) + { + ParameterExpression p = Expression.Parameter(typeof(ulong)); + ParameterExpression p1 = Expression.Parameter(typeof(string)); + SwitchExpression s = Expression.Switch(p, + Expression.Assign(p1, Expression.Constant("default")), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("hello")), Expression.Constant(1UL)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("two")), Expression.Constant(2UL)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("lala")), Expression.Constant(1UL)), + Expression.SwitchCase(Expression.Assign(p1, Expression.Constant("wow")), Expression.Constant(ulong.MaxValue))); + + BlockExpression block = Expression.Block(new [] { p1 }, s, p1); + + Func f = Expression.Lambda>(block, p).Compile(useInterpreter); + + Assert.Equal("hello", f(1)); + Assert.Equal("wow", f(ulong.MaxValue)); + Assert.Equal("two", f(2)); + Assert.Equal("default", f(3)); + } + [Theory] [ClassData(typeof(CompilationTypes))] public void StringSwitch(bool useInterpreter) From c8d483098878f4b6f92b0db8a814b3a5fd4a1c25 Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Mon, 17 Apr 2017 22:14:38 -0700 Subject: [PATCH 123/336] Fix XsPerformanceTest. Fix #18249. --- .../tests/XmlSerializer/Performance/XsPerformanceTest.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/System.Private.Xml/tests/XmlSerializer/Performance/XsPerformanceTest.cs b/src/System.Private.Xml/tests/XmlSerializer/Performance/XsPerformanceTest.cs index 3068af820c44..7ac7e5b8882b 100644 --- a/src/System.Private.Xml/tests/XmlSerializer/Performance/XsPerformanceTest.cs +++ b/src/System.Private.Xml/tests/XmlSerializer/Performance/XsPerformanceTest.cs @@ -20,14 +20,18 @@ public static IEnumerable SerializeMemberData() foreach (PerfTestConfig config in PerformanceTestCommon.PerformanceTestConfigurations()) { // XmlSerializer doesn't support Dictionary type - if (config.PerfTestType == TestType.Dictionary) continue; + if (config.PerfTestType == TestType.Dictionary + || config.PerfTestType == TestType.DictionaryOfSimpleType) + { + continue; + } + yield return config.ToObjectArray(); } } [Benchmark] [MemberData(nameof(SerializeMemberData))] - [ActiveIssue(18249)] public void XsSerializationTest(int numberOfRuns, TestType testType, int testSize) { PerformanceTestCommon.RunSerializationPerformanceTest(numberOfRuns, testType, testSize, XsSerializerFactory.GetInstance()); @@ -35,7 +39,6 @@ public void XsSerializationTest(int numberOfRuns, TestType testType, int testSiz [Benchmark] [MemberData(nameof(SerializeMemberData))] - [ActiveIssue(18249)] public void XsDeSerializationTest(int numberOfRuns, TestType testType, int testSize) { PerformanceTestCommon.RunDeserializationPerformanceTest(numberOfRuns, testType, testSize, XsSerializerFactory.GetInstance()); From 6c53c9572258b5b208e9a74efc170494de4de822 Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Mon, 17 Apr 2017 22:21:32 -0700 Subject: [PATCH 124/336] Add messages for PNSE in Serialization (#18504) * Port Implementation for SchemaExporter.Export. * Added messages for PNSE in Serialization. --- .../src/Resources/Strings.resx | 21 + .../Serialization/CollectionDataContract.cs | 14 + .../Runtime/Serialization/EnumDataContract.cs | 25 + .../System/Runtime/Serialization/Globals.cs | 63 +- .../Runtime/Serialization/SchemaExporter.cs | 869 +++++++++++++++++- .../Runtime/Serialization/XmlDataContract.cs | 16 + .../XmlObjectSerializerReadContextComplex.cs | 4 +- .../Serialization/XsdDataContractExporter.cs | 25 +- .../src/System/Xml/XmlDictionaryReader.cs | 4 +- .../src/System/Xml/XmlDictionaryWriter.cs | 2 +- 10 files changed, 992 insertions(+), 51 deletions(-) diff --git a/src/System.Private.DataContractSerialization/src/Resources/Strings.resx b/src/System.Private.DataContractSerialization/src/Resources/Strings.resx index b2f7358e18e8..589f25886a8a 100644 --- a/src/System.Private.DataContractSerialization/src/Resources/Strings.resx +++ b/src/System.Private.DataContractSerialization/src/Resources/Strings.resx @@ -1084,4 +1084,25 @@ JsonObjectDataContract.ParseJsonNumber shouldn't return a TypeCode that we're not expecting. + + An internal error has occurred. Could not load serialization schema. Consider providing schema with namespace '{0}'. + + + Schema type '{0}' returned by CLR type '{1}' is not found in the XmlSchemaSet. + + + Method '{0}.GetSchema()' must return a schema with a valid Id. + + + The Message Transmission Optimization Mechanism (MTOM) message encoding is not supported on this platform. + + + System.Runtime.Serialization.NetDataContractSerializer is not supported on this platform. + + + The implementation of the function requires System.Runtime.Serialization.IDataContractSurrogate which is not supported on this platform. + + + The implementation of the function requires System.Runtime.Serialization.SchemaImporter which is not supported on this platform. + diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/CollectionDataContract.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/CollectionDataContract.cs index 998e9a4e2824..537a0883b43e 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/CollectionDataContract.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/CollectionDataContract.cs @@ -288,6 +288,12 @@ public XmlDictionaryString ChildElementNamespace } } + internal bool IsItemTypeNullable + { + get { return _helper.IsItemTypeNullable; } + set { _helper.IsItemTypeNullable = value; } + } + internal bool IsConstructorCheckRequired { get @@ -464,6 +470,7 @@ private class CollectionDataContractCriticalHelper : DataContract.DataContractCr private static Type[] s_knownInterfaces; private Type _itemType; + private bool _isItemTypeNullable; private CollectionKind _kind; private readonly MethodInfo _getEnumeratorMethod, _addMethod; private readonly ConstructorInfo _constructor; @@ -512,6 +519,7 @@ private void Init(CollectionKind kind, Type itemType, CollectionDataContractAttr if (itemType != null) { _itemType = itemType; + _isItemTypeNullable = DataContract.IsTypeNullable(itemType); bool isDictionary = (kind == CollectionKind.Dictionary || kind == CollectionKind.GenericDictionary); string itemName = null, keyName = null, valueName = null; @@ -697,6 +705,12 @@ public XmlDictionaryString ChildElementNamespace set { _childElementNamespace = value; } } + internal bool IsItemTypeNullable + { + get { return _isItemTypeNullable; } + set { _isItemTypeNullable = value; } + } + internal MethodInfo GetEnumeratorMethod => _getEnumeratorMethod; internal MethodInfo AddMethod => _addMethod; diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/EnumDataContract.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/EnumDataContract.cs index 7f0897f68e97..fedea745233e 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/EnumDataContract.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/EnumDataContract.cs @@ -346,6 +346,31 @@ private long ReadEnumValue(string value, int index, int count) } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.InvalidEnumValueOnRead, value.Substring(index, count), DataContract.GetClrTypeFullName(UnderlyingType)))); } + + internal string GetStringFromEnumValue(long value) + { + if (IsULong) + { + return XmlConvert.ToString((ulong)value); + } + else + { + return XmlConvert.ToString(value); + } + } + + internal long GetEnumValueFromString(string value) + { + if (IsULong) + { + return (long)XmlConverter.ToUInt64(value); + } + else + { + return XmlConverter.ToInt64(value); + } + } + public override void WriteXmlValue(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context) { WriteEnumValue(xmlWriter, obj); diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs index edb3205f0ab3..ef25799a34b5 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs @@ -477,11 +477,25 @@ internal static Type TypeOfXmlQualifiedName } } + private static Type s_typeOfXmlSchemaType; + internal static Type TypeOfXmlSchemaType + { + get + { + if (s_typeOfXmlSchemaType == null) + { + s_typeOfXmlSchemaType = typeof(XmlSchemaType); + } + + return s_typeOfXmlSchemaType; + } + } + private static Type s_typeOfIExtensibleDataObject; - internal static Type TypeOfIExtensibleDataObject => s_typeOfIExtensibleDataObject ?? (s_typeOfIExtensibleDataObject = typeof (IExtensibleDataObject)); + internal static Type TypeOfIExtensibleDataObject => s_typeOfIExtensibleDataObject ?? (s_typeOfIExtensibleDataObject = typeof(IExtensibleDataObject)); private static Type s_typeOfExtensionDataObject; - internal static Type TypeOfExtensionDataObject => s_typeOfExtensionDataObject ?? (s_typeOfExtensionDataObject = typeof (ExtensionDataObject)); + internal static Type TypeOfExtensionDataObject => s_typeOfExtensionDataObject ?? (s_typeOfExtensionDataObject = typeof(ExtensionDataObject)); private static Type s_typeOfISerializableDataNode; internal static Type TypeOfISerializableDataNode @@ -517,7 +531,7 @@ internal static Type TypeOfCollectionDataNode } private static Type s_typeOfXmlDataNode; - internal static Type TypeOfXmlDataNode => s_typeOfXmlDataNode ?? (s_typeOfXmlDataNode = typeof (XmlDataNode)); + internal static Type TypeOfXmlDataNode => s_typeOfXmlDataNode ?? (s_typeOfXmlDataNode = typeof(XmlDataNode)); #if uapaot private static Type s_typeOfSafeSerializationManager; @@ -999,5 +1013,48 @@ internal static bool IsDBNullValue(object o) public const string SafeSerializationManagerName = "SafeSerializationManager"; public const string SafeSerializationManagerNamespace = "http://schemas.datacontract.org/2004/07/System.Runtime.Serialization"; public const string ISerializableFactoryTypeLocalName = "FactoryType"; + public const string SerializationSchema = @" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; } } \ No newline at end of file diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/SchemaExporter.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/SchemaExporter.cs index bb5f0f0b8d89..fe6e82f7275c 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/SchemaExporter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/SchemaExporter.cs @@ -3,20 +3,24 @@ // See the LICENSE file in the project root for more information. using System; -using System.Linq; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Reflection; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using System.Reflection; namespace System.Runtime.Serialization { - internal class SchemaExporter { private XmlSchemaSet _schemas; + private XmlDocument _xmlDoc; private DataContractSet _dataContractSet; - //XmlDocument _xmlDoc; internal SchemaExporter(XmlSchemaSet schemas, DataContractSet dataContractSet) { @@ -24,16 +28,547 @@ internal SchemaExporter(XmlSchemaSet schemas, DataContractSet dataContractSet) _dataContractSet = dataContractSet; } + private XmlSchemaSet Schemas + { + get { return _schemas; } + } + + private XmlDocument XmlDoc + { + get + { + if (_xmlDoc == null) + _xmlDoc = new XmlDocument(); + return _xmlDoc; + } + } + internal void Export() { - throw new PlatformNotSupportedException(); + try + { + // Remove this if we decide to publish serialization schema at well-known location + ExportSerializationSchema(); + foreach (KeyValuePair pair in _dataContractSet) + { + DataContract dataContract = pair.Value; + if (!_dataContractSet.IsContractProcessed(dataContract)) + { + ExportDataContract(dataContract); + _dataContractSet.SetContractProcessed(dataContract); + } + } + } + finally + { + _xmlDoc = null; + _dataContractSet = null; + } + } + + private void ExportSerializationSchema() + { + if (!Schemas.Contains(Globals.SerializationNamespace)) + { + StringReader reader = new StringReader(Globals.SerializationSchema); + XmlSchema schema = XmlSchema.Read(new XmlTextReader(reader) { DtdProcessing = DtdProcessing.Prohibit }, null); + if (schema == null) + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.CouldNotReadSerializationSchema, Globals.SerializationNamespace))); + Schemas.Add(schema); + } + } + + private void ExportDataContract(DataContract dataContract) + { + if (dataContract.IsBuiltInDataContract) + return; + else if (dataContract is XmlDataContract) + ExportXmlDataContract((XmlDataContract)dataContract); + else + { + XmlSchema schema = GetSchema(dataContract.StableName.Namespace); + + if (dataContract is ClassDataContract) + { + ClassDataContract classDataContract = (ClassDataContract)dataContract; + if (classDataContract.IsISerializable) + ExportISerializableDataContract(classDataContract, schema); + else + ExportClassDataContract(classDataContract, schema); + } + else if (dataContract is CollectionDataContract) + ExportCollectionDataContract((CollectionDataContract)dataContract, schema); + else if (dataContract is EnumDataContract) + ExportEnumDataContract((EnumDataContract)dataContract, schema); + ExportTopLevelElement(dataContract, schema); + Schemas.Reprocess(schema); + } + } + + private XmlSchemaElement ExportTopLevelElement(DataContract dataContract, XmlSchema schema) + { + if (schema == null || dataContract.StableName.Namespace != dataContract.TopLevelElementNamespace.Value) + schema = GetSchema(dataContract.TopLevelElementNamespace.Value); + + XmlSchemaElement topLevelElement = new XmlSchemaElement(); + topLevelElement.Name = dataContract.TopLevelElementName.Value; + SetElementType(topLevelElement, dataContract, schema); + topLevelElement.IsNillable = true; + schema.Items.Add(topLevelElement); + return topLevelElement; + } + + private void ExportClassDataContract(ClassDataContract classDataContract, XmlSchema schema) + { + XmlSchemaComplexType type = new XmlSchemaComplexType(); + type.Name = classDataContract.StableName.Name; + schema.Items.Add(type); + XmlElement genericInfoElement = null; + if (classDataContract.UnderlyingType.IsGenericType) + genericInfoElement = ExportGenericInfo(classDataContract.UnderlyingType, Globals.GenericTypeLocalName, Globals.SerializationNamespace); + + XmlSchemaSequence rootSequence = new XmlSchemaSequence(); + for (int i = 0; i < classDataContract.Members.Count; i++) + { + DataMember dataMember = classDataContract.Members[i]; + + XmlSchemaElement element = new XmlSchemaElement(); + element.Name = dataMember.Name; + XmlElement actualTypeElement = null; + DataContract memberTypeContract = _dataContractSet.GetMemberTypeDataContract(dataMember); + if (CheckIfMemberHasConflict(dataMember)) + { + element.SchemaTypeName = AnytypeQualifiedName; + actualTypeElement = ExportActualType(memberTypeContract.StableName); + SchemaHelper.AddSchemaImport(memberTypeContract.StableName.Namespace, schema); + } + else + SetElementType(element, memberTypeContract, schema); + SchemaHelper.AddElementForm(element, schema); + if (dataMember.IsNullable) + element.IsNillable = true; + if (!dataMember.IsRequired) + element.MinOccurs = 0; + + element.Annotation = GetSchemaAnnotation(actualTypeElement, ExportSurrogateData(dataMember), ExportEmitDefaultValue(dataMember)); + rootSequence.Items.Add(element); + } + + XmlElement isValueTypeElement = null; + if (classDataContract.BaseContract != null) + { + XmlSchemaComplexContentExtension extension = CreateTypeContent(type, classDataContract.BaseContract.StableName, schema); + extension.Particle = rootSequence; + if (classDataContract.IsReference && !classDataContract.BaseContract.IsReference) + { + AddReferenceAttributes(extension.Attributes, schema); + } + } + else + { + type.Particle = rootSequence; + if (classDataContract.IsValueType) + isValueTypeElement = GetAnnotationMarkup(IsValueTypeName, XmlConvert.ToString(classDataContract.IsValueType), schema); + if (classDataContract.IsReference) + AddReferenceAttributes(type.Attributes, schema); + } + type.Annotation = GetSchemaAnnotation(genericInfoElement, ExportSurrogateData(classDataContract), isValueTypeElement); + } + + private void AddReferenceAttributes(XmlSchemaObjectCollection attributes, XmlSchema schema) + { + SchemaHelper.AddSchemaImport(Globals.SerializationNamespace, schema); + schema.Namespaces.Add(Globals.SerPrefixForSchema, Globals.SerializationNamespace); + attributes.Add(IdAttribute); + attributes.Add(RefAttribute); + } + + private void SetElementType(XmlSchemaElement element, DataContract dataContract, XmlSchema schema) + { + XmlDataContract xmlDataContract = dataContract as XmlDataContract; + if (xmlDataContract != null && xmlDataContract.IsAnonymous) + { + element.SchemaType = xmlDataContract.XsdType; + } + else + { + element.SchemaTypeName = dataContract.StableName; + + if (element.SchemaTypeName.Namespace.Equals(Globals.SerializationNamespace)) + schema.Namespaces.Add(Globals.SerPrefixForSchema, Globals.SerializationNamespace); + + SchemaHelper.AddSchemaImport(dataContract.StableName.Namespace, schema); + } + } + + private bool CheckIfMemberHasConflict(DataMember dataMember) + { + if (dataMember.HasConflictingNameAndType) + return true; + + DataMember conflictingMember = dataMember.ConflictingMember; + while (conflictingMember != null) + { + if (conflictingMember.HasConflictingNameAndType) + return true; + conflictingMember = conflictingMember.ConflictingMember; + } + + return false; + } + + private XmlElement ExportEmitDefaultValue(DataMember dataMember) + { + if (dataMember.EmitDefaultValue) + return null; + XmlElement defaultValueElement = XmlDoc.CreateElement(DefaultValueAnnotation.Name, DefaultValueAnnotation.Namespace); + XmlAttribute emitDefaultValueAttribute = XmlDoc.CreateAttribute(Globals.EmitDefaultValueAttribute); + emitDefaultValueAttribute.Value = Globals.False; + defaultValueElement.Attributes.Append(emitDefaultValueAttribute); + return defaultValueElement; + } + + private XmlElement ExportActualType(XmlQualifiedName typeName) + { + return ExportActualType(typeName, XmlDoc); + } + + private static XmlElement ExportActualType(XmlQualifiedName typeName, XmlDocument xmlDoc) + { + XmlElement actualTypeElement = xmlDoc.CreateElement(ActualTypeAnnotationName.Name, ActualTypeAnnotationName.Namespace); + + XmlAttribute nameAttribute = xmlDoc.CreateAttribute(Globals.ActualTypeNameAttribute); + nameAttribute.Value = typeName.Name; + actualTypeElement.Attributes.Append(nameAttribute); + + XmlAttribute nsAttribute = xmlDoc.CreateAttribute(Globals.ActualTypeNamespaceAttribute); + nsAttribute.Value = typeName.Namespace; + actualTypeElement.Attributes.Append(nsAttribute); + + return actualTypeElement; + } + + private XmlElement ExportGenericInfo(Type clrType, string elementName, string elementNs) + { + Type itemType; + int nestedCollectionLevel = 0; + while (CollectionDataContract.IsCollection(clrType, out itemType)) + { + if (DataContract.GetBuiltInDataContract(clrType) != null + || CollectionDataContract.IsCollectionDataContract(clrType)) + { + break; + } + clrType = itemType; + nestedCollectionLevel++; + } + + Type[] genericArguments = null; + IList genericArgumentCounts = null; + if (clrType.IsGenericType) + { + genericArguments = clrType.GetGenericArguments(); + string typeName; + if (clrType.DeclaringType == null) + typeName = clrType.Name; + else + { + int nsLen = (clrType.Namespace == null) ? 0 : clrType.Namespace.Length; + if (nsLen > 0) + nsLen++; //include the . following namespace + typeName = DataContract.GetClrTypeFullName(clrType).Substring(nsLen).Replace('+', '.'); + } + int iParam = typeName.IndexOf('['); + if (iParam >= 0) + typeName = typeName.Substring(0, iParam); + genericArgumentCounts = DataContract.GetDataContractNameForGenericName(typeName, null); + clrType = clrType.GetGenericTypeDefinition(); + } + XmlQualifiedName dcqname = DataContract.GetStableName(clrType); + if (nestedCollectionLevel > 0) + { + string collectionName = dcqname.Name; + for (int n = 0; n < nestedCollectionLevel; n++) + collectionName = Globals.ArrayPrefix + collectionName; + dcqname = new XmlQualifiedName(collectionName, DataContract.GetCollectionNamespace(dcqname.Namespace)); + } + XmlElement typeElement = XmlDoc.CreateElement(elementName, elementNs); + + XmlAttribute nameAttribute = XmlDoc.CreateAttribute(Globals.GenericNameAttribute); + nameAttribute.Value = genericArguments != null ? XmlConvert.DecodeName(dcqname.Name) : dcqname.Name; + //nameAttribute.Value = dcqname.Name; + typeElement.Attributes.Append(nameAttribute); + + XmlAttribute nsAttribute = XmlDoc.CreateAttribute(Globals.GenericNamespaceAttribute); + nsAttribute.Value = dcqname.Namespace; + typeElement.Attributes.Append(nsAttribute); + + if (genericArguments != null) + { + int argIndex = 0; + int nestedLevel = 0; + foreach (int genericArgumentCount in genericArgumentCounts) + { + for (int i = 0; i < genericArgumentCount; i++, argIndex++) + { + XmlElement argumentElement = ExportGenericInfo(genericArguments[argIndex], Globals.GenericParameterLocalName, Globals.SerializationNamespace); + if (nestedLevel > 0) + { + XmlAttribute nestedLevelAttribute = XmlDoc.CreateAttribute(Globals.GenericParameterNestedLevelAttribute); + nestedLevelAttribute.Value = nestedLevel.ToString(CultureInfo.InvariantCulture); + argumentElement.Attributes.Append(nestedLevelAttribute); + } + typeElement.AppendChild(argumentElement); + } + nestedLevel++; + } + if (genericArgumentCounts[nestedLevel - 1] == 0) + { + XmlAttribute typeNestedLevelsAttribute = XmlDoc.CreateAttribute(Globals.GenericParameterNestedLevelAttribute); + typeNestedLevelsAttribute.Value = genericArgumentCounts.Count.ToString(CultureInfo.InvariantCulture); + typeElement.Attributes.Append(typeNestedLevelsAttribute); + } + } + + return typeElement; + } + + private XmlElement ExportSurrogateData(object key) + { + // IDataContractSurrogate is not available on NetCore. + return null; + } + + private void ExportCollectionDataContract(CollectionDataContract collectionDataContract, XmlSchema schema) + { + XmlSchemaComplexType type = new XmlSchemaComplexType(); + type.Name = collectionDataContract.StableName.Name; + schema.Items.Add(type); + XmlElement genericInfoElement = null, isDictionaryElement = null; + if (collectionDataContract.UnderlyingType.IsGenericType && CollectionDataContract.IsCollectionDataContract(collectionDataContract.UnderlyingType)) + genericInfoElement = ExportGenericInfo(collectionDataContract.UnderlyingType, Globals.GenericTypeLocalName, Globals.SerializationNamespace); + if (collectionDataContract.IsDictionary) + isDictionaryElement = ExportIsDictionary(); + type.Annotation = GetSchemaAnnotation(isDictionaryElement, genericInfoElement, ExportSurrogateData(collectionDataContract)); + + XmlSchemaSequence rootSequence = new XmlSchemaSequence(); + + XmlSchemaElement element = new XmlSchemaElement(); + element.Name = collectionDataContract.ItemName; + element.MinOccurs = 0; + element.MaxOccursString = Globals.OccursUnbounded; + if (collectionDataContract.IsDictionary) + { + ClassDataContract keyValueContract = collectionDataContract.ItemContract as ClassDataContract; + XmlSchemaComplexType keyValueType = new XmlSchemaComplexType(); + XmlSchemaSequence keyValueSequence = new XmlSchemaSequence(); + foreach (DataMember dataMember in keyValueContract.Members) + { + XmlSchemaElement keyValueElement = new XmlSchemaElement(); + keyValueElement.Name = dataMember.Name; + SetElementType(keyValueElement, _dataContractSet.GetMemberTypeDataContract(dataMember), schema); + SchemaHelper.AddElementForm(keyValueElement, schema); + if (dataMember.IsNullable) + keyValueElement.IsNillable = true; + keyValueElement.Annotation = GetSchemaAnnotation(ExportSurrogateData(dataMember)); + keyValueSequence.Items.Add(keyValueElement); + } + keyValueType.Particle = keyValueSequence; + element.SchemaType = keyValueType; + } + else + { + if (collectionDataContract.IsItemTypeNullable) + element.IsNillable = true; + DataContract itemContract = _dataContractSet.GetItemTypeDataContract(collectionDataContract); + SetElementType(element, itemContract, schema); + } + SchemaHelper.AddElementForm(element, schema); + rootSequence.Items.Add(element); + + type.Particle = rootSequence; + + if (collectionDataContract.IsReference) + AddReferenceAttributes(type.Attributes, schema); + } + + private XmlElement ExportIsDictionary() + { + XmlElement isDictionaryElement = XmlDoc.CreateElement(IsDictionaryAnnotationName.Name, IsDictionaryAnnotationName.Namespace); + isDictionaryElement.InnerText = Globals.True; + return isDictionaryElement; + } + + private void ExportEnumDataContract(EnumDataContract enumDataContract, XmlSchema schema) + { + XmlSchemaSimpleType type = new XmlSchemaSimpleType(); + type.Name = enumDataContract.StableName.Name; + XmlElement actualTypeElement = (enumDataContract.BaseContractName == DefaultEnumBaseTypeName) ? null : ExportActualType(enumDataContract.BaseContractName); + type.Annotation = GetSchemaAnnotation(actualTypeElement, ExportSurrogateData(enumDataContract)); + schema.Items.Add(type); + + XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction(); + restriction.BaseTypeName = StringQualifiedName; + SchemaHelper.AddSchemaImport(enumDataContract.BaseContractName.Namespace, schema); + if (enumDataContract.Values != null) + { + for (int i = 0; i < enumDataContract.Values.Count; i++) + { + XmlSchemaEnumerationFacet facet = new XmlSchemaEnumerationFacet(); + facet.Value = enumDataContract.Members[i].Name; + if (enumDataContract.Values[i] != GetDefaultEnumValue(enumDataContract.IsFlags, i)) + facet.Annotation = GetSchemaAnnotation(EnumerationValueAnnotationName, enumDataContract.GetStringFromEnumValue(enumDataContract.Values[i]), schema); + restriction.Facets.Add(facet); + } + } + if (enumDataContract.IsFlags) + { + XmlSchemaSimpleTypeList list = new XmlSchemaSimpleTypeList(); + XmlSchemaSimpleType anonymousType = new XmlSchemaSimpleType(); + anonymousType.Content = restriction; + list.ItemType = anonymousType; + type.Content = list; + } + else + type.Content = restriction; + } + + internal static long GetDefaultEnumValue(bool isFlags, int index) + { + return isFlags ? (long)Math.Pow(2, index) : index; + } + + private void ExportISerializableDataContract(ClassDataContract dataContract, XmlSchema schema) + { + XmlSchemaComplexType type = new XmlSchemaComplexType(); + type.Name = dataContract.StableName.Name; + schema.Items.Add(type); + XmlElement genericInfoElement = null; + if (dataContract.UnderlyingType.IsGenericType) + genericInfoElement = ExportGenericInfo(dataContract.UnderlyingType, Globals.GenericTypeLocalName, Globals.SerializationNamespace); + + XmlElement isValueTypeElement = null; + if (dataContract.BaseContract != null) + { + XmlSchemaComplexContentExtension extension = CreateTypeContent(type, dataContract.BaseContract.StableName, schema); + } + else + { + schema.Namespaces.Add(Globals.SerPrefixForSchema, Globals.SerializationNamespace); + type.Particle = ISerializableSequence; + XmlSchemaAttribute iSerializableFactoryTypeAttribute = ISerializableFactoryTypeAttribute; + type.Attributes.Add(iSerializableFactoryTypeAttribute); + SchemaHelper.AddSchemaImport(ISerializableFactoryTypeAttribute.RefName.Namespace, schema); + if (dataContract.IsValueType) + isValueTypeElement = GetAnnotationMarkup(IsValueTypeName, XmlConvert.ToString(dataContract.IsValueType), schema); + } + type.Annotation = GetSchemaAnnotation(genericInfoElement, ExportSurrogateData(dataContract), isValueTypeElement); + } + + private XmlSchemaComplexContentExtension CreateTypeContent(XmlSchemaComplexType type, XmlQualifiedName baseTypeName, XmlSchema schema) + { + SchemaHelper.AddSchemaImport(baseTypeName.Namespace, schema); + + XmlSchemaComplexContentExtension extension = new XmlSchemaComplexContentExtension(); + extension.BaseTypeName = baseTypeName; + type.ContentModel = new XmlSchemaComplexContent(); + type.ContentModel.Content = extension; + + return extension; + } + + private void ExportXmlDataContract(XmlDataContract dataContract) + { + XmlQualifiedName typeQName; + bool hasRoot; + XmlSchemaType xsdType; + + Type clrType = dataContract.UnderlyingType; + if (!IsSpecialXmlType(clrType, out typeQName, out xsdType, out hasRoot)) + if (!InvokeSchemaProviderMethod(clrType, _schemas, out typeQName, out xsdType, out hasRoot)) + InvokeGetSchemaMethod(clrType, _schemas, typeQName); + + if (hasRoot) + { + if (!(typeQName.Equals(dataContract.StableName))) + { + Fx.Assert("XML data contract type name does not match schema name"); + } + + XmlSchema schema; + if (SchemaHelper.GetSchemaElement(Schemas, + new XmlQualifiedName(dataContract.TopLevelElementName.Value, dataContract.TopLevelElementNamespace.Value), + out schema) == null) + { + XmlSchemaElement topLevelElement = ExportTopLevelElement(dataContract, schema); + topLevelElement.IsNillable = dataContract.IsTopLevelElementNullable; + ReprocessAll(_schemas); + } + + XmlSchemaType anonymousType = xsdType; + xsdType = SchemaHelper.GetSchemaType(_schemas, typeQName, out schema); + if (anonymousType == null && xsdType == null && typeQName.Namespace != XmlSchema.Namespace) + { + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.MissingSchemaType, typeQName, DataContract.GetClrTypeFullName(clrType)))); + } + if (xsdType != null) + { + xsdType.Annotation = GetSchemaAnnotation( + ExportSurrogateData(dataContract), + dataContract.IsValueType ? + GetAnnotationMarkup(IsValueTypeName, XmlConvert.ToString(dataContract.IsValueType), schema) : + null + ); + } + } + } + + private static void ReprocessAll(XmlSchemaSet schemas)// and remove duplicate items + { + Hashtable elements = new Hashtable(); + Hashtable types = new Hashtable(); + XmlSchema[] schemaArray = new XmlSchema[schemas.Count]; + schemas.CopyTo(schemaArray, 0); + for (int i = 0; i < schemaArray.Length; i++) + { + XmlSchema schema = schemaArray[i]; + XmlSchemaObject[] itemArray = new XmlSchemaObject[schema.Items.Count]; + schema.Items.CopyTo(itemArray, 0); + for (int j = 0; j < itemArray.Length; j++) + { + XmlSchemaObject item = itemArray[j]; + Hashtable items; + XmlQualifiedName qname; + if (item is XmlSchemaElement) + { + items = elements; + qname = new XmlQualifiedName(((XmlSchemaElement)item).Name, schema.TargetNamespace); + } + else if (item is XmlSchemaType) + { + items = types; + qname = new XmlQualifiedName(((XmlSchemaType)item).Name, schema.TargetNamespace); + } + else + continue; + object otherItem = items[qname]; + if (otherItem != null) + { + schema.Items.Remove(item); + } + else + items.Add(qname, item); + } + schemas.Reprocess(schema); + } } internal static void GetXmlTypeInfo(Type type, out XmlQualifiedName stableName, out XmlSchemaType xsdType, out bool hasRoot) { if (IsSpecialXmlType(type, out stableName, out xsdType, out hasRoot)) return; - XmlSchemaSet schemas = null; + XmlSchemaSet schemas = new XmlSchemaSet(); + schemas.XmlResolver = null; InvokeSchemaProviderMethod(type, schemas, out stableName, out xsdType, out hasRoot); if (stableName.Name == null || stableName.Name.Length == 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.InvalidXmlDataContractName, DataContract.GetClrTypeFullName(type)))); @@ -43,7 +578,7 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema { xsdType = null; hasRoot = true; - object[] attrs = clrType.GetCustomAttributes(Globals.TypeOfXmlSchemaProviderAttribute, false).ToArray(); + object[] attrs = clrType.GetCustomAttributes(Globals.TypeOfXmlSchemaProviderAttribute, false); if (attrs == null || attrs.Length == 0) { stableName = DataContract.GetDefaultStableName(clrType); @@ -65,12 +600,12 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema } else { - MethodInfo getMethod = clrType.GetMethod(methodName, /*BindingFlags.DeclaredOnly |*/ BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, new Type[] { typeof(XmlSchemaSet) }); + MethodInfo getMethod = clrType.GetMethod(methodName, /*BindingFlags.DeclaredOnly |*/ BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, null, new Type[] { typeof(XmlSchemaSet) }, null); if (getMethod == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.MissingGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName))); - if (!(Globals.TypeOfXmlQualifiedName.IsAssignableFrom(getMethod.ReturnType))) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.InvalidReturnTypeOnGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName, DataContract.GetClrTypeFullName(getMethod.ReturnType), DataContract.GetClrTypeFullName(Globals.TypeOfXmlQualifiedName)))); + if (!(Globals.TypeOfXmlQualifiedName.IsAssignableFrom(getMethod.ReturnType)) && !(Globals.TypeOfXmlSchemaType.IsAssignableFrom(getMethod.ReturnType))) + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.InvalidReturnTypeOnGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName, DataContract.GetClrTypeFullName(getMethod.ReturnType), DataContract.GetClrTypeFullName(Globals.TypeOfXmlQualifiedName), typeof(XmlSchemaType)))); object typeInfo = getMethod.Invoke(null, new object[] { schemas }); @@ -88,12 +623,63 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema } else { - stableName = (XmlQualifiedName)typeInfo; + XmlSchemaType providerXsdType = typeInfo as XmlSchemaType; + if (providerXsdType != null) + { + string typeName = providerXsdType.Name; + string typeNs = null; + if (typeName == null || typeName.Length == 0) + { + DataContract.GetDefaultStableName(DataContract.GetClrTypeFullName(clrType), out typeName, out typeNs); + stableName = new XmlQualifiedName(typeName, typeNs); + providerXsdType.Annotation = GetSchemaAnnotation(ExportActualType(stableName, new XmlDocument())); + xsdType = providerXsdType; + } + else + { + foreach (XmlSchema schema in schemas.Schemas()) + { + foreach (XmlSchemaObject schemaItem in schema.Items) + { + if ((object)schemaItem == (object)providerXsdType) + { + typeNs = schema.TargetNamespace; + if (typeNs == null) + typeNs = String.Empty; + break; + } + } + if (typeNs != null) + break; + } + if (typeNs == null) + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.MissingSchemaType, typeName, DataContract.GetClrTypeFullName(clrType)))); + stableName = new XmlQualifiedName(typeName, typeNs); + } + } + else + stableName = (XmlQualifiedName)typeInfo; } } return true; } + private static void InvokeGetSchemaMethod(Type clrType, XmlSchemaSet schemas, XmlQualifiedName stableName) + { + IXmlSerializable ixmlSerializable = (IXmlSerializable)Activator.CreateInstance(clrType); + XmlSchema schema = ixmlSerializable.GetSchema(); + if (schema == null) + { + AddDefaultDatasetType(schemas, stableName.Name, stableName.Namespace); + } + else + { + if (schema.Id == null || schema.Id.Length == 0) + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.Format(SR.InvalidReturnSchemaOnGetSchemaMethod, DataContract.GetClrTypeFullName(clrType)))); + AddDefaultTypedDatasetType(schemas, schema, stableName.Name, stableName.Namespace); + } + } + internal static void AddDefaultXmlType(XmlSchemaSet schemas, string localName, string ns) { XmlSchemaComplexType defaultXmlType = CreateAnyType(); @@ -103,18 +689,6 @@ internal static void AddDefaultXmlType(XmlSchemaSet schemas, string localName, s schemas.Reprocess(schema); } - private static XmlSchemaComplexType CreateAnyElementType() - { - XmlSchemaComplexType anyElementType = new XmlSchemaComplexType(); - anyElementType.IsMixed = false; - anyElementType.Particle = new XmlSchemaSequence(); - XmlSchemaAny any = new XmlSchemaAny(); - any.MinOccurs = 0; - any.ProcessContents = XmlSchemaContentProcessing.Lax; - ((XmlSchemaSequence)anyElementType.Particle).Items.Add(any); - return anyElementType; - } - private static XmlSchemaComplexType CreateAnyType() { XmlSchemaComplexType anyType = new XmlSchemaComplexType(); @@ -129,6 +703,18 @@ private static XmlSchemaComplexType CreateAnyType() return anyType; } + private static XmlSchemaComplexType CreateAnyElementType() + { + XmlSchemaComplexType anyElementType = new XmlSchemaComplexType(); + anyElementType.IsMixed = false; + anyElementType.Particle = new XmlSchemaSequence(); + XmlSchemaAny any = new XmlSchemaAny(); + any.MinOccurs = 0; + any.ProcessContents = XmlSchemaContentProcessing.Lax; + ((XmlSchemaSequence)anyElementType.Particle).Items.Add(any); + return anyElementType; + } + internal static bool IsSpecialXmlType(Type type, out XmlQualifiedName typeName, out XmlSchemaType xsdType, out bool hasRoot) { xsdType = null; @@ -154,6 +740,241 @@ internal static bool IsSpecialXmlType(Type type, out XmlQualifiedName typeName, typeName = null; return false; } + + private static void AddDefaultDatasetType(XmlSchemaSet schemas, string localName, string ns) + { + XmlSchemaComplexType type = new XmlSchemaComplexType(); + type.Name = localName; + type.Particle = new XmlSchemaSequence(); + XmlSchemaElement schemaRefElement = new XmlSchemaElement(); + schemaRefElement.RefName = new XmlQualifiedName(Globals.SchemaLocalName, XmlSchema.Namespace); + ((XmlSchemaSequence)type.Particle).Items.Add(schemaRefElement); + XmlSchemaAny any = new XmlSchemaAny(); + ((XmlSchemaSequence)type.Particle).Items.Add(any); + XmlSchema schema = SchemaHelper.GetSchema(ns, schemas); + schema.Items.Add(type); + schemas.Reprocess(schema); + } + + private static void AddDefaultTypedDatasetType(XmlSchemaSet schemas, XmlSchema datasetSchema, string localName, string ns) + { + XmlSchemaComplexType type = new XmlSchemaComplexType(); + type.Name = localName; + type.Particle = new XmlSchemaSequence(); + XmlSchemaAny any = new XmlSchemaAny(); + any.Namespace = (datasetSchema.TargetNamespace == null) ? String.Empty : datasetSchema.TargetNamespace; + ((XmlSchemaSequence)type.Particle).Items.Add(any); + schemas.Add(datasetSchema); + XmlSchema schema = SchemaHelper.GetSchema(ns, schemas); + schema.Items.Add(type); + schemas.Reprocess(datasetSchema); + schemas.Reprocess(schema); + } + + private XmlSchemaAnnotation GetSchemaAnnotation(XmlQualifiedName annotationQualifiedName, string innerText, XmlSchema schema) + { + XmlSchemaAnnotation annotation = new XmlSchemaAnnotation(); + XmlSchemaAppInfo appInfo = new XmlSchemaAppInfo(); + XmlElement annotationElement = GetAnnotationMarkup(annotationQualifiedName, innerText, schema); + appInfo.Markup = new XmlNode[1] { annotationElement }; + annotation.Items.Add(appInfo); + return annotation; + } + + private static XmlSchemaAnnotation GetSchemaAnnotation(params XmlNode[] nodes) + { + if (nodes == null || nodes.Length == 0) + return null; + bool hasAnnotation = false; + for (int i = 0; i < nodes.Length; i++) + if (nodes[i] != null) + { + hasAnnotation = true; + break; + } + if (!hasAnnotation) + return null; + + XmlSchemaAnnotation annotation = new XmlSchemaAnnotation(); + XmlSchemaAppInfo appInfo = new XmlSchemaAppInfo(); + annotation.Items.Add(appInfo); + appInfo.Markup = nodes; + return annotation; + } + + private XmlElement GetAnnotationMarkup(XmlQualifiedName annotationQualifiedName, string innerText, XmlSchema schema) + { + XmlElement annotationElement = XmlDoc.CreateElement(annotationQualifiedName.Name, annotationQualifiedName.Namespace); + SchemaHelper.AddSchemaImport(annotationQualifiedName.Namespace, schema); + annotationElement.InnerText = innerText; + return annotationElement; + } + + private XmlSchema GetSchema(string ns) + { + return SchemaHelper.GetSchema(ns, Schemas); + } + + // Property is not stored in a local because XmlSchemaSequence is mutable. + // The schema export process should not expose objects that may be modified later. + internal static XmlSchemaSequence ISerializableSequence + { + get + { + XmlSchemaSequence iSerializableSequence = new XmlSchemaSequence(); + iSerializableSequence.Items.Add(ISerializableWildcardElement); + return iSerializableSequence; + } + } + + // Property is not stored in a local because XmlSchemaAny is mutable. + // The schema export process should not expose objects that may be modified later. + internal static XmlSchemaAny ISerializableWildcardElement + { + get + { + XmlSchemaAny iSerializableWildcardElement = new XmlSchemaAny(); + iSerializableWildcardElement.MinOccurs = 0; + iSerializableWildcardElement.MaxOccursString = Globals.OccursUnbounded; + iSerializableWildcardElement.Namespace = "##local"; + iSerializableWildcardElement.ProcessContents = XmlSchemaContentProcessing.Skip; + return iSerializableWildcardElement; + } + } + + private static XmlQualifiedName s_anytypeQualifiedName; + internal static XmlQualifiedName AnytypeQualifiedName + { + get + { + if (s_anytypeQualifiedName == null) + s_anytypeQualifiedName = new XmlQualifiedName(Globals.AnyTypeLocalName, Globals.SchemaNamespace); + return s_anytypeQualifiedName; + } + } + + private static XmlQualifiedName s_stringQualifiedName; + internal static XmlQualifiedName StringQualifiedName + { + get + { + if (s_stringQualifiedName == null) + s_stringQualifiedName = new XmlQualifiedName(Globals.StringLocalName, Globals.SchemaNamespace); + return s_stringQualifiedName; + } + } + + private static XmlQualifiedName s_defaultEnumBaseTypeName; + internal static XmlQualifiedName DefaultEnumBaseTypeName + { + get + { + if (s_defaultEnumBaseTypeName == null) + s_defaultEnumBaseTypeName = new XmlQualifiedName(Globals.IntLocalName, Globals.SchemaNamespace); + return s_defaultEnumBaseTypeName; + } + } + + private static XmlQualifiedName s_enumerationValueAnnotationName; + internal static XmlQualifiedName EnumerationValueAnnotationName + { + get + { + if (s_enumerationValueAnnotationName == null) + s_enumerationValueAnnotationName = new XmlQualifiedName(Globals.EnumerationValueLocalName, Globals.SerializationNamespace); + return s_enumerationValueAnnotationName; + } + } + + private static XmlQualifiedName s_surrogateDataAnnotationName; + internal static XmlQualifiedName SurrogateDataAnnotationName + { + get + { + if (s_surrogateDataAnnotationName == null) + s_surrogateDataAnnotationName = new XmlQualifiedName(Globals.SurrogateDataLocalName, Globals.SerializationNamespace); + return s_surrogateDataAnnotationName; + } + } + + private static XmlQualifiedName s_defaultValueAnnotation; + internal static XmlQualifiedName DefaultValueAnnotation + { + get + { + if (s_defaultValueAnnotation == null) + s_defaultValueAnnotation = new XmlQualifiedName(Globals.DefaultValueLocalName, Globals.SerializationNamespace); + return s_defaultValueAnnotation; + } + } + + private static XmlQualifiedName s_actualTypeAnnotationName; + internal static XmlQualifiedName ActualTypeAnnotationName + { + get + { + if (s_actualTypeAnnotationName == null) + s_actualTypeAnnotationName = new XmlQualifiedName(Globals.ActualTypeLocalName, Globals.SerializationNamespace); + return s_actualTypeAnnotationName; + } + } + + private static XmlQualifiedName s_isDictionaryAnnotationName; + internal static XmlQualifiedName IsDictionaryAnnotationName + { + get + { + if (s_isDictionaryAnnotationName == null) + s_isDictionaryAnnotationName = new XmlQualifiedName(Globals.IsDictionaryLocalName, Globals.SerializationNamespace); + return s_isDictionaryAnnotationName; + } + } + + private static XmlQualifiedName s_isValueTypeName; + internal static XmlQualifiedName IsValueTypeName + { + get + { + if (s_isValueTypeName == null) + s_isValueTypeName = new XmlQualifiedName(Globals.IsValueTypeLocalName, Globals.SerializationNamespace); + return s_isValueTypeName; + } + } + + // Property is not stored in a local because XmlSchemaAttribute is mutable. + // The schema export process should not expose objects that may be modified later. + internal static XmlSchemaAttribute ISerializableFactoryTypeAttribute + { + get + { + XmlSchemaAttribute iSerializableFactoryTypeAttribute = new XmlSchemaAttribute(); + iSerializableFactoryTypeAttribute.RefName = new XmlQualifiedName(Globals.ISerializableFactoryTypeLocalName, Globals.SerializationNamespace); + return iSerializableFactoryTypeAttribute; + } + } + + // Property is not stored in a local because XmlSchemaAttribute is mutable. + // The schema export process should not expose objects that may be modified later. + internal static XmlSchemaAttribute RefAttribute + { + get + { + XmlSchemaAttribute refAttribute = new XmlSchemaAttribute(); + refAttribute.RefName = Globals.RefQualifiedName; + return refAttribute; + } + } + + // Property is not stored in a local because XmlSchemaAttribute is mutable. + // The schema export process should not expose objects that may be modified later. + internal static XmlSchemaAttribute IdAttribute + { + get + { + XmlSchemaAttribute idAttribute = new XmlSchemaAttribute(); + idAttribute.RefName = Globals.IdQualifiedName; + return idAttribute; + } + } } } - diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlDataContract.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlDataContract.cs index c318c5acc357..4a792550b2fa 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlDataContract.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlDataContract.cs @@ -84,6 +84,12 @@ public override XmlDictionaryString TopLevelElementNamespace { _helper.TopLevelElementNamespace = value; } } + internal bool IsTopLevelElementNullable + { + get { return _helper.IsTopLevelElementNullable; } + set { _helper.IsTopLevelElementNullable = value; } + } + #if uapaot private CreateXmlSerializableDelegate _createXmlSerializableDelegate; public CreateXmlSerializableDelegate CreateXmlSerializableDelegate @@ -143,6 +149,7 @@ private class XmlDataContractCriticalHelper : DataContract.DataContractCriticalH private bool _isKnownTypeAttributeChecked; private XmlDictionaryString _topLevelElementName; private XmlDictionaryString _topLevelElementNamespace; + private bool _isTopLevelElementNullable; private bool _hasRoot; private CreateXmlSerializableDelegate _createXmlSerializable; private XmlSchemaType _xsdType; @@ -173,6 +180,7 @@ internal XmlDataContractCriticalHelper(Type type) : base(type) { _topLevelElementName = Name; _topLevelElementNamespace = (this.StableName.Namespace == Globals.SchemaNamespace) ? DictionaryGlobals.EmptyString : Namespace; + _isTopLevelElementNullable = true; } } else @@ -180,6 +188,7 @@ internal XmlDataContractCriticalHelper(Type type) : base(type) if (hasRoot) { XmlRootAttribute xmlRootAttribute = (XmlRootAttribute)xmlRootAttributes[0]; + _isTopLevelElementNullable = xmlRootAttribute.IsNullable; string elementName = xmlRootAttribute.ElementName; _topLevelElementName = (elementName == null || elementName.Length == 0) ? Name : dictionary.Add(DataContract.EncodeLocalName(elementName)); string elementNs = xmlRootAttribute.Namespace; @@ -247,6 +256,13 @@ internal override XmlDictionaryString TopLevelElementNamespace set { _topLevelElementNamespace = value; } } + + internal bool IsTopLevelElementNullable + { + get { return _isTopLevelElementNullable; } + set { _isTopLevelElementNullable = value; } + } + internal CreateXmlSerializableDelegate CreateXmlSerializableDelegate { get { return _createXmlSerializable; } diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs index 1e341bb688c2..96dd473d519c 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs @@ -136,7 +136,9 @@ private object InternalDeserializeWithSurrogate(XmlReaderDelegator xmlReader, Ty private Type ResolveDataContractTypeInSharedTypeMode(string assemblyName, string typeName, out Assembly assembly) { - throw new PlatformNotSupportedException(); + // The method is used only when _mode == SerializationMode.SharedType. + // _mode is set to SerializationMode.SharedType only when the context is for NetDataContractSerializer. + throw new PlatformNotSupportedException(SR.PlatformNotSupported_NetDataContractSerializer); } private DataContract ResolveDataContractInSharedTypeMode(string assemblyName, string typeName, out Assembly assembly, out Type type) diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs index 1129e41d5981..eaad7ea29194 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs @@ -36,11 +36,7 @@ public XmlSchemaSet Schemas { get { - //XmlSchemaSet schemaSet = GetSchemaSet(); - //SchemaImporter.CompileSchemaSet(schemaSet); - //return schemaSet; - // SchemaImporter is not available. - throw new PlatformNotSupportedException("SchemaImporter"); + throw new PlatformNotSupportedException(SR.PlatformNotSupported_SchemaImporter); } } @@ -58,34 +54,23 @@ DataContractSet DataContractSet { get { - throw new PlatformNotSupportedException(); + // On full framework , we set _dataContractSet = Options.GetSurrogate()); + // But Options.GetSurrogate() is not available on NetCore because IDataContractSurrogate + // is not in NetStandard. + throw new PlatformNotSupportedException(SR.PlatformNotSupported_IDataContractSurrogate); } } void TraceExportBegin() { - // System.IdentityModel.Services.DiagnosticUtility.ShouldTraceInformation is not available. - - //if (DiagnosticUtility.ShouldTraceInformation) - //{ - // TraceUtility.Trace(TraceEventType.Information, TraceCode.XsdExportBegin, SR.Format(SR.TraceCodeXsdExportBegin)); - //} } void TraceExportEnd() { - //if (DiagnosticUtility.ShouldTraceInformation) - //{ - // TraceUtility.Trace(TraceEventType.Information, TraceCode.XsdExportEnd, SR.Format(SR.TraceCodeXsdExportEnd)); - //} } void TraceExportError(Exception exception) { - //if (DiagnosticUtility.ShouldTraceError) - //{ - // TraceUtility.Trace(TraceEventType.Error, TraceCode.XsdExportError, SR.Format(SR.TraceCodeXsdExportError), null, exception); - //} } public void Export(ICollection assemblies) diff --git a/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs b/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs index fd07586e1052..e8b32f1283c4 100644 --- a/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs +++ b/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs @@ -151,7 +151,7 @@ public static XmlDictionaryReader CreateMtomReader(Stream stream, Encoding[] enc public static XmlDictionaryReader CreateMtomReader(Stream stream, Encoding[] encodings, string contentType, XmlDictionaryReaderQuotas quotas, int maxBufferSize, OnXmlDictionaryReaderClose onClose) { - throw new PlatformNotSupportedException(); + throw new PlatformNotSupportedException(SR.PlatformNotSupported_MtomEncoding); } public static XmlDictionaryReader CreateMtomReader(byte[] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas) @@ -175,7 +175,7 @@ public static XmlDictionaryReader CreateMtomReader(byte[] buffer, int offset, in public static XmlDictionaryReader CreateMtomReader(byte[] buffer, int offset, int count, Encoding[] encodings, string contentType, XmlDictionaryReaderQuotas quotas, int maxBufferSize, OnXmlDictionaryReaderClose onClose) { - throw new PlatformNotSupportedException(); + throw new PlatformNotSupportedException(SR.PlatformNotSupported_MtomEncoding); } public virtual bool CanCanonicalize diff --git a/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs b/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs index 5dbb5eb8dcf4..1e1fb5fdb202 100644 --- a/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs @@ -66,7 +66,7 @@ public static XmlDictionaryWriter CreateMtomWriter(Stream stream, Encoding encod public static XmlDictionaryWriter CreateMtomWriter(Stream stream, Encoding encoding, int maxSizeInBytes, string startInfo, string boundary, string startUri, bool writeMessageHeaders, bool ownsStream) { - throw new PlatformNotSupportedException(); + throw new PlatformNotSupportedException(SR.PlatformNotSupported_MtomEncoding); } public static XmlDictionaryWriter CreateDictionaryWriter(XmlWriter writer) From 2f26a644670bd2ab09375e3c04fc3d2a21cfb88b Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Mon, 17 Apr 2017 23:45:24 -0700 Subject: [PATCH 125/336] Disable ConfigurationSaveTest class (#18536) --- .../tests/Mono/ConfigurationSaveTest.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index 14b623c60002..820ccf1228f9 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -333,6 +333,7 @@ static void AssertListElement(XPathNavigator nav, TestLabel label) #region Tests [Fact] + [ActiveIssue(18431)] public void DefaultValues() { Run("DefaultValues", (config, label) => @@ -350,8 +351,8 @@ public void DefaultValues() }); } - [ActiveIssue(18431)] [Fact] + [ActiveIssue(18431)] public void AddDefaultListElement() { Run("AddDefaultListElement", (config, label) => @@ -373,8 +374,8 @@ public void AddDefaultListElement() }); } - [ActiveIssue(18431)] [Fact] + [ActiveIssue(18431)] public void AddDefaultListElement2() { Run("AddDefaultListElement2", (config, label) => @@ -411,6 +412,7 @@ public void AddDefaultListElement2() } [Fact] + [ActiveIssue(18431)] public void AddDefaultListElement3() { Run("AddDefaultListElement3", (config, label) => @@ -481,6 +483,7 @@ public void AddDefaultListElement3() } [Fact] + [ActiveIssue(18431)] public void AddListElement() { Run("AddListElement", (config, label) => @@ -549,6 +552,7 @@ public void NotModifiedAfterSave() } [Fact] + [ActiveIssue(18431)] public void AddSection() { Run("AddSection", (config, label) => @@ -564,6 +568,7 @@ public void AddSection() } [Fact] + [ActiveIssue(18431)] public void AddElement() { Run("AddElement", (config, label) => @@ -613,8 +618,8 @@ public void AddElement() }); } - [ActiveIssue(18431)] [Fact] + [ActiveIssue(18431)] public void ModifyListElement() { Run("ModifyListElement", (config, label) => @@ -634,8 +639,8 @@ public void ModifyListElement() }); } - [ActiveIssue(18431)] [Fact] + [ActiveIssue(18431)] public void ModifyListElement2() { Run("ModifyListElement2", (config, label) => From b802cc333f122e8828b92cb5b7363e00483d5191 Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Mon, 17 Apr 2017 23:46:32 -0700 Subject: [PATCH 126/336] Disable tests for netfx (#18534) --- src/System.IO/tests/StreamWriter/StreamWriter.WriteTests.cs | 1 + src/System.IO/tests/StringWriter/StringWriterTests.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/System.IO/tests/StreamWriter/StreamWriter.WriteTests.cs b/src/System.IO/tests/StreamWriter/StreamWriter.WriteTests.cs index bb37d673986b..b4e822946a19 100644 --- a/src/System.IO/tests/StreamWriter/StreamWriter.WriteTests.cs +++ b/src/System.IO/tests/StreamWriter/StreamWriter.WriteTests.cs @@ -195,6 +195,7 @@ public void NullStreamThrows() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework throws NullReferenceException")] public async Task NullNewLineAsync() { using (MemoryStream ms = new MemoryStream()) diff --git a/src/System.IO/tests/StringWriter/StringWriterTests.cs b/src/System.IO/tests/StringWriter/StringWriterTests.cs index 0cf17fef5184..29da2171096f 100644 --- a/src/System.IO/tests/StringWriter/StringWriterTests.cs +++ b/src/System.IO/tests/StringWriter/StringWriterTests.cs @@ -391,6 +391,7 @@ public static void TestWriteLineAsyncCharArray() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework throws NullReferenceException")] public async Task NullNewLineAsync() { using (MemoryStream ms = new MemoryStream()) From 0ffd09d727ad4b579f89ace6b71d282b06193105 Mon Sep 17 00:00:00 2001 From: Shimmy Date: Tue, 18 Apr 2017 12:20:18 +0300 Subject: [PATCH 127/336] Improved readability (#18541) Using pattern matching --- .../src/System/ComponentModel/DataAnnotations/Validator.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs b/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs index 15a2cdcf7770..9e5a959c325b 100644 --- a/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs +++ b/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs @@ -462,9 +462,8 @@ private static IEnumerable GetObjectValidationErrors(object ins return errors; } - // Step 3: Test for IValidatableObject implementation - var validatable = instance as IValidatableObject; - if (validatable != null) + // Step 3: Test for IValidatableObject implementation + if (instance is IValidatableObject validatable) { var results = validatable.Validate(validationContext); From eadf77294e750fcbc80985d39deb05fc3f16ae0f Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Tue, 18 Apr 2017 03:16:57 -0700 Subject: [PATCH 128/336] Disable test for NETFX (#18535) --- .../tests/Normalization/StringNormalizationTests.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs b/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs index b74087c5acd8..ed9f72904abb 100644 --- a/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs +++ b/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs @@ -30,7 +30,12 @@ public void IsNormalized_Invalid() Assert.Throws("strInput", () => "\uFFFE".IsNormalized()); // Invalid codepoint Assert.Throws("strInput", () => "\uD800\uD800".IsNormalized()); // Invalid surrogate pair + } + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Regular method on full framework: no point invoking on a null reference")] + public void IsNormalized_Null() + { Assert.Throws("strInput", () => StringNormalizationExtensions.IsNormalized(null)); } @@ -62,7 +67,12 @@ public void Normalize_Invalid() Assert.Throws("strInput", () => "\uFFFE".Normalize()); // Invalid codepoint Assert.Throws("strInput", () => "\uD800\uD800".Normalize()); // Invalid surrogate pair + } + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Regular method on full framework: no point invoking on a null reference")] + public void Normalize_Null() + { Assert.Throws("strInput", () => StringNormalizationExtensions.Normalize(null)); } } From 0bc3bfb199d27609363f62ed10ecf07fdd0f8b39 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Tue, 18 Apr 2017 07:10:09 -0700 Subject: [PATCH 129/336] Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25218-02, preview1-25218-02, beta-25218-01, beta-25218-01, preview1-25218-01, respectively --- dependencies.props | 22 +++++++++++----------- external/test-runtime/optional.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dependencies.props b/dependencies.props index 17eab851bb0c..afe02f3b370f 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,24 +9,24 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 9912be5588df727a968c803c3bba64d109a1c86a - af313dccb7aff26364a85300da16d39a783c86cd + 4ddbf159025d0c1f43f7e8132d514e4949b5f531 + 4ddbf159025d0c1f43f7e8132d514e4949b5f531 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - 771c73b52721b6d24e48e0093c169b48ec4a0ab5 - 771c73b52721b6d24e48e0093c169b48ec4a0ab5 + 4ddbf159025d0c1f43f7e8132d514e4949b5f531 + 4ddbf159025d0c1f43f7e8132d514e4949b5f531 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 737d95c99c0dc7e489334bf16621e76d639fd9a4 + 4ddbf159025d0c1f43f7e8132d514e4949b5f531 - preview1-25217-04 - preview1-25215-03 + preview1-25218-02 + preview1-25218-02 beta-25016-01 - beta-25217-00 - beta-25217-00 - 1.0.0-beta-25217-00 - 2.0.0-preview1-25217-01 + beta-25218-01 + beta-25218-01 + 1.0.0-beta-25218-01 + 2.0.0-preview1-25218-01 NETStandard.Library 4.4.0-beta-25007-02 diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index 79ce39d15b0f..4fe64b72e4d3 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25217-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25218-01" } } } From aa01d380b438a4426d623bb81256323a4bba193c Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 17 Apr 2017 15:40:40 -0700 Subject: [PATCH 130/336] Make System.Diagnostics.Tracing a partial facade that includes EventCounter implementation on all platforms. --- .../src/System.Diagnostics.Tracing.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj b/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj index 810eb528eac4..4f8307d8d9d8 100644 --- a/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj +++ b/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj @@ -21,7 +21,7 @@ - + From 87bdbd66dfb5e4568b57b64afb50d5abfe209121 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 10:54:53 -0400 Subject: [PATCH 131/336] Disable System.Threading.Tasks tests for netfx --- .../tests/CancellationTokenTests.cs | 1 + .../tests/UnwrapTests.cs | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/System.Threading.Tasks/tests/CancellationTokenTests.cs b/src/System.Threading.Tasks/tests/CancellationTokenTests.cs index 3592ecf51288..5b69490ed0e9 100644 --- a/src/System.Threading.Tasks/tests/CancellationTokenTests.cs +++ b/src/System.Threading.Tasks/tests/CancellationTokenTests.cs @@ -180,6 +180,7 @@ public static void TokenSourceDispose() tokenSource.Dispose(); //Repeat calls to Dispose should be ok. } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Relies on quirked behavior to not throw in token.Register when already disposed")] [Fact] public static void TokenSourceDispose_Negative() { diff --git a/src/System.Threading.Tasks/tests/UnwrapTests.cs b/src/System.Threading.Tasks/tests/UnwrapTests.cs index 2ea810635eb5..20823a523f52 100644 --- a/src/System.Threading.Tasks/tests/UnwrapTests.cs +++ b/src/System.Threading.Tasks/tests/UnwrapTests.cs @@ -30,10 +30,24 @@ public void NonGeneric_Completed_Completed(Task inner) Task outer = Task.FromResult(inner); Task unwrappedInner = outer.Unwrap(); Assert.True(unwrappedInner.IsCompleted); - Assert.Same(inner, unwrappedInner); AssertTasksAreEqual(inner, unwrappedInner); } + /// + /// Tests Unwrap when both the outer task and non-generic inner task have completed by the time Unwrap is called. + /// + /// Will be run with a RanToCompletion, Faulted, and Canceled task. + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core optimization to return the exact same object")] + [Theory] + [MemberData(nameof(CompletedNonGenericTasks))] + public void NonGeneric_Completed_Completed_OptimizeToUseSameInner(Task inner) + { + Task outer = Task.FromResult(inner); + Task unwrappedInner = outer.Unwrap(); + Assert.True(unwrappedInner.IsCompleted); + Assert.Same(inner, unwrappedInner); + } + /// /// Tests Unwrap when both the outer task and generic inner task have completed by the time Unwrap is called. /// @@ -45,10 +59,24 @@ public void Generic_Completed_Completed(Task inner) Task> outer = Task.FromResult(inner); Task unwrappedInner = outer.Unwrap(); Assert.True(unwrappedInner.IsCompleted); - Assert.Same(inner, unwrappedInner); AssertTasksAreEqual(inner, unwrappedInner); } + /// + /// Tests Unwrap when both the outer task and generic inner task have completed by the time Unwrap is called. + /// + /// The inner task. + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core optimization to return the exact same object")] + [Theory] + [MemberData(nameof(CompletedStringTasks))] + public void Generic_Completed_Completed_OptimizeToUseSameInner(Task inner) + { + Task> outer = Task.FromResult(inner); + Task unwrappedInner = outer.Unwrap(); + Assert.True(unwrappedInner.IsCompleted); + Assert.Same(inner, unwrappedInner); + } + /// /// Tests Unwrap when the non-generic inner task has completed but the outer task has not completed by the time Unwrap is called. /// From 31b80e49c268d25dac6ed5b7849cb1c1f1f8de00 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 17 Apr 2017 13:46:05 -0700 Subject: [PATCH 132/336] Directly reference DBNull Clean up some old reflection references to DBNull and statically reference it now. --- .../Serialization/ClassDataContract.cs | 6 ++-- .../System/Runtime/Serialization/Globals.cs | 34 +++---------------- .../src/System/Xml/Serialization/Globals.cs | 30 ---------------- .../ReflectionXmlSerializationReader.cs | 14 ++++---- .../ReflectionXmlSerializationWriter.cs | 6 ++-- .../XmlSerializationReaderILGen.cs | 2 +- .../XmlSerializationWriterILGen.cs | 12 +++---- 7 files changed, 24 insertions(+), 80 deletions(-) diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ClassDataContract.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ClassDataContract.cs index 57e074ab2fea..df45273e30b1 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ClassDataContract.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ClassDataContract.cs @@ -329,7 +329,7 @@ internal static ClassDataContract CreateClassDataContractForKeyValue(Type type, { ClassDataContract cloned = cdc.Clone(); cloned.UpdateNamespaceAndMembers(type, ns, memberNames); - return cloned; + return cloned; } } @@ -1044,7 +1044,7 @@ private void ImportDataMembers() // Previously System.SerializableAttribute was not available in NetCore, so we had // a list of known [Serializable] types for type in the framework. Although now SerializableAttribute - // is available in NetCore, some framework types still do not have [Serializable] + // is available in NetCore, some framework types still do not have [Serializable] // yet, e.g. ReadOnlyDictionary. So, we still need to maintain the known serializable // type list. if (IsKnownSerializableType(type)) @@ -1172,7 +1172,7 @@ private XmlQualifiedName GetStableNameAndSetHasDataContract(Type type) /// /// RequiresReview - marked SRR because callers may need to depend on isNonAttributedType for a security decision /// isNonAttributedType must be calculated correctly - /// SetIsNonAttributedType should not be called before GetStableNameAndSetHasDataContract since it + /// SetIsNonAttributedType should not be called before GetStableNameAndSetHasDataContract since it /// is dependent on the correct calculation of hasDataContract /// Safe - does not let caller influence isNonAttributedType calculation; no harm in leaking value /// diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs index ef25799a34b5..9a6dc10f2cd9 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Globals.cs @@ -792,38 +792,17 @@ internal static Type TypeOfXmlNodeArray } } - private static bool s_shouldGetDBNullType = true; - private static Type s_typeOfDBNull; internal static Type TypeOfDBNull { - get + get { - if (s_typeOfDBNull == null && s_shouldGetDBNullType) - { - s_typeOfDBNull = Type.GetType("System.DBNull, System.Data.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", false); - s_shouldGetDBNullType = false; - } + if (s_typeOfDBNull == null) + s_typeOfDBNull = typeof(DBNull); return s_typeOfDBNull; } } - private static object s_valueOfDBNull; - internal static object ValueOfDBNull - { - get - { - if (s_valueOfDBNull == null && TypeOfDBNull != null) - { - var fieldInfo = TypeOfDBNull.GetField("Value"); - if (fieldInfo != null) - s_valueOfDBNull = fieldInfo.GetValue(null); - } - - return s_valueOfDBNull; - } - } - private static Uri s_dataContractXsdBaseNamespaceUri; internal static Uri DataContractXsdBaseNamespaceUri { @@ -909,11 +888,6 @@ internal static object ScriptObjectJsonDeserialize(string json) return Globals.s_deserializeFunc(json); } - internal static bool IsDBNullValue(object o) - { - return o != null && ValueOfDBNull != null && ValueOfDBNull.Equals(o); - } - public const bool DefaultIsRequired = false; public const bool DefaultEmitDefaultValue = true; public const int DefaultOrder = 0; @@ -1036,7 +1010,7 @@ internal static bool IsDBNullValue(object o) - + diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/Globals.cs b/src/System.Private.Xml/src/System/Xml/Serialization/Globals.cs index 9c2177c6d037..b3891a2f15dd 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/Globals.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/Globals.cs @@ -16,36 +16,6 @@ namespace System.Xml.Serialization { internal static class Globals { - [SecurityCritical] - private static Type s_typeOfDBNull; - internal static Type TypeOfDBNull - { - [SecuritySafeCritical] - get - { - if (s_typeOfDBNull == null) - s_typeOfDBNull = Type.GetType("System.DBNull, System.Data.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", false); - return s_typeOfDBNull; - } - } - - [SecurityCritical] - private static object s_valueOfDBNull; - internal static object ValueOfDBNull - { - [SecuritySafeCritical] - get - { - if (s_valueOfDBNull == null && TypeOfDBNull != null) - s_valueOfDBNull = TypeOfDBNull.GetField("Value").GetValue(null); - return s_valueOfDBNull; - } - } - - internal static bool IsDBNullValue(object o) - { - return o != null && ValueOfDBNull != null && ValueOfDBNull.Equals(o); - } internal static Exception NotSupported(string msg) { System.Diagnostics.Debug.Assert(false, msg); diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs index 9c1af3d944a5..b206c6b096b3 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs @@ -355,8 +355,8 @@ private bool WriteMemberText(out object o, Member anyText) private bool IsSequence(Member[] members) { - // #10586: Currently the reflection based method treat this kind of type as normal types. - // But potentially we can do some optimization for types that have ordered properties. + // #10586: Currently the reflection based method treat this kind of type as normal types. + // But potentially we can do some optimization for types that have ordered properties. //for (int i = 0; i < members.Length; i++) //{ @@ -371,7 +371,7 @@ private void WriteMemberElementsIf(ref object o, CollectionMember collectionMemb bool isSequence = IsSequence(expectedMembers); if (isSequence) { - // #10586: Currently the reflection based method treat this kind of type as normal types. + // #10586: Currently the reflection based method treat this kind of type as normal types. // But potentially we can do some optimization for types that have ordered properties. } @@ -472,7 +472,7 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme value = null; } } - else if ((element.Default != null && !Globals.IsDBNullValue(element.Default) && element.Mapping.TypeDesc.IsValueType) + else if ((element.Default != null && element.Default != DBNull.Value && element.Mapping.TypeDesc.IsValueType) && (Reader.IsEmptyElement)) { Reader.Skip(); @@ -584,7 +584,7 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme if (sm.DerivedMappings != null) { - // #10587: To Support SpecialMapping Types Having DerivedMappings + // #10587: To Support SpecialMapping Types Having DerivedMappings throw new NotImplementedException("sm.DerivedMappings != null"); //WriteDerivedSerializable(sm, sm, source, isWrappedAny); //WriteUnknownNode("UnknownNode", "null", null, true); @@ -1218,7 +1218,7 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull if (isSequence) { - // #10586: Currently the reflection based method treat this kind of type as normal types. + // #10586: Currently the reflection based method treat this kind of type as normal types. // But potentially we can do some optimization for types that have ordered properties. } @@ -1294,7 +1294,7 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull bool IsSequenceAllMembers = IsSequence(allMembers); if (IsSequenceAllMembers) { - // #10586: Currently the reflection based method treat this kind of type as normal types. + // #10586: Currently the reflection based method treat this kind of type as normal types. // But potentially we can do some optimization for types that have ordered properties. } diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs index 7ed864eadbe4..daa54c38a194 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs @@ -470,7 +470,7 @@ private XmlSerializationWriteCallback CreateXmlSerializationWriteCallback(TypeMa private void WriteQualifiedNameElement(string name, string ns, object defaultValue, XmlQualifiedName o, bool nullable, bool isSoap, PrimitiveMapping mapping) { - bool hasDefault = defaultValue != null && !Globals.IsDBNullValue(defaultValue) && mapping.TypeDesc.HasDefaultSupport; + bool hasDefault = defaultValue != null && defaultValue != DBNull.Value && mapping.TypeDesc.HasDefaultSupport; if (hasDefault && IsDefaultValue(mapping, o, defaultValue, nullable)) return; @@ -886,7 +886,7 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe private bool CanOptimizeWriteListSequence(TypeDesc listElementTypeDesc) { // check to see if we can write values of the attribute sequentially - // currently we have only one data type (XmlQualifiedName) that we can not write "inline", + // currently we have only one data type (XmlQualifiedName) that we can not write "inline", // because we need to output xmlns:qx="..." for each of the qnames return (listElementTypeDesc != null && listElementTypeDesc != QnameTypeDesc); } @@ -944,7 +944,7 @@ private bool WriteDerivedTypes(StructMapping mapping, string n, string ns, objec private void WritePrimitive(WritePrimitiveMethodRequirement method, string name, string ns, object defaultValue, object o, TypeMapping mapping, bool writeXsiType, bool isElement, bool isNullable) { TypeDesc typeDesc = mapping.TypeDesc; - bool hasDefault = defaultValue != null && !Globals.IsDBNullValue(defaultValue) && mapping.TypeDesc.HasDefaultSupport; + bool hasDefault = defaultValue != null && defaultValue != DBNull.Value && mapping.TypeDesc.HasDefaultSupport; if (hasDefault) { if (mapping is EnumMapping) diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReaderILGen.cs b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReaderILGen.cs index 6d5b0e532324..f5d9841e3faa 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReaderILGen.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReaderILGen.cs @@ -3015,7 +3015,7 @@ private void WriteElement(string source, string arrayName, string choiceSource, ilg.Else(); doEndIf = true; } - if (element.Default != null && !Globals.IsDBNullValue(element.Default) && element.Mapping.TypeDesc.IsValueType) + if (element.Default != null && element.Default != DBNull.Value && element.Mapping.TypeDesc.IsValueType) { MethodInfo XmlSerializationReader_get_Reader = typeof(XmlSerializationReader).GetMethod( "get_Reader", diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriterILGen.cs b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriterILGen.cs index 6f86507a4019..dc50b39a0a88 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriterILGen.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationWriterILGen.cs @@ -92,7 +92,7 @@ private void GenerateInitCallbacksMethod() private void WriteQualifiedNameElement(string name, string ns, object defaultValue, SourceInfo source, bool nullable, TypeMapping mapping) { - bool hasDefault = defaultValue != null && !Globals.IsDBNullValue(defaultValue); + bool hasDefault = defaultValue != null && defaultValue != DBNull.Value; if (hasDefault) { throw Globals.NotSupported("XmlQualifiedName DefaultValue not supported. Fail in WriteValue()"); @@ -195,7 +195,7 @@ private void WritePrimitiveValue(TypeDesc typeDesc, SourceInfo source, out Type private void WritePrimitive(string method, string name, string ns, object defaultValue, SourceInfo source, TypeMapping mapping, bool writeXsiType, bool isElement, bool isNullable) { TypeDesc typeDesc = mapping.TypeDesc; - bool hasDefault = defaultValue != null && !Globals.IsDBNullValue(defaultValue) && mapping.TypeDesc.HasDefaultSupport; + bool hasDefault = defaultValue != null && defaultValue != DBNull.Value && mapping.TypeDesc.HasDefaultSupport; if (hasDefault) { if (mapping is EnumMapping) @@ -377,7 +377,7 @@ private string GenerateMembersElement(XmlMembersMapping xmlMembersMapping) ilg.Ldarg(0); ilg.Call(XmlSerializationWriter_TopLevelElement); - // in the top-level method add check for the parameters length, + // in the top-level method add check for the parameters length, // because visual basic does not have a concept of an parameter it uses instead // so sometime we think that we have more parameters then supplied LocalBuilder pLengthLoc = ilg.DeclareLocal(typeof(int), "pLength"); @@ -1143,7 +1143,7 @@ private void WriteStructMethod(StructMapping mapping) private bool CanOptimizeWriteListSequence(TypeDesc listElementTypeDesc) { // check to see if we can write values of the attribute sequentially - // currently we have only one data type (XmlQualifiedName) that we can not write "inline", + // currently we have only one data type (XmlQualifiedName) that we can not write "inline", // because we need to output xmlns:qx="..." for each of the qnames return (listElementTypeDesc != null && listElementTypeDesc != QnameTypeDesc); @@ -2387,9 +2387,9 @@ internal void ILGenForCreateInstance(CodeGenerator ilg, Type type, bool ctorInac internal void ILGenForCreateInstance(CodeGenerator ilg, Type type, Type cast, bool nonPublic) { // Special case DBNull - if (type == Globals.TypeOfDBNull) + if (type == typeof(DBNull)) { - FieldInfo DBNull_Value = Globals.TypeOfDBNull.GetField("Value", CodeGenerator.StaticBindingFlags); + FieldInfo DBNull_Value = type.GetField("Value", CodeGenerator.StaticBindingFlags); ilg.LoadMember(DBNull_Value); return; } From b43b4df2e0e2182154bb0f425cb4a61bc1269828 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Tue, 18 Apr 2017 09:52:02 -0700 Subject: [PATCH 133/336] Bulk updates of tests for AssertExtensions (#18491) Bulk update to AssertExtensions.Throws for AOT support. This doesn't disable Assert.Throws. --- src/Common/tests/System/AssertExtensions.cs | 15 +- .../Collections/ICollection.Generic.Tests.cs | 4 +- .../System/Collections/IDictionaryTest.cs | 2 +- .../AlgorithmImplementations/DES/DesTests.cs | 11 +- .../ECDsa/ECDsaTestData.cs | 1 + .../ECDsa/ECDsaTests.cs | 49 +-- .../Microsoft.Win32.Primitives.Tests.csproj | 3 + .../tests/Win32Exception.cs | 3 +- .../Microsoft.Win32.Registry.Tests.csproj | 3 + .../Registry/Registry_Getvalue_str_str_obj.cs | 2 +- .../tests/ArrayPool/UnitTests.cs | 11 +- .../tests/System.Buffers.Tests.csproj | 3 + .../tests/CSharpCodeGenerationTests.cs | 2 +- .../CodeCollections/CodeCollectionTestBase.cs | 27 +- .../CodeNamespaceImportCollectionTests.cs | 11 +- .../CodeTypeReferenceCollectionTests.cs | 4 +- .../TempFileCollectionTests.cs | 12 +- .../CodeArrayCreateExpressionTests.cs | 20 +- .../CodeArrayIndexerExpressionTests.cs | 6 +- .../CodeDelegateInvokeExpressionTests.cs | 6 +- .../CodeIndexerExpressionTests.cs | 6 +- .../CodeMethodInvokeExpressionTests.cs | 6 +- .../CodeMethodReferenceExpressionTests.cs | 4 +- .../CodeObjectCreateExpressionTests.cs | 14 +- .../CodeObjects/CodeTypeReferenceTests.cs | 10 +- .../tests/CodeStatements/CodeGotoStatement.cs | 6 +- .../CodeIterationStatementTests.cs | 6 +- .../CodeTryCatchFinallyStatementTests.cs | 22 +- .../CodeTypeOfExpressionTests.cs | 4 +- .../CodeTypeReferenceExpressionTests.cs | 4 +- .../CodeVariableDeclarationStatementTests.cs | 6 +- .../CodeTypeMembers/CodeMemberFieldTests.cs | 4 +- .../tests/Compiler/CodeDomProviderTests.cs | 27 +- .../CSharp/CSharpCodeProviderTests.cs | 2 +- .../VisualBasic/VBCodeProviderTests.cs | 2 +- .../Other/CodeAttributeDeclarationTests.cs | 8 +- .../tests/Other/CodeCatchClauseTests.cs | 6 +- .../tests/System.CodeDom.Tests.csproj | 3 + .../tests/VBCodeGenerationTests.cs | 2 +- .../tests/ProducerConsumerCollectionTests.cs | 7 +- ...System.Collections.Concurrent.Tests.csproj | 3 + .../tests/ImmutableArrayBuilderTest.cs | 38 +- .../tests/ImmutableArrayExtensionsTest.cs | 70 ++-- .../tests/ImmutableArrayTest.cs | 154 +++---- .../ImmutableDictionaryBuilderTestBase.cs | 2 +- .../tests/ImmutableDictionaryTest.cs | 6 +- .../tests/ImmutableDictionaryTestBase.cs | 2 +- .../tests/ImmutableHashSetBuilderTest.cs | 22 +- .../tests/ImmutableListBuilderTest.cs | 22 +- .../tests/ImmutableListTest.cs | 62 +-- .../tests/ImmutableListTestBase.cs | 2 +- .../tests/ImmutableQueueTest.cs | 4 +- .../tests/ImmutableSortedSetBuilderTest.cs | 26 +- .../tests/ImmutableSortedSetTest.cs | 4 +- .../tests/ImmutableStackTest.cs | 4 +- .../tests/RequiresTests.cs | 14 +- .../tests/ArrayListTests.cs | 106 ++--- .../CaseInsensitiveHashCodeProviderTests.cs | 6 +- .../tests/CaseInsentiveComparerTests.cs | 4 +- .../tests/CollectionBaseTests.cs | 24 +- .../tests/ComparerTests.cs | 2 +- .../tests/DictionaryBaseTests.cs | 8 +- .../tests/HashtableTests.cs | 64 +-- .../tests/QueueTests.cs | 16 +- .../tests/SortedListTests.cs | 48 +-- .../tests/StackTests.cs | 10 +- .../tests/BitVector32Tests.cs | 4 +- .../HybridDictionary.AddTests.cs | 2 +- .../NameObjectCollectionBase.CopyToTests.cs | 4 +- ...eObjectCollectionBase.GetAllValuesTests.cs | 2 +- .../NameObjectCollectionBase.KeysTests.cs | 4 +- .../NameObjectCollectionBase.RemoveAtTests.cs | 4 +- .../NameValueCollection.AddNVCTests.cs | 2 +- .../NameValueCollection.CopyToTests.cs | 4 +- .../NameValueCollection.CtorTests.cs | 10 +- .../NameValueCollection.GetIntTests.cs | 6 +- .../NameValueCollection.GetItemTests.cs | 6 +- .../NameValueCollection.GetKeyTests.cs | 6 +- .../NameValueCollection.GetValuesIntTests.cs | 6 +- .../OrderedDictionaryTests.cs | 8 +- .../tests/StringCollectionTests.cs | 2 +- .../StringDictionary.AddTests.cs | 2 +- .../StringDictionary.ContainsKeyTests.cs | 2 +- .../StringDictionary.GetItemTests.cs | 2 +- .../StringDictionary.RemoveTests.cs | 2 +- .../StringDictionary.SetItemTests.cs | 2 +- .../tests/BitArray/BitArray_CtorTests.cs | 16 +- .../tests/BitArray/BitArray_GetSetTests.cs | 24 +- .../tests/BitArray/BitArray_OperatorsTests.cs | 6 +- .../BitArray_OperatorsTests.netcoreapp.cs | 4 +- .../Generic/CollectionExtensionsTests.cs | 18 +- .../Comparers/Comparer.Generic.Tests.cs | 2 +- .../Generic/Dictionary/Dictionary.Tests.cs | 14 +- .../HashSet.Generic.Tests.netcoreapp.cs | 10 +- .../LinkedList/LinkedList.Generic.Tests.cs | 4 +- .../Generic/List/List.Generic.Tests.Remove.cs | 2 +- .../Generic/Queue/Queue.Generic.Tests.cs | 8 +- .../SortedList/SortedList.Generic.Tests.cs | 6 +- .../Generic/SortedList/SortedList.Tests.cs | 4 +- .../SortedSet/SortedSet.Generic.Tests.cs | 4 +- .../SortedSet/SortedSet.TreeSubSet.Tests.cs | 6 +- .../Generic/Stack/Stack.Generic.Tests.cs | 8 +- .../tests/CompareAttributeTests.cs | 2 +- .../tests/RegularExpressionAttributeTests.cs | 2 +- .../tests/Schema/ColumnAttributeTests.cs | 3 +- .../Schema/DatabaseGeneratedAttributeTests.cs | 3 +- ...em.ComponentModel.Annotations.Tests.csproj | 3 + .../tests/ValidationAttributeTests.cs | 2 +- .../tests/ValidationResultTests.cs | 2 +- .../tests/AttributeCollectionTests.cs | 5 +- ....ComponentModel.TypeConverter.Tests.csproj | 3 + src/System.Console/tests/ConsoleEncoding.cs | 4 +- src/System.Console/tests/ReadAndWrite.cs | 6 +- .../tests/System.Console.Tests.csproj | 3 + .../tests/WindowAndCursorProps.cs | 66 +-- .../tests/System.Data.Common.Tests.csproj | 3 + .../Common/DataColumnMappingCollectionTest.cs | 7 +- .../SqlConnectionTest.RetrieveStatistics.cs | 28 +- .../FunctionalTests/SqlErrorCollectionTest.cs | 8 +- .../System.Data.SqlClient.Tests.csproj | 3 + .../tests/ProcessTests.cs | 7 +- .../System.Diagnostics.Process.Tests.csproj | 3 + .../tests/CorrelationManagerTests.cs | 5 +- ...ystem.Diagnostics.TraceSource.Tests.csproj | 3 + .../tests/TraceSourceClassTests.cs | 5 +- .../tests/CallInfoTests.cs | 9 +- .../tests/System.Dynamic.Runtime.Tests.csproj | 3 + .../tests/CalendarHelpers.cs | 30 +- .../GregorianCalendarCtor.cs | 4 +- .../KoreanCalendarToFourDigitYear.cs | 2 +- ...ystem.Globalization.Calendars.Tests.csproj | 3 + .../tests/GetStringComparerTests.cs | 11 +- .../IdnMappingUseStd3AsciiRulesTests.cs | 3 +- .../Normalization/StringNormalizationTests.cs | 2 +- ...stem.Globalization.Extensions.Tests.csproj | 3 + .../CharUnicodeInfo/CharUnicodeInfoTests.cs | 18 +- .../CompareInfo/CompareInfoTests.Compare.cs | 76 ++-- .../CompareInfo/CompareInfoTests.IndexOf.cs | 160 ++++---- .../CompareInfo/CompareInfoTests.IsPrefix.cs | 22 +- .../CompareInfo/CompareInfoTests.IsSuffix.cs | 22 +- .../CompareInfoTests.LastIndexOf.cs | 180 ++++---- .../tests/CompareInfo/CompareInfoTests.cs | 14 +- .../tests/CultureInfo/CultureInfoCtor.cs | 2 +- .../CultureInfo/CultureInfoCurrentCulture.cs | 4 +- .../CultureInfo/CultureInfoDateTimeFormat.cs | 2 +- .../CultureInfo/CultureInfoNumberFormat.cs | 2 +- .../tests/CultureInfo/CultureInfoReadOnly.cs | 2 +- .../DateTimeFormatInfoAMDesignator.cs | 2 +- .../DateTimeFormatInfoAbbreviatedDayNames.cs | 6 +- ...FormatInfoAbbreviatedMonthGenitiveNames.cs | 6 +- ...DateTimeFormatInfoAbbreviatedMonthNames.cs | 6 +- .../DateTimeFormatInfoCalendar.cs | 4 +- .../DateTimeFormatInfoCalendarWeekRule.cs | 2 +- .../DateTimeFormatInfoDayNames.cs | 6 +- .../DateTimeFormatInfoFirstDayOfWeek.cs | 2 +- .../DateTimeFormatInfoFullDateTimePattern.cs | 2 +- ...DateTimeFormatInfoGetAbbreviatedDayName.cs | 2 +- ...DateTimeFormatInfoGetAbbreviatedEraName.cs | 4 +- ...teTimeFormatInfoGetAbbreviatedMonthName.cs | 4 +- .../DateTimeFormatInfoGetDayName.cs | 2 +- .../DateTimeFormatInfoGetEra.cs | 2 +- .../DateTimeFormatInfoGetEraName.cs | 4 +- .../DateTimeFormatInfoGetMonthName.cs | 4 +- .../DateTimeFormatInfoLongDatePattern.cs | 2 +- .../DateTimeFormatInfoLongTimePattern.cs | 2 +- .../DateTimeFormatInfoMonthDayPattern.cs | 2 +- .../DateTimeFormatInfoMonthGenitiveNames.cs | 6 +- .../DateTimeFormatInfoMonthNames.cs | 6 +- .../DateTimeFormatInfoPMDesignator.cs | 2 +- .../DateTimeFormatInfoReadOnly.cs | 2 +- .../DateTimeFormatInfoShortDatePattern.cs | 2 +- .../DateTimeFormatInfoShortTimePattern.cs | 2 +- .../DateTimeFormatInfoShortestDayNames.cs | 6 +- .../DateTimeFormatInfoYearMonthPattern.cs | 2 +- .../NumberFormatInfoCurrencyDecimalDigits.cs | 4 +- ...umberFormatInfoCurrencyDecimalSeparator.cs | 2 +- .../NumberFormatInfoCurrencyGroupSeparator.cs | 2 +- .../NumberFormatInfoCurrencyGroupSizes.cs | 8 +- ...NumberFormatInfoCurrencyNegativePattern.cs | 4 +- ...NumberFormatInfoCurrencyPositivePattern.cs | 4 +- .../NumberFormatInfoCurrencySymbol.cs | 2 +- .../NumberFormatInfoNaNSymbol.cs | 2 +- .../NumberFormatInfoNegativeInfinitySymbol.cs | 2 +- .../NumberFormatInfoNegativeSign.cs | 2 +- .../NumberFormatInfoNumberDecimalDigits.cs | 4 +- .../NumberFormatInfoNumberDecimalSeparator.cs | 2 +- .../NumberFormatInfoNumberGroupSeparator.cs | 2 +- .../NumberFormatInfoNumberGroupSizes.cs | 8 +- .../NumberFormatInfoNumberNegativePattern.cs | 4 +- .../NumberFormatInfoPerMilleSymbol.cs | 2 +- .../NumberFormatInfoPercentDecimalDigits.cs | 4 +- ...NumberFormatInfoPercentDecimalSeparator.cs | 2 +- .../NumberFormatInfoPercentGroupSeparator.cs | 2 +- .../NumberFormatInfoPercentGroupSizes.cs | 8 +- .../NumberFormatInfoPercentNegativePattern.cs | 4 +- .../NumberFormatInfoPercentPositivePattern.cs | 4 +- .../NumberFormatInfoPercentSymbol.cs | 2 +- .../NumberFormatInfoPositiveInfinitySymbol.cs | 2 +- .../NumberFormatInfoPositiveSign.cs | 2 +- .../NumberFormatInfoReadOnly.cs | 2 +- .../RegionInfo/RegionInfoTests.Methods.cs | 4 +- .../tests/StringInfo/StringInfoCtor.cs | 2 +- .../StringInfoGetNextTextElement.cs | 8 +- .../StringInfoGetTextElementEnumerator.cs | 8 +- .../StringInfoParseCombiningCharacters.cs | 2 +- .../tests/StringInfo/StringInfoString.cs | 2 +- .../tests/TextInfo/TextInfoListSeparator.cs | 2 +- .../tests/TextInfo/TextInfoTests.cs | 4 +- .../tests/TextInfo/TextInfoToLower.cs | 2 +- .../tests/TextInfo/TextInfoToUpper.cs | 2 +- ...System.IO.Compression.ZipFile.Tests.csproj | 3 + .../tests/ZipFileConvenienceMethods.cs | 3 +- .../tests/DeflateStreamTests.cs | 6 +- .../tests/GZipStreamTests.cs | 4 +- .../tests/System.IO.Compression.Tests.csproj | 3 + .../tests/FileSystemAclExtensionsTests.cs | 7 +- ...m.IO.FileSystem.AccessControl.Tests.csproj | 3 + .../tests/DriveInfo.Unix.Tests.cs | 5 +- ...ystem.IO.FileSystem.DriveInfo.Tests.csproj | 3 + .../tests/FileSystemWatcher.unit.cs | 14 +- .../System.IO.FileSystem.Watcher.Tests.csproj | 3 + .../tests/File/EncryptDecrypt.cs | 4 +- .../tests/File/Replace.cs | 4 +- .../tests/FileInfo/Replace.cs | 2 +- .../tests/FileStream/BeginRead.cs | 8 +- .../tests/FileStream/BeginWrite.cs | 8 +- .../tests/FileStream/CopyToAsync.cs | 4 +- .../tests/FileStream/EndRead.cs | 4 +- .../tests/FileStream/EndWrite.cs | 4 +- .../tests/FileStream/LockUnlock.cs | 12 +- .../tests/FileStream/Position.cs | 8 +- .../tests/FileStream/Read.cs | 24 +- .../tests/FileStream/ReadAsync.cs | 30 +- .../tests/FileStream/SetLength.cs | 8 +- .../tests/FileStream/Write.cs | 24 +- .../tests/FileStream/WriteAsync.cs | 30 +- .../tests/FileStream/ctor_sfh_fa.cs | 4 +- .../tests/FileStream/ctor_sfh_fa_buffer.cs | 4 +- .../tests/FileStream/ctor_str_fm.cs | 2 +- .../tests/FileStream/ctor_str_fm_fa.cs | 2 +- .../tests/FileStream/ctor_str_fm_fa_fs.cs | 2 +- .../FileStream/ctor_str_fm_fa_fs_buffer.cs | 4 +- .../FileStream/ctor_str_fm_fa_fs_buffer_fo.cs | 2 +- .../System.IO.IsolatedStorage.Tests.csproj | 3 + .../IO/IsolatedStorage/CopyFileTests.cs | 18 +- .../IO/IsolatedStorage/MoveDirectoryTests.cs | 10 +- .../IO/IsolatedStorage/MoveFileTests.cs | 11 +- .../IO/IsolatedStorage/OpenFileTests.cs | 8 +- .../MemoryMappedFile.CreateFromFile.Tests.cs | 46 +-- .../tests/MemoryMappedFile.CreateNew.Tests.cs | 18 +- .../MemoryMappedFile.CreateOrOpen.Tests.cs | 32 +- .../MemoryMappedFile.OpenExisting.Tests.cs | 8 +- .../tests/MemoryMappedViewAccessor.Tests.cs | 124 +++--- .../tests/MemoryMappedViewStream.Tests.cs | 16 +- .../AnonymousPipeTest.CreateClient.cs | 12 +- .../AnonymousPipeTest.CreateServer.cs | 20 +- .../NamedPipeTest.CreateClient.cs | 38 +- .../NamedPipeTest.CreateServer.cs | 68 ++-- .../NamedPipeTests/NamedPipeTest.Specific.cs | 4 +- .../tests/NamedPipeTests/NamedPipeTest.cs | 4 +- src/System.IO.Pipes/tests/PipeTest.Read.cs | 22 +- src/System.IO.Pipes/tests/PipeTest.Write.cs | 20 +- .../tests/System.IO.Pipes.Tests.csproj | 3 + ...stem.IO.UnmanagedMemoryStream.Tests.csproj | 3 + .../tests/Uma.ReadWriteStruct.cs | 17 +- .../tests/Uma.ReadWriteStructArray.cs | 29 +- .../tests/BinaryReader/BinaryReaderTests.cs | 4 +- .../BufferedStream.InvalidParameters.cs | 10 +- .../tests/MemoryStream/MemoryStreamTests.cs | 17 +- src/System.IO/tests/Stream/Stream.Methods.cs | 13 +- .../StreamReader.StringCtorTests.cs | 18 +- .../StreamWriter.StringCtorTests.cs | 20 +- src/System.IO/tests/System.IO.Tests.csproj | 3 + src/System.Json/tests/JsonArrayTests.cs | 27 +- src/System.Json/tests/JsonObjectTests.cs | 18 +- src/System.Json/tests/JsonValueTests.cs | 44 +- .../tests/System.Json.Tests.csproj | 3 + .../tests/Array/ArrayAccessTests.cs | 6 +- .../tests/Array/ArrayArrayIndexTests.cs | 16 +- .../tests/Array/ArrayArrayLengthTests.cs | 2 +- .../tests/Array/ArrayIndexTests.cs | 10 +- .../tests/Array/ArrayLengthTests.cs | 10 +- .../tests/Array/NewArrayBoundsTests.cs | 28 +- .../tests/Array/NewArrayListTests.cs | 14 +- .../Arithmetic/BinaryAddTests.cs | 16 +- .../Arithmetic/BinaryDivideTests.cs | 8 +- .../Arithmetic/BinaryModuloTests.cs | 8 +- .../Arithmetic/BinaryMultiplyTests.cs | 16 +- .../Arithmetic/BinaryShiftTests.cs | 16 +- .../Arithmetic/BinarySubtractTests.cs | 16 +- .../BinaryOperators/Assignment/Assign.cs | 12 +- .../BinaryOperators/Assignment/OpAssign.cs | 6 +- .../BinaryOperators/Bitwise/BinaryAndTests.cs | 8 +- .../Bitwise/BinaryExclusiveOrTests.cs | 8 +- .../BinaryOperators/Bitwise/BinaryOrTests.cs | 8 +- .../Coalesce/BinaryCoalesceTests.cs | 14 +- .../Comparison/CompareTests.cs | 32 +- .../Comparison/EqualNotEqualTests.cs | 16 +- .../BinaryOperators/GeneralBinaryTests.cs | 14 +- .../Logical/BinaryLogicalTests.cs | 36 +- .../ReferenceComparison/ReferenceEqual.cs | 8 +- .../ReferenceComparison/ReferenceNotEqual.cs | 8 +- .../tests/Block/BlockTests.cs | 8 +- .../tests/Block/NoParameterBlockTests.cs | 74 ++-- .../tests/Block/ParameterBlockTests.cs | 40 +- .../tests/Call/CallFactoryTests.cs | 8 +- .../tests/Call/CallTests.cs | 48 +-- .../tests/Cast/AsTests.cs | 16 +- .../tests/Conditional/ConditionalTests.cs | 78 ++-- .../tests/Constant/ConstantTests.cs | 4 +- .../tests/Convert/ConvertCheckedTests.cs | 10 +- .../tests/Convert/ConvertTests.cs | 14 +- .../DebugInfo/DebugInfoExpressionTests.cs | 10 +- .../DebugInfo/SymbolDocumentInfoTests.cs | 8 +- .../tests/Default/DefaultTests.cs | 14 +- .../tests/DelegateType/ActionTypeTests.cs | 6 +- .../tests/DelegateType/FuncTypeTests.cs | 6 +- .../DelegateType/GetDelegateTypeTests.cs | 8 +- .../tests/Dynamic/BinaryOperationTests.cs | 14 +- .../tests/Dynamic/BindingRestrictionsTests.cs | 6 +- .../tests/Dynamic/CallInfoTests.cs | 8 +- .../tests/Dynamic/CallSiteTests.cs | 8 +- .../tests/Dynamic/ConvertBinderTests.cs | 10 +- .../DynamicObjectDefaultBehaviorTests.cs | 4 +- .../tests/Dynamic/DynamicObjectTests.cs | 4 +- .../tests/Dynamic/ExpandoObjectTests.cs | 6 +- .../tests/Dynamic/GetIndexBinderTests.cs | 12 +- .../tests/Dynamic/GetMemberBinderTests.cs | 6 +- .../tests/Dynamic/InvokeBinderTests.cs | 10 +- .../tests/Dynamic/SetIndexBinderTests.cs | 12 +- .../tests/Dynamic/SetMemberBinderTests.cs | 6 +- .../tests/Dynamic/UnaryOperationTests.cs | 8 +- .../DynamicExpressionTests.cs | 28 +- .../ExceptionHandlingExpressions.cs | 106 ++--- .../tests/ExpressionTests.cs | 10 +- .../tests/Goto/Break.cs | 26 +- .../tests/Goto/Continue.cs | 18 +- .../tests/Goto/Goto.cs | 26 +- .../tests/Goto/Return.cs | 26 +- .../IndexExpression/IndexExpressionTests.cs | 68 ++-- .../tests/Invoke/InvocationTests.cs | 12 +- .../tests/Label/LabelTargetTests.cs | 20 +- .../tests/Label/LabelTests.cs | 6 +- .../tests/Lambda/LambdaTests.cs | 86 ++-- .../tests/ListInit/ElementInitTests.cs | 59 +-- .../tests/ListInit/ListInitExpressionTests.cs | 50 +-- .../tests/Loop/LoopTests.cs | 16 +- .../tests/Member/MemberAccessTests.cs | 104 ++--- .../tests/MemberInit/BindTests.cs | 36 +- .../tests/MemberInit/ListBindTests.cs | 58 +-- .../tests/MemberInit/MemberBindTests.cs | 38 +- .../tests/New/NewTests.cs | 78 ++-- .../tests/New/NewWithByRefParameterTests.cs | 4 +- .../tests/ReadOnlyCollectionBuilderTests.cs | 47 +-- .../tests/SequenceTests/SequenceTests.cs | 10 +- .../tests/Switch/SwitchTests.cs | 62 +-- .../System.Linq.Expressions.Tests.csproj | 3 + .../tests/TypeBinary/TypeEqual.cs | 8 +- .../tests/TypeBinary/TypeIs.cs | 8 +- .../IncDecAssign/PostDecrementAssignTests.cs | 8 +- .../IncDecAssign/PostIncrementAssignTests.cs | 8 +- .../IncDecAssign/PreDecrementAssignTests.cs | 8 +- .../IncDecAssign/PreIncrementAssignTests.cs | 8 +- .../tests/Unary/MakeUnaryTests.cs | 16 +- .../tests/Unary/UnaryDecrementTests.cs | 4 +- .../tests/Unary/UnaryIncrementTests.cs | 4 +- .../tests/Unary/UnaryQuoteTests.cs | 6 +- .../tests/Unary/UnboxTests.cs | 18 +- .../tests/Variables/ParameterTests.cs | 16 +- .../tests/Variables/RuntimeVariablesTests.cs | 8 +- .../tests/Variables/VariableTests.cs | 20 +- .../tests/Visitor/VisitorTests.cs | 10 +- .../tests/DegreeOfParallelismTests.cs | 2 +- .../tests/ExchangeTests.cs | 2 +- .../tests/ParallelEnumerableTests.cs | 16 +- .../tests/PlinqModesTests.cs | 2 +- .../tests/QueryOperators/AggregateTests.cs | 40 +- .../tests/QueryOperators/AllTests.cs | 4 +- .../tests/QueryOperators/AnyTests.cs | 4 +- .../tests/QueryOperators/AsEnumerableTests.cs | 2 +- .../tests/QueryOperators/AsSequentialTests.cs | 2 +- .../tests/QueryOperators/AverageTests.cs | 48 +-- .../tests/QueryOperators/CastTests.cs | 2 +- .../tests/QueryOperators/ConcatTests.cs | 4 +- .../tests/QueryOperators/ContainsTests.cs | 4 +- .../QueryOperators/CountLongCountTests.cs | 12 +- .../QueryOperators/DefaultIfEmptyTests.cs | 2 +- .../tests/QueryOperators/DistinctTests.cs | 2 +- .../ElementAtElementAtOrDefaultTests.cs | 4 +- .../tests/QueryOperators/ExceptTests.cs | 8 +- .../FirstFirstOrDefaultTests.cs | 8 +- .../tests/QueryOperators/ForAllTests.cs | 4 +- .../tests/QueryOperators/GroupByTests.cs | 54 +-- .../tests/QueryOperators/GroupJoinTests.cs | 20 +- .../tests/QueryOperators/IntersectTests.cs | 8 +- .../tests/QueryOperators/JoinTests.cs | 20 +- .../QueryOperators/LastLastOrDefaultTests.cs | 8 +- .../tests/QueryOperators/MaxTests.cs | 58 +-- .../tests/QueryOperators/MinTests.cs | 58 +-- .../tests/QueryOperators/OfTypeTests.cs | 2 +- .../QueryOperators/OrderByThenByTests.cs | 32 +- .../tests/QueryOperators/ReverseTests.cs | 2 +- .../QueryOperators/SelectSelectManyTests.cs | 30 +- .../QueryOperators/SequenceEqualTests.cs | 8 +- .../SingleSingleOrDefaultTests.cs | 8 +- .../QueryOperators/SkipSkipWhileTests.cs | 8 +- .../tests/QueryOperators/SumTests.cs | 49 +-- .../QueryOperators/TakeTakeWhileTests.cs | 8 +- .../tests/QueryOperators/ToArrayTests.cs | 2 +- .../tests/QueryOperators/ToDictionaryTests.cs | 20 +- .../tests/QueryOperators/ToListTests.cs | 2 +- .../tests/QueryOperators/ToLookupTests.cs | 20 +- .../tests/QueryOperators/UnionTests.cs | 8 +- .../tests/QueryOperators/WhereTests.cs | 8 +- .../tests/QueryOperators/ZipTests.cs | 6 +- .../tests/System.Linq.Parallel.Tests.csproj | 3 + .../tests/AggregateTests.cs | 14 +- src/System.Linq.Queryable/tests/AllTests.cs | 4 +- src/System.Linq.Queryable/tests/AnyTests.cs | 6 +- .../tests/AppendPrependTests.cs | 6 +- .../tests/AverageTests.cs | 60 +-- src/System.Linq.Queryable/tests/CastTests.cs | 2 +- .../tests/ConcatTests.cs | 4 +- .../tests/ContainsTests.cs | 4 +- src/System.Linq.Queryable/tests/CountTests.cs | 6 +- .../tests/DefaultIfEmptyTests.cs | 4 +- .../tests/DistinctTests.cs | 4 +- .../tests/ElementAtOrDefaultTests.cs | 2 +- .../tests/ElementAtTests.cs | 9 +- .../tests/EnumerableQueryTests.cs | 8 +- .../tests/ExceptTests.cs | 8 +- .../tests/FirstOrDefaultTests.cs | 6 +- src/System.Linq.Queryable/tests/FirstTests.cs | 6 +- .../tests/GroupByTests.cs | 50 +-- .../tests/GroupJoinTests.cs | 20 +- .../tests/IntersectTests.cs | 8 +- src/System.Linq.Queryable/tests/JoinTests.cs | 20 +- .../tests/LastOrDefaultTests.cs | 6 +- src/System.Linq.Queryable/tests/LastTests.cs | 6 +- .../tests/LongCountTests.cs | 6 +- src/System.Linq.Queryable/tests/MaxTests.cs | 70 ++-- src/System.Linq.Queryable/tests/MinTests.cs | 66 +-- .../tests/OfTypeTests.cs | 2 +- .../tests/OrderByDescendingTests.cs | 8 +- .../tests/OrderByTests.cs | 8 +- src/System.Linq.Queryable/tests/Queryable.cs | 4 +- .../tests/ReverseTests.cs | 2 +- .../tests/SelectManyTests.cs | 20 +- .../tests/SelectTests.cs | 8 +- .../tests/SequenceEqualTests.cs | 8 +- .../tests/SingleOrDefaultTests.cs | 6 +- .../tests/SingleTests.cs | 6 +- .../tests/SkipLastTests.cs | 4 +- src/System.Linq.Queryable/tests/SkipTests.cs | 2 +- .../tests/SkipWhileTests.cs | 8 +- src/System.Linq.Queryable/tests/SumTests.cs | 60 +-- .../tests/System.Linq.Queryable.Tests.csproj | 3 + .../tests/TakeLastTests.cs | 4 +- src/System.Linq.Queryable/tests/TakeTests.cs | 2 +- .../tests/TakeWhileTests.cs | 8 +- .../tests/ThenByDescendingTests.cs | 8 +- .../tests/ThenByTests.cs | 8 +- src/System.Linq.Queryable/tests/UnionTests.cs | 8 +- src/System.Linq.Queryable/tests/WhereTests.cs | 8 +- src/System.Linq.Queryable/tests/ZipTests.cs | 6 +- src/System.Linq/tests/AggregateTests.cs | 14 +- src/System.Linq/tests/AllTests.cs | 4 +- src/System.Linq/tests/AnyTests.cs | 6 +- src/System.Linq/tests/AppendPrependTests.cs | 4 +- src/System.Linq/tests/AverageTests.cs | 60 +-- src/System.Linq/tests/CastTests.cs | 2 +- src/System.Linq/tests/ConcatTests.cs | 6 +- src/System.Linq/tests/ContainsTests.cs | 4 +- src/System.Linq/tests/CountTests.cs | 6 +- src/System.Linq/tests/DefaultIfEmptyTests.cs | 4 +- src/System.Linq/tests/DistinctTests.cs | 4 +- .../tests/ElementAtOrDefaultTests.cs | 2 +- src/System.Linq/tests/ElementAtTests.cs | 14 +- src/System.Linq/tests/EmptyPartitionTests.cs | 2 +- src/System.Linq/tests/ExceptTests.cs | 8 +- src/System.Linq/tests/FirstOrDefaultTests.cs | 6 +- src/System.Linq/tests/FirstTests.cs | 6 +- src/System.Linq/tests/GroupByTests.cs | 38 +- src/System.Linq/tests/GroupJoinTests.cs | 20 +- src/System.Linq/tests/IntersectTests.cs | 8 +- src/System.Linq/tests/JoinTests.cs | 20 +- src/System.Linq/tests/LastOrDefaultTests.cs | 6 +- src/System.Linq/tests/LastTests.cs | 6 +- src/System.Linq/tests/LongCountTests.cs | 6 +- src/System.Linq/tests/MaxTests.cs | 72 ++-- src/System.Linq/tests/MinTests.cs | 70 ++-- src/System.Linq/tests/OfTypeTests.cs | 2 +- .../tests/OrderByDescendingTests.cs | 4 +- src/System.Linq/tests/OrderByTests.cs | 4 +- src/System.Linq/tests/OrderedSubsetting.cs | 2 +- src/System.Linq/tests/RangeTests.cs | 12 +- src/System.Linq/tests/RepeatTests.cs | 4 +- src/System.Linq/tests/ReverseTests.cs | 2 +- src/System.Linq/tests/SelectManyTests.cs | 20 +- src/System.Linq/tests/SelectTests.cs | 33 +- src/System.Linq/tests/SequenceEqualTests.cs | 4 +- src/System.Linq/tests/SingleOrDefaultTests.cs | 6 +- src/System.Linq/tests/SingleTests.cs | 6 +- src/System.Linq/tests/SkipTests.cs | 14 +- src/System.Linq/tests/SkipWhileTests.cs | 8 +- src/System.Linq/tests/SumTests.cs | 60 +-- .../tests/System.Linq.Tests.csproj | 3 + src/System.Linq/tests/TakeTests.cs | 10 +- src/System.Linq/tests/TakeWhileTests.cs | 8 +- .../tests/ThenByDescendingTests.cs | 8 +- src/System.Linq/tests/ThenByTests.cs | 8 +- src/System.Linq/tests/ToArrayTests.cs | 2 +- src/System.Linq/tests/ToDictionaryTests.cs | 20 +- src/System.Linq/tests/ToListTests.cs | 2 +- src/System.Linq/tests/ToLookupTests.cs | 20 +- src/System.Linq/tests/UnionTests.cs | 8 +- src/System.Linq/tests/WhereTests.cs | 8 +- src/System.Linq/tests/ZipTests.cs | 6 +- ...ttpClientHandlerTest.ClientCertificates.cs | 2 +- ...entHandlerTest.MaxResponseHeadersLength.cs | 2 +- .../tests/FunctionalTests/HttpClientTest.cs | 18 +- .../FunctionalTests/MultipartContentTest.cs | 26 +- .../System.Net.Http.Functional.Tests.csproj | 3 + .../tests/HttpRequestStreamTests.cs | 14 +- .../tests/HttpResponseStreamTests.cs | 17 +- .../System.Net.HttpListener.Tests.csproj | 3 + .../tests/Functional/ContentTypeTest.cs | 5 +- .../System.Net.Mail.Functional.Tests.csproj | 3 + .../tests/FunctionalTests/PingTest.cs | 60 +-- .../System.Net.Ping.Functional.Tests.csproj | 3 + .../FunctionalTests/CredentialCacheTest.cs | 22 +- .../tests/FunctionalTests/IPAddressTest.cs | 22 +- .../FunctionalTests/RequestCachePolicyTest.cs | 2 +- ...tem.Net.Primitives.Functional.Tests.csproj | 3 + .../tests/FileWebRequestTest.cs | 9 +- .../tests/HttpRequestCachePolicyTest.cs | 7 +- .../tests/System.Net.Requests.Tests.csproj | 3 + .../tests/ServicePointManagerTest.cs | 31 +- .../System.Net.ServicePoint.Tests.csproj | 3 + .../tests/FunctionalTests/DisconnectTest.cs | 4 +- .../FunctionalTests/MulticastOptionTest.cs | 31 +- .../FunctionalTests/NetworkStreamTest.cs | 20 +- .../SocketAsyncEventArgsTest.cs | 10 +- .../FunctionalTests/SocketOptionNameTest.cs | 2 +- .../System.Net.Sockets.Tests.csproj | 3 + .../tests/FunctionalTests/TcpClientTest.cs | 16 +- .../tests/FunctionalTests/TcpListenerTest.cs | 10 +- .../tests/FunctionalTests/UdpClientTest.cs | 65 +-- .../tests/System.Net.WebClient.Tests.csproj | 3 + .../tests/WebClientTest.cs | 241 +++++------ ...ystem.Net.WebHeaderCollection.Tests.csproj | 3 + .../tests/WebHeaderCollectionTest.cs | 11 +- .../tests/System.Net.WebProxy.Tests.csproj | 3 + src/System.Net.WebProxy/tests/WebProxyTest.cs | 7 +- .../tests/ClientWebSocketOptionsTests.cs | 18 +- .../tests/System.Net.WebSockets.Tests.csproj | 3 + .../tests/WebSocketTests.cs | 7 +- ...eCollection_ConstructorAndPropertyTests.cs | 4 +- .../tests/System.ObjectModel.Tests.csproj | 3 + ...rivate.Uri.ExtendedFunctional.Tests.csproj | 3 + .../tests/ExtendedFunctionalTests/UriTests.cs | 3 +- ...System.Private.Uri.Functional.Tests.csproj | 3 + .../tests/FunctionalTests/UriBuilderTests.cs | 7 +- .../tests/misc/Annotation.cs | 21 +- .../misc/System.Xml.Linq.Misc.Tests.csproj | 3 + .../tests/DispatchProxyTests.cs | 8 +- ...stem.Reflection.DispatchProxy.Tests.csproj | 3 + .../tests/CustomAttributeBuilderTests.cs | 73 ++-- .../tests/ILGenerator/DeclareLocalTests.cs | 4 +- .../tests/ILGenerator/Emit1Tests.cs | 2 +- .../tests/ILGenerator/Emit2Tests.cs | 4 +- .../tests/ILGenerator/Emit3Tests.cs | 4 +- .../SetCustomAttributeTests.cs | 6 +- .../SignatureHelperAddArgument.cs | 6 +- .../SignatureHelperAddArguments.cs | 8 +- .../SignatureHelperGetMethodSigHelper.cs | 2 +- .../SignatureHelperGetPropertySigHelper.cs | 4 +- ....Reflection.Emit.ILGeneration.Tests.csproj | 3 + .../tests/DynamicMethodCtor.cs | 41 +- ...m.Reflection.Emit.Lightweight.Tests.csproj | 3 + .../tests/AssemblyBuilderTests.cs | 22 +- .../ConstructorBuilderSetCustomAttribute.cs | 4 +- .../EnumBuilder/EnumBuilder.Methods.Tests.cs | 4 +- .../EventBuilderAddOtherMethod.cs | 2 +- .../EventBuilderSetAddOnMethod.cs | 2 +- .../EventBuilderSetCustomAttribute.cs | 6 +- .../EventBuilderSetRaiseMethod.cs | 2 +- .../EventBuilderSetRemoveOnMethod.cs | 2 +- .../FieldBuilderSetCustomAttribute.cs | 6 +- ...cTypeParameterBuilderSetCustomAttribute.cs | 6 +- .../MethodBuilderDefineGenericParameters.cs | 6 +- .../MethodBuilderSetCustomAttribute.cs | 6 +- .../MethodBuilderSetParameters.cs | 2 +- .../ModuleBuilder/ModuleBuilderDefineEnum.cs | 6 +- .../ModuleBuilderDefineInitializedData.cs | 6 +- .../ModuleBuilder/ModuleBuilderDefineType.cs | 14 +- .../ModuleBuilderDefineUninitializedData.cs | 4 +- .../ModuleBuilderGetArrayMethod.cs | 8 +- .../ModuleBuilderSetCustomAttribute.cs | 6 +- .../PropertyBuilderAddOtherMethod.cs | 2 +- .../PropertyBuilderSetCustomAttribute.cs | 4 +- .../PropertyBuilderSetGetMethod.cs | 2 +- .../PropertyBuilderSetSetMethod.cs | 2 +- .../tests/System.Reflection.Emit.Tests.csproj | 3 + .../TypeBuilderAddInterfaceImplementaion.cs | 2 +- .../TypeBuilder/TypeBuilderDefineField.cs | 8 +- .../TypeBuilderDefineGenericParameters.cs | 6 +- .../TypeBuilderDefineMethodOverride.cs | 5 +- .../TypeBuilderDefineNestedType.cs | 35 +- .../TypeBuilder/TypeBuilderDefineProperty.cs | 12 +- .../TypeBuilder/TypeBuilderGetConstructor.cs | 6 +- .../tests/TypeBuilder/TypeBuilderGetField.cs | 6 +- .../tests/TypeBuilder/TypeBuilderGetMethod.cs | 6 +- .../TypeBuilder/TypeBuilderMakeGenericType.cs | 4 +- .../TypeBuilderSetCustomAttribute.cs | 2 +- .../tests/Metadata/BlobContentIdTests.cs | 15 +- .../Decoding/SignatureDecoderTests.cs | 2 +- .../Metadata/Ecma335/MetadataBuilderTests.cs | 17 +- .../PortableExecutable/DebugDirectoryTests.cs | 4 +- .../tests/PortableExecutable/PEReaderTests.cs | 3 +- .../System.Reflection.Metadata.Tests.csproj | 3 + .../System.Runtime.Extensions.Tests.csproj | 3 + .../tests/System/AppDomainTests.cs | 10 +- .../tests/System/BitConverter.cs | 124 +++--- .../Environment.GetEnvironmentVariable.cs | 24 +- .../tests/System/EnvironmentTests.cs | 4 +- .../tests/System/IO/PathTests.cs | 2 +- .../tests/System/Net/WebUtility.cs | 12 +- .../tests/System/OperatingSystemTests.cs | 8 +- .../Reflection/AssemblyNameProxyTests.cs | 2 +- .../tests/BinaryFormatterTests.cs | 5 +- .../tests/FormatterConverterTests.cs | 35 +- .../tests/FormatterServicesTests.cs | 25 +- .../tests/FormatterTests.cs | 4 +- .../tests/SurrogateSelectorTests.cs | 14 +- ...time.Serialization.Formatters.Tests.csproj | 3 + src/System.Runtime/tests/ArrayTests.cs | 24 +- .../tests/ArrayTests.netcoreapp.cs | 10 +- .../tests/System/ActivatorTests.cs | 6 +- .../tests/System/ActivatorTests.netcoreapp.cs | 2 +- .../AppContext.Switch.Validation.cs | 12 +- .../tests/System/ArraySegmentTests.cs | 20 +- src/System.Runtime/tests/System/ArrayTests.cs | 276 ++++++------- .../tests/System/ArrayTests.netcoreapp.cs | 14 +- .../tests/System/BufferTests.cs | 50 +-- src/System.Runtime/tests/System/CharTests.cs | 140 +++---- .../ObjectModel/CollectionTests.cs | 22 +- .../ObjectModel/ReadOnlyCollectionTests.cs | 8 +- .../tests/System/DateTimeOffsetTests.cs | 142 +++---- .../tests/System/DateTimeTests.cs | 78 ++-- .../tests/System/DecimalTests.cs | 2 +- .../tests/System/DelegateTests.cs | 2 +- src/System.Runtime/tests/System/EnumTests.cs | 36 +- .../tests/System/EnumTests.netcoreapp.cs | 4 +- src/System.Runtime/tests/System/GCTests.cs | 20 +- src/System.Runtime/tests/System/GuidTests.cs | 4 +- .../tests/System/LazyOfTMetadataTests.cs | 14 +- src/System.Runtime/tests/System/LazyTests.cs | 14 +- .../tests/System/NullableTests.cs | 2 +- .../System/Reflection/AssemblyNameTests.cs | 4 +- .../tests/System/Reflection/AssemblyTests.cs | 4 +- ...stomAttribute_Named_Typed_ArgumentTests.cs | 4 +- .../ConditionalWeakTableTests.cs | 8 +- .../RuntimeHelpersTests.netcoreapp.cs | 2 +- .../ExceptionDispatchInfoTests.netcoreapp.cs | 2 +- .../tests/System/String.SplitTests.cs | 14 +- .../tests/System/StringTests.cs | 384 +++++++++--------- .../tests/System/StringTests.netcoreapp.cs | 14 +- .../tests/System/Text/StringBuilderTests.cs | 270 ++++++------ .../tests/System/TimeSpanTests.netcoreapp.cs | 12 +- .../tests/System/TimeZoneInfoTests.cs | 8 +- src/System.Runtime/tests/System/TupleTests.cs | 2 +- src/System.Runtime/tests/System/TypeTests.cs | 2 +- .../tests/System/Uri.CreateStringTests.cs | 6 +- .../tests/System/Uri.MethodsTests.cs | 18 +- .../tests/System/VersionTests.cs | 30 +- .../tests/AccessRule.Tests.cs | 26 +- .../tests/Ace/Ace.Common.Tests.cs | 28 +- .../tests/Ace/Ace.Compound.Tests.cs | 20 +- .../tests/Ace/Ace.Custom.Tests.cs | 18 +- .../tests/Ace/Ace.Object.Tests.cs | 28 +- .../tests/AuditRule.Tests.cs | 26 +- ...System.Security.AccessControl.Tests.csproj | 3 + .../tests/ClaimsPrincipalTests.cs | 8 +- .../tests/GenericIdentityTests.cs | 5 +- .../tests/GenericPrincipalTests.cs | 3 +- .../tests/System.Security.Claims.Tests.csproj | 3 + .../tests/ECDiffieHellmanPublicKeyTests.cs | 2 +- .../tests/HashAlgorithmTest.cs | 18 +- .../tests/HmacTests.cs | 6 +- .../tests/RandomNumberGeneratorTests.cs | 11 +- .../tests/SignatureDescriptionTests.cs | 10 +- ...urity.Cryptography.Algorithms.Tests.csproj | 3 + ...tem.Security.Cryptography.Cng.Tests.csproj | 3 + .../tests/RNGCryptoServiceProviderTests.cs | 3 +- ...tem.Security.Cryptography.Csp.Tests.csproj | 3 + .../tests/Base64TransformsTests.cs | 16 +- ...ecurity.Cryptography.Encoding.Tests.csproj | 3 + ...Security.Cryptography.OpenSsl.Tests.csproj | 3 + .../tests/CtorTests.cs | 5 +- ...Cryptography.X509Certificates.Tests.csproj | 3 + .../tests/EncryptionMethodTests.cs | 7 +- ...tem.Security.Cryptography.Xml.Tests.csproj | 3 + .../tests/SecureStringTests.cs | 35 +- .../System.Security.SecureString.Tests.csproj | 3 + .../ServiceControllerTests.cs | 3 +- ...viceProcess.ServiceController.Tests.csproj | 3 + .../tests/Decoder/Decoder.cs | 26 +- .../tests/Encoder/Encoder.cs | 26 +- .../tests/Encoder/EncoderGetBytes2.cs | 4 +- .../tests/Encoding/EncodingConvertTests.cs | 22 +- .../tests/Encoding/EncodingCtorTests.cs | 4 +- .../Encoding/EncodingGetEncodingTests.cs | 10 +- .../DecoderReplacementFallbackTests.cs | 4 +- .../Fallback/EncoderExceptionFallbackTests.cs | 8 +- .../EncoderReplacementFallbackTests.cs | 14 +- .../tests/NegativeEncodingTests.cs | 303 +++++++------- .../tests/NegativeEncodingTests.netcoreapp.cs | 31 +- .../tests/System.Text.Encoding.Tests.csproj | 3 + .../tests/UTF8Encoding/UTF8EncodingEncode.cs | 24 +- .../tests/UnicodeEncoding/UnicodeEncoding.cs | 30 +- .../UnicodeEncoding/UnicodeEncodingEncode.cs | 2 +- .../tests/CaptureCollectionTests.cs | 6 +- .../CaptureCollectionTests.netcoreapp.cs | 6 +- .../tests/GroupCollectionTests.cs | 2 +- .../tests/GroupCollectionTests.netcoreapp.cs | 6 +- .../tests/MatchCollectionTests.cs | 4 +- .../tests/Regex.Ctor.Tests.cs | 30 +- .../tests/Regex.EscapeUnescape.Tests.cs | 4 +- .../tests/Regex.GetGroupNames.Tests.cs | 2 +- .../tests/Regex.Match.Tests.cs | 42 +- .../tests/Regex.MultipleMatches.Tests.cs | 32 +- .../tests/Regex.Replace.Tests.cs | 82 ++-- .../tests/Regex.Split.Tests.cs | 28 +- .../System.Threading.Overlapped.Tests.csproj | 3 + ...undHandle_AllocateNativeOverlappedTests.cs | 4 +- .../ThreadPoolBoundHandle_BindHandleTests.cs | 18 +- ...olBoundHandle_FreeNativeOverlappedTests.cs | 2 +- ...undHandle_GetNativeOverlappedStateTests.cs | 2 +- ...BoundHandle_PreAllocatedOverlappedTests.cs | 2 +- .../tests/AsyncValueTaskMethodBuilderTests.cs | 3 +- ...em.Threading.Tasks.Extensions.Tests.csproj | 3 + .../tests/ParallelForTests.cs | 167 ++++---- ...stem.Threading.Tasks.Parallel.Tests.csproj | 3 + .../tests/EventWaitHandleTests.cs | 2 +- src/System.Threading/tests/MonitorTests.cs | 52 +-- src/System.Threading/tests/MutexTests.cs | 2 +- src/System.Threading/tests/SemaphoreTests.cs | 23 +- .../tests/System.Threading.Tests.csproj | 3 + .../System.Transactions.Local.Tests.csproj | 3 + .../tests/TransactionScopeTest.cs | 5 +- 751 files changed, 5934 insertions(+), 5643 deletions(-) diff --git a/src/Common/tests/System/AssertExtensions.cs b/src/Common/tests/System/AssertExtensions.cs index 585475a9ac92..5f45b1d0963d 100644 --- a/src/Common/tests/System/AssertExtensions.cs +++ b/src/Common/tests/System/AssertExtensions.cs @@ -29,13 +29,26 @@ public static void Throws(string netCoreParamName, string netFxParamName, Act Assert.Equal(expectedParamName, exception.ParamName); } - public static void Throws(string paramName, Action action) + public static T Throws(string paramName, Action action) where T : ArgumentException { T exception = Assert.Throws(action); if (!RuntimeInformation.FrameworkDescription.StartsWith(".NET Native")) Assert.Equal(paramName, exception.ParamName); + + return exception; + } + + public static T Throws(string paramName, Func testCode) + where T : ArgumentException + { + T exception = Assert.Throws(testCode); + + if (!RuntimeInformation.FrameworkDescription.StartsWith(".NET Native")) + Assert.Equal(paramName, exception.ParamName); + + return exception; } } } diff --git a/src/Common/tests/System/Collections/ICollection.Generic.Tests.cs b/src/Common/tests/System/Collections/ICollection.Generic.Tests.cs index 7dda8a1591eb..7caabe5cd6af 100644 --- a/src/Common/tests/System/Collections/ICollection.Generic.Tests.cs +++ b/src/Common/tests/System/Collections/ICollection.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -416,7 +416,7 @@ public virtual void ICollection_Generic_Contains_DefaultValueWhenNotAllowed(int { ICollection collection = GenericICollectionFactory(count); if (DefaultValueWhenNotAllowed_Throws) - Assert.Throws("item", () => collection.Contains(default(T))); + AssertExtensions.Throws("item", () => collection.Contains(default(T))); else Assert.False(collection.Contains(default(T))); } diff --git a/src/Common/tests/System/Collections/IDictionaryTest.cs b/src/Common/tests/System/Collections/IDictionaryTest.cs index ba21f27bd2b6..10d6b2ddc54a 100644 --- a/src/Common/tests/System/Collections/IDictionaryTest.cs +++ b/src/Common/tests/System/Collections/IDictionaryTest.cs @@ -124,7 +124,7 @@ public void IDictionaryShouldContainAllKeys() public void Contains_NullKey_ThrowsArgumentNullException() { IDictionary dict = GetDictionary(new object[0]) as IDictionary; - Assert.Throws("key", () => dict.Contains(null)); + AssertExtensions.Throws("key", () => dict.Contains(null)); } [Fact] diff --git a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/DES/DesTests.cs b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/DES/DesTests.cs index 029ab390f6b4..7b3b444b4362 100644 --- a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/DES/DesTests.cs +++ b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/DES/DesTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Test.Cryptography; using Xunit; @@ -43,7 +44,7 @@ public static void DesKeysValidation() { Assert.Throws(() => des.Key = KnownShortKey); Assert.Throws(() => des.Key = KnownSemiWeakKey); - Assert.Throws("value", () => des.Key = null); + AssertExtensions.Throws("value", () => des.Key = null); des.Key = KnownGoodKey; Assert.Equal(KnownGoodKey, des.Key); @@ -81,13 +82,13 @@ public static void DesTransformBlockValidation() { using (DES des = DESFactory.Create()) { - Assert.Throws("rgbKey", () => des.CreateDecryptor(KnownShortKey, des.IV)); - Assert.Throws("rgbKey", () => des.CreateDecryptor(null, des.IV)); + AssertExtensions.Throws("rgbKey", () => des.CreateDecryptor(KnownShortKey, des.IV)); + AssertExtensions.Throws("rgbKey", () => des.CreateDecryptor(null, des.IV)); Assert.Throws(() => des.CreateDecryptor(KnownWeakKey, des.IV)); Assert.Throws(() => des.CreateDecryptor(KnownSemiWeakKey, des.IV)); - Assert.Throws("rgbKey", () => des.CreateEncryptor(KnownShortKey, des.IV)); - Assert.Throws("rgbKey", () => des.CreateEncryptor(null, des.IV)); + AssertExtensions.Throws("rgbKey", () => des.CreateEncryptor(KnownShortKey, des.IV)); + AssertExtensions.Throws("rgbKey", () => des.CreateEncryptor(null, des.IV)); Assert.Throws(() => des.CreateEncryptor(KnownWeakKey, des.IV)); Assert.Throws(() => des.CreateEncryptor(KnownSemiWeakKey, des.IV)); } diff --git a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTestData.cs b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTestData.cs index c91c1b738095..4b86628cae1e 100644 --- a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTestData.cs +++ b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTestData.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Test.Cryptography; namespace System.Security.Cryptography.EcDsa.Tests diff --git a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs index df1ff2f719dc..6d3dfda2960b 100644 --- a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs +++ b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/ECDsa/ECDsaTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -227,168 +228,168 @@ public void TestNegative256WithRandomKey() [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArray_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.SignData((byte[])null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArray_DefaultHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.SignData(new byte[0], default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.SignData(null, -1, -1, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_NegativeOffset_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("offset", + AssertExtensions.Throws("offset", () => ecdsa.SignData(new byte[0], -1, -1, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_OffsetGreaterThanCount_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("offset", + AssertExtensions.Throws("offset", () => ecdsa.SignData(new byte[0], 2, 1, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_NegativeCount_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("count", + AssertExtensions.Throws("count", () => ecdsa.SignData(new byte[0], 0, -1, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_CountGreaterThanLengthMinusOffset_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("count", + AssertExtensions.Throws("count", () => ecdsa.SignData(new byte[0], 0, 1, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_DefaultHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.SignData(new byte[0], 0, 0, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataByteArraySpan_EmptyHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.SignData(new byte[10], 0, 10, new HashAlgorithmName(""))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataStream_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.SignData((Stream)null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void SignDataStream_DefaultHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.SignData(new MemoryStream(), default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArray_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.VerifyData((byte[])null, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArray_NullSignature_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("signature", + AssertExtensions.Throws("signature", () => ecdsa.VerifyData(new byte[0], null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArray_DefaultHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.VerifyData(new byte[0], new byte[0], default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.VerifyData((byte[])null, -1, -1, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_NegativeOffset_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("offset", + AssertExtensions.Throws("offset", () => ecdsa.VerifyData(new byte[0], -1, -1, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_OffsetGreaterThanCount_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("offset", + AssertExtensions.Throws("offset", () => ecdsa.VerifyData(new byte[0], 2, 1, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_NegativeCount_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("count", + AssertExtensions.Throws("count", () => ecdsa.VerifyData(new byte[0], 0, -1, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_CountGreaterThanLengthMinusOffset_ThrowsArgumentOutOfRangeException(ECDsa ecdsa) { - Assert.Throws("count", + AssertExtensions.Throws("count", () => ecdsa.VerifyData(new byte[0], 0, 1, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_NullSignature_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("signature", + AssertExtensions.Throws("signature", () => ecdsa.VerifyData(new byte[0], 0, 0, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataByteArraySpan_EmptyHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.VerifyData(new byte[10], 0, 10, new byte[0], new HashAlgorithmName(""))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataStream_NullData_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("data", + AssertExtensions.Throws("data", () => ecdsa.VerifyData((Stream)null, null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataStream_NullSignature_ThrowsArgumentNullException(ECDsa ecdsa) { - Assert.Throws("signature", + AssertExtensions.Throws("signature", () => ecdsa.VerifyData(new MemoryStream(), null, default(HashAlgorithmName))); } [Theory, MemberData(nameof(AllImplementations))] public void VerifyDataStream_DefaultHashAlgorithm_ThrowsArgumentException(ECDsa ecdsa) { - Assert.Throws("hashAlgorithm", + AssertExtensions.Throws("hashAlgorithm", () => ecdsa.VerifyData(new MemoryStream(), new byte[0], default(HashAlgorithmName))); } diff --git a/src/Microsoft.Win32.Primitives/tests/Microsoft.Win32.Primitives.Tests.csproj b/src/Microsoft.Win32.Primitives/tests/Microsoft.Win32.Primitives.Tests.csproj index 830491866c3a..b83a66b75d4a 100644 --- a/src/Microsoft.Win32.Primitives/tests/Microsoft.Win32.Primitives.Tests.csproj +++ b/src/Microsoft.Win32.Primitives/tests/Microsoft.Win32.Primitives.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs diff --git a/src/Microsoft.Win32.Primitives/tests/Win32Exception.cs b/src/Microsoft.Win32.Primitives/tests/Win32Exception.cs index a2acfc744b5f..5d65e0842e89 100644 --- a/src/Microsoft.Win32.Primitives/tests/Win32Exception.cs +++ b/src/Microsoft.Win32.Primitives/tests/Win32Exception.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Runtime.Serialization; @@ -122,7 +123,7 @@ public static void SerializeDeserialize(Win32Exception exception) public static void GetObjectData_InvalidArgs_Throws() { var e = new Win32Exception(); - Assert.Throws("info", () => e.GetObjectData(null, default(StreamingContext))); + AssertExtensions.Throws("info", () => e.GetObjectData(null, default(StreamingContext))); } } } diff --git a/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj b/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj index 295a1b5d0c51..e8a4f6886ab3 100644 --- a/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj +++ b/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj @@ -61,6 +61,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry/tests/Registry/Registry_Getvalue_str_str_obj.cs b/src/Microsoft.Win32.Registry/tests/Registry/Registry_Getvalue_str_str_obj.cs index 5419fc3bf7cb..61ac9d16a02e 100644 --- a/src/Microsoft.Win32.Registry/tests/Registry/Registry_Getvalue_str_str_obj.cs +++ b/src/Microsoft.Win32.Registry/tests/Registry/Registry_Getvalue_str_str_obj.cs @@ -14,7 +14,7 @@ public class Registry_GetValue_str_str_obj : RegistryTestsBase [Fact] public static void NullKeyName_ThrowsArgumentNullException() { - Assert.Throws("keyName", () => Registry.GetValue(null, null, null)); + AssertExtensions.Throws("keyName", () => Registry.GetValue(null, null, null)); } public static readonly object[][] ArgumentExceptionTestData = diff --git a/src/System.Buffers/tests/ArrayPool/UnitTests.cs b/src/System.Buffers/tests/ArrayPool/UnitTests.cs index 42f7e21462fd..72a9e9f20338 100644 --- a/src/System.Buffers/tests/ArrayPool/UnitTests.cs +++ b/src/System.Buffers/tests/ArrayPool/UnitTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Diagnostics.Tracing; using System.Linq; @@ -47,7 +48,7 @@ public static void CreateWillCreateMultipleInstancesOfTheSameType() [InlineData(-1)] public static void CreatingAPoolWithInvalidArrayCountThrows(int length) { - Assert.Throws("maxArraysPerBucket", () => ArrayPool.Create(maxArraysPerBucket: length, maxArrayLength: 16)); + AssertExtensions.Throws("maxArraysPerBucket", () => ArrayPool.Create(maxArraysPerBucket: length, maxArrayLength: 16)); } [Theory] @@ -55,7 +56,7 @@ public static void CreatingAPoolWithInvalidArrayCountThrows(int length) [InlineData(-1)] public static void CreatingAPoolWithInvalidMaximumArraySizeThrows(int length) { - Assert.Throws("maxArrayLength", () => ArrayPool.Create(maxArrayLength: length, maxArraysPerBucket: 1)); + AssertExtensions.Throws("maxArrayLength", () => ArrayPool.Create(maxArrayLength: length, maxArraysPerBucket: 1)); } [Theory] @@ -74,7 +75,7 @@ public static void CreatingAPoolWithValidMaximumArraySizeSucceeds(int length) [MemberData(nameof(BytePoolInstances))] public static void RentingWithInvalidLengthThrows(ArrayPool pool) { - Assert.Throws("minimumLength", () => pool.Rent(-1)); + AssertExtensions.Throws("minimumLength", () => pool.Rent(-1)); } [Fact] @@ -145,7 +146,7 @@ public static void RentingAnArrayWithLengthGreaterThanSpecifiedInCreateStillSucc [MemberData(nameof(BytePoolInstances))] public static void CallingReturnBufferWithNullBufferThrows(ArrayPool pool) { - Assert.Throws("array", () => pool.Return(null)); + AssertExtensions.Throws("array", () => pool.Return(null)); } private static void FillArray(byte[] buffer) @@ -480,7 +481,7 @@ public static void RentingManyBuffersFiresExpectedDiagnosticEvents() [MemberData(nameof(BytePoolInstances))] public static void ReturningANonPooledBufferOfDifferentSizeToThePoolThrows(ArrayPool pool) { - Assert.Throws("array", () => pool.Return(new byte[1])); + AssertExtensions.Throws("array", () => pool.Return(new byte[1])); } [Theory] diff --git a/src/System.Buffers/tests/System.Buffers.Tests.csproj b/src/System.Buffers/tests/System.Buffers.Tests.csproj index 71a002e77aff..d8e2eb894249 100644 --- a/src/System.Buffers/tests/System.Buffers.Tests.csproj +++ b/src/System.Buffers/tests/System.Buffers.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.CodeDom/tests/CSharpCodeGenerationTests.cs b/src/System.CodeDom/tests/CSharpCodeGenerationTests.cs index 38777f60e431..01442cc94b0a 100644 --- a/src/System.CodeDom/tests/CSharpCodeGenerationTests.cs +++ b/src/System.CodeDom/tests/CSharpCodeGenerationTests.cs @@ -21,7 +21,7 @@ public void Provider_Ctor() { Assert.Equal("cs", new CSharpCodeProvider().FileExtension); Assert.Equal("cs", new CSharpCodeProvider(new Dictionary()).FileExtension); - Assert.Throws("providerOptions", () => new CSharpCodeProvider(null)); + AssertExtensions.Throws("providerOptions", () => new CSharpCodeProvider(null)); } [Fact] diff --git a/src/System.CodeDom/tests/CodeCollections/CodeCollectionTestBase.cs b/src/System.CodeDom/tests/CodeCollections/CodeCollectionTestBase.cs index 64df9883287b..f131a3853a56 100644 --- a/src/System.CodeDom/tests/CodeCollections/CodeCollectionTestBase.cs +++ b/src/System.CodeDom/tests/CodeCollections/CodeCollectionTestBase.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -82,21 +83,21 @@ public void AddRange_CodeStatementCollection_Works(TItem[] value) [Fact] public void AddRange_Null_ThrowsArgumentNullException() { - Assert.Throws("value", () => CtorArray(null)); - Assert.Throws("value", () => CtorCollection(null)); + AssertExtensions.Throws("value", () => CtorArray(null)); + AssertExtensions.Throws("value", () => CtorCollection(null)); var collection = Ctor(); - Assert.Throws("value", () => AddRange(collection, (TItem[])null)); - Assert.Throws("value", () => AddRange(collection, (TCollection)null)); + AssertExtensions.Throws("value", () => AddRange(collection, (TItem[])null)); + AssertExtensions.Throws("value", () => AddRange(collection, (TCollection)null)); } [Fact] public void AddRange_NullObjectInValue_ThrowsArgumentNullException() { - Assert.Throws("value", () => CtorArray(new TItem[] { null })); + AssertExtensions.Throws("value", () => CtorArray(new TItem[] { null })); var collection = Ctor(); - Assert.Throws("value", () => AddRange(collection, new TItem[] { null })); + AssertExtensions.Throws("value", () => AddRange(collection, new TItem[] { null })); } [Fact] @@ -125,7 +126,7 @@ public void Add_CodeStatement_Insert_Remove() public void Add_Null_ThrowsArgumentNullException() { var collection = Ctor(); - Assert.Throws("value", () => Add(collection, null)); + AssertExtensions.Throws("value", () => Add(collection, null)); } [Theory] @@ -134,21 +135,21 @@ public void Add_Null_ThrowsArgumentNullException() public void Insert_InvalidIndex_ThrowsArgumentOutOfRangeException(int index) { var collection = Ctor(); - Assert.Throws("index", () => Insert(collection, index, new TItem())); + AssertExtensions.Throws("index", () => Insert(collection, index, new TItem())); } [Fact] public void Insert_Null_ThrowsArgumentNullException() { var collection = Ctor(); - Assert.Throws("value", () => Insert(collection, 0, null)); + AssertExtensions.Throws("value", () => Insert(collection, 0, null)); } [Fact] public void Remove_Null_ThrowsArgumentNullException() { var collection = Ctor(); - Assert.Throws("value", () => Remove(collection, null)); + AssertExtensions.Throws("value", () => Remove(collection, null)); } [Fact] @@ -180,8 +181,8 @@ public void IndexOf_NoSuchObject_ReturnsMinusOne() public void Item_InvalidIndex_ThrowsArgumentOutOfRangeException(int index) { var collection = Ctor(); - Assert.Throws("index", () => GetItem(collection, index)); - Assert.Throws("index", () => SetItem(collection, index, new TItem())); + AssertExtensions.Throws("index", () => GetItem(collection, index)); + AssertExtensions.Throws("index", () => SetItem(collection, index, new TItem())); } [Fact] diff --git a/src/System.CodeDom/tests/CodeCollections/CodeNamespaceImportCollectionTests.cs b/src/System.CodeDom/tests/CodeCollections/CodeNamespaceImportCollectionTests.cs index b7cb7c22c2f3..824193a2ca54 100644 --- a/src/System.CodeDom/tests/CodeCollections/CodeNamespaceImportCollectionTests.cs +++ b/src/System.CodeDom/tests/CodeCollections/CodeNamespaceImportCollectionTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections; using System.Collections.Generic; using System.Collections.Tests; @@ -79,8 +80,8 @@ public void AddRange_CodeNamespaceArray_Works(CodeNamespaceImport[] value) public void AddRange_Null_ThrowsArgumentNullException() { var collection = new CodeNamespaceImportCollection(); - Assert.Throws("value", () => collection.AddRange(null)); - Assert.Throws("value", () => collection.AddRange(null)); + AssertExtensions.Throws("value", () => collection.AddRange(null)); + AssertExtensions.Throws("value", () => collection.AddRange(null)); } [Fact] @@ -96,8 +97,8 @@ public void AddRange_NullObjectInValue_ThrowsNullReferenceException() public void Item_InvalidIndex_ThrowsArgumentOutOfRangeException(int index) { var collection = new CodeNamespaceCollection(); - Assert.Throws("index", () => collection[index]); - Assert.Throws("index", () => collection[index] = new CodeNamespace()); + AssertExtensions.Throws("index", () => collection[index]); + AssertExtensions.Throws("index", () => collection[index] = new CodeNamespace()); } [Fact] diff --git a/src/System.CodeDom/tests/CodeCollections/CodeTypeReferenceCollectionTests.cs b/src/System.CodeDom/tests/CodeCollections/CodeTypeReferenceCollectionTests.cs index f5a05a91287f..97c7c35f2914 100644 --- a/src/System.CodeDom/tests/CodeCollections/CodeTypeReferenceCollectionTests.cs +++ b/src/System.CodeDom/tests/CodeCollections/CodeTypeReferenceCollectionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -55,7 +55,7 @@ public void Add_Type(Type type) public void Add_NullType_ThrowsArgumentNullException() { var collection = new CodeTypeReferenceCollection(); - Assert.Throws("type", () => collection.Add((Type)null)); + AssertExtensions.Throws("type", () => collection.Add((Type)null)); } } } diff --git a/src/System.CodeDom/tests/CodeCollections/TempFileCollectionTests.cs b/src/System.CodeDom/tests/CodeCollections/TempFileCollectionTests.cs index 9a934ed09fc2..03833ff81724 100644 --- a/src/System.CodeDom/tests/CodeCollections/TempFileCollectionTests.cs +++ b/src/System.CodeDom/tests/CodeCollections/TempFileCollectionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -121,8 +121,8 @@ public void AddExtension_InvalidFileExtension_ThrowsArgumentException(string fil { using (var collection = new TempFileCollection()) { - Assert.Throws("fileExtension", () => collection.AddExtension(fileExtension)); - Assert.Throws("fileExtension", () => collection.AddExtension(fileExtension, keepFile: false)); + AssertExtensions.Throws("fileExtension", () => collection.AddExtension(fileExtension)); + AssertExtensions.Throws("fileExtension", () => collection.AddExtension(fileExtension, keepFile: false)); } } @@ -204,7 +204,7 @@ public void AddFile_InvalidFileName_ThrowsArgumentException(string fileName) { using (var collection = new TempFileCollection()) { - Assert.Throws("fileName", () => collection.AddFile(fileName, keepFile: false)); + AssertExtensions.Throws("fileName", () => collection.AddFile(fileName, keepFile: false)); } } @@ -215,10 +215,10 @@ public void AddFile_DuplicateFileName_ThrowsArgumentException() { const string FileName = "FileName"; collection.AddFile(FileName, keepFile: false); - Assert.Throws("fileName", () => collection.AddFile(FileName, keepFile: false)); + AssertExtensions.Throws("fileName", () => collection.AddFile(FileName, keepFile: false)); // Case insensitive - Assert.Throws("fileName", () => collection.AddFile(FileName.ToLowerInvariant(), keepFile: false)); + AssertExtensions.Throws("fileName", () => collection.AddFile(FileName.ToLowerInvariant(), keepFile: false)); } } diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeArrayCreateExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeArrayCreateExpressionTests.cs index 25554fd9d780..e9c212efe4ea 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeArrayCreateExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeArrayCreateExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -194,26 +194,26 @@ public void Ctor_CodeTypeReference_CodeExpression(CodeTypeReference type) [Fact] public void Ctor_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeArrayCreateExpression((Type)null, new CodePrimitiveExpression())); - Assert.Throws("type", () => new CodeArrayCreateExpression((Type)null, new CodePrimitiveExpression[0])); - Assert.Throws("type", () => new CodeArrayCreateExpression((Type)null, 0)); + AssertExtensions.Throws("type", () => new CodeArrayCreateExpression((Type)null, new CodePrimitiveExpression())); + AssertExtensions.Throws("type", () => new CodeArrayCreateExpression((Type)null, new CodePrimitiveExpression[0])); + AssertExtensions.Throws("type", () => new CodeArrayCreateExpression((Type)null, 0)); } [Fact] public void Ctor_NullTypeInitializers_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeArrayCreateExpression("", (CodePrimitiveExpression[])null)); - Assert.Throws("value", () => new CodeArrayCreateExpression(typeof(void), (CodePrimitiveExpression[])null)); - Assert.Throws("value", () => new CodeArrayCreateExpression(new CodeTypeReference(), (CodePrimitiveExpression[])null)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression("", (CodePrimitiveExpression[])null)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression(typeof(void), (CodePrimitiveExpression[])null)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression(new CodeTypeReference(), (CodePrimitiveExpression[])null)); } [Fact] public void Ctor_NullTypeInInitalizers_ThrowsArgumentNullException() { CodePrimitiveExpression[] initializers = new CodePrimitiveExpression[] { null }; - Assert.Throws("value", () => new CodeArrayCreateExpression("", initializers)); - Assert.Throws("value", () => new CodeArrayCreateExpression(typeof(void), initializers)); - Assert.Throws("value", () => new CodeArrayCreateExpression(new CodeTypeReference(), initializers)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression("", initializers)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression(typeof(void), initializers)); + AssertExtensions.Throws("value", () => new CodeArrayCreateExpression(new CodeTypeReference(), initializers)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeArrayIndexerExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeArrayIndexerExpressionTests.cs index 6db5388f3bd9..edd7c54d8e1b 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeArrayIndexerExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeArrayIndexerExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -36,13 +36,13 @@ public void Ctor(CodeExpression targetObject, CodeExpression[] indices) [Fact] public void Ctor_NullIndices_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeArrayIndexerExpression(new CodeExpression(), null)); + AssertExtensions.Throws("value", () => new CodeArrayIndexerExpression(new CodeExpression(), null)); } [Fact] public void Ctor_NullObjectInIndices_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeArrayIndexerExpression(new CodeExpression(), new CodeExpression[] { null })); + AssertExtensions.Throws("value", () => new CodeArrayIndexerExpression(new CodeExpression(), new CodeExpression[] { null })); } [Theory] diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeDelegateInvokeExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeDelegateInvokeExpressionTests.cs index 7d594d4b6dec..b82165015793 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeDelegateInvokeExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeDelegateInvokeExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -47,14 +47,14 @@ public void Ctor_CodeExpression_ParamsCodeExpression(CodeExpression targetObject [Fact] public void Ctor_NullParameters_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeDelegateInvokeExpression(new CodePrimitiveExpression("Hello"), null)); + AssertExtensions.Throws("value", () => new CodeDelegateInvokeExpression(new CodePrimitiveExpression("Hello"), null)); } [Fact] public void Ctor_NullObjectInParameters_ThrowsArgumentNullException() { CodeExpression[] parameters = new CodeExpression[] { null }; - Assert.Throws("value", () => new CodeDelegateInvokeExpression(new CodePrimitiveExpression("Hello"), parameters)); + AssertExtensions.Throws("value", () => new CodeDelegateInvokeExpression(new CodePrimitiveExpression("Hello"), parameters)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeIndexerExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeIndexerExpressionTests.cs index 5404e31289c1..a1171f572e32 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeIndexerExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeIndexerExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -37,14 +37,14 @@ public void Ctor_CodeExpression_ParamsCodeExpression(CodeExpression targetObject [Fact] public void Ctor_NullIndices_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeIndexerExpression(new CodePrimitiveExpression("Hello"), null)); + AssertExtensions.Throws("value", () => new CodeIndexerExpression(new CodePrimitiveExpression("Hello"), null)); } [Fact] public void Ctor_NullObjectInIndices_ThrowsArgumentNullException() { CodeExpression[] parameters = new CodeExpression[] { null }; - Assert.Throws("value", () => new CodeIndexerExpression(new CodePrimitiveExpression("Hello"), parameters)); + AssertExtensions.Throws("value", () => new CodeIndexerExpression(new CodePrimitiveExpression("Hello"), parameters)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeMethodInvokeExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeMethodInvokeExpressionTests.cs index 65360fce3f46..9992b01637b2 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeMethodInvokeExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeMethodInvokeExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -56,14 +56,14 @@ public void Ctor(CodeExpression targetObject, string methodName, CodeExpression[ [Fact] public void Ctor_NullParameters_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(), null)); + AssertExtensions.Throws("value", () => new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(), null)); } [Fact] public void Ctor_NullObjectInParameters_ThrowsArgumentNullException() { CodeExpression[] parameters = new CodeExpression[] { null }; - Assert.Throws("value", () => new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(), parameters)); + AssertExtensions.Throws("value", () => new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(), parameters)); } public static IEnumerable CodeMethodReferenceExpression_TestData() diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeMethodReferenceExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeMethodReferenceExpressionTests.cs index 9e21d4f7cc4d..3398e648b10f 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeMethodReferenceExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeMethodReferenceExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -56,7 +56,7 @@ public void Ctor(CodeExpression targetObject, string methodName, CodeTypeReferen public void Ctor_NullObjectInParameters_ThrowsArgumentNullException() { CodeTypeReference[] parameters = new CodeTypeReference[] { null }; - Assert.Throws("value", () => new CodeMethodReferenceExpression(new CodePrimitiveExpression(), "", parameters)); + AssertExtensions.Throws("value", () => new CodeMethodReferenceExpression(new CodePrimitiveExpression(), "", parameters)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeExpressions/CodeObjectCreateExpressionTests.cs b/src/System.CodeDom/tests/CodeExpressions/CodeObjectCreateExpressionTests.cs index 74db4d7ba3be..dae170a98c9f 100644 --- a/src/System.CodeDom/tests/CodeExpressions/CodeObjectCreateExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeExpressions/CodeObjectCreateExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -69,9 +69,9 @@ public void Ctor_Type_String(Type type, CodeExpression[] parameters, string expe [Fact] public void Ctor_NullParameters_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeObjectCreateExpression(new CodeTypeReference(), null)); - Assert.Throws("value", () => new CodeObjectCreateExpression("System.Int32", null)); - Assert.Throws("value", () => new CodeObjectCreateExpression(typeof(int), null)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression(new CodeTypeReference(), null)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression("System.Int32", null)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression(typeof(int), null)); } [Fact] @@ -79,9 +79,9 @@ public void Ctor_NullObjectInParameters_ThrowsArgumentNullException() { CodeExpression[] parameters = new CodeExpression[] { null }; - Assert.Throws("value", () => new CodeObjectCreateExpression(new CodeTypeReference(), parameters)); - Assert.Throws("value", () => new CodeObjectCreateExpression("System.Int32", parameters)); - Assert.Throws("value", () => new CodeObjectCreateExpression(typeof(int), parameters)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression(new CodeTypeReference(), parameters)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression("System.Int32", parameters)); + AssertExtensions.Throws("value", () => new CodeObjectCreateExpression(typeof(int), parameters)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeObjects/CodeTypeReferenceTests.cs b/src/System.CodeDom/tests/CodeObjects/CodeTypeReferenceTests.cs index bdeb0e9a6384..8ae1dd531692 100644 --- a/src/System.CodeDom/tests/CodeObjects/CodeTypeReferenceTests.cs +++ b/src/System.CodeDom/tests/CodeObjects/CodeTypeReferenceTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -63,8 +63,8 @@ public void Ctor_Type_CodeReferenceTypeOptions_TestData(Type type, CodeTypeRefer [Fact] public void Ctor_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeTypeReference((Type)null)); - Assert.Throws("type", () => new CodeTypeReference((Type)null, CodeTypeReferenceOptions.GenericTypeParameter)); + AssertExtensions.Throws("type", () => new CodeTypeReference((Type)null)); + AssertExtensions.Throws("type", () => new CodeTypeReference((Type)null, CodeTypeReferenceOptions.GenericTypeParameter)); } public static IEnumerable Ctor_String_TestData() @@ -177,7 +177,7 @@ public void Ctor_String_ParamsCodeTypeReference(string name, CodeTypeReference[] public void Ctor_NullObjectInTypeArguments_ThrowsArgumentNullException() { CodeTypeReference[] typeArguments = new CodeTypeReference[] { null }; - Assert.Throws("value", () => new CodeTypeReference("System.Int32", typeArguments)); + AssertExtensions.Throws("value", () => new CodeTypeReference("System.Int32", typeArguments)); } public static IEnumerable Ctor_CodeTypeParameter_TestData() @@ -265,4 +265,4 @@ public class NestedClass { } } } -public class ClassWithoutNamespace { } \ No newline at end of file +public class ClassWithoutNamespace { } diff --git a/src/System.CodeDom/tests/CodeStatements/CodeGotoStatement.cs b/src/System.CodeDom/tests/CodeStatements/CodeGotoStatement.cs index bc55e41edce9..7e576e6a8ba2 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeGotoStatement.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeGotoStatement.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -29,7 +29,7 @@ public void Ctor_String(string label) [InlineData("")] public void Ctor_StringNullOrEmpty_ThrowsArgumentNullException(string value) { - Assert.Throws("value", () => new CodeGotoStatement(value)); + AssertExtensions.Throws("value", () => new CodeGotoStatement(value)); } [Theory] @@ -48,7 +48,7 @@ public void Label_Set_Get_ReturnsExpected(string value) public void Label_SetNullOrEmpty_ThrowsArgumentNullException(string value) { var gotoStatement = new CodeGotoStatement(); - Assert.Throws("value", () => gotoStatement.Label = value); + AssertExtensions.Throws("value", () => gotoStatement.Label = value); } } } diff --git a/src/System.CodeDom/tests/CodeStatements/CodeIterationStatementTests.cs b/src/System.CodeDom/tests/CodeStatements/CodeIterationStatementTests.cs index 9be8ea4b9230..d1f15e0fbe41 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeIterationStatementTests.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeIterationStatementTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -43,7 +43,7 @@ public void Ctor(CodeStatement initStatement, CodeExpression testExpression, Cod [InlineData("")] public void Ctor_NullStatements_ThrowsArgumentNullException(string value) { - Assert.Throws("value", () => new CodeIterationStatement(null, null, null, null)); + AssertExtensions.Throws("value", () => new CodeIterationStatement(null, null, null, null)); } [Theory] @@ -52,7 +52,7 @@ public void Ctor_NullStatements_ThrowsArgumentNullException(string value) public void Ctor_NullObjectInStatements_ThrowsArgumentNullException(string value) { CodeStatement[] statements = new CodeStatement[] { null }; - Assert.Throws("value", () => new CodeIterationStatement(null, null, null, statements)); + AssertExtensions.Throws("value", () => new CodeIterationStatement(null, null, null, statements)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeStatements/CodeTryCatchFinallyStatementTests.cs b/src/System.CodeDom/tests/CodeStatements/CodeTryCatchFinallyStatementTests.cs index 76f3ec7237a1..57c08102a562 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeTryCatchFinallyStatementTests.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeTryCatchFinallyStatementTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -59,44 +59,44 @@ public void Ctor_CodeStatementArray_CodeCatchClauseArray_CodeStatementArray(Code [Fact] public void Ctor_NullTryStatements_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(null, new CodeCatchClause[0])); - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(null, new CodeCatchClause[0], new CodeStatement[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(null, new CodeCatchClause[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(null, new CodeCatchClause[0], new CodeStatement[0])); } [Fact] public void Ctor_NullObjectInTryStatements_ThrowsArgumentNullException() { CodeStatement[] tryStatements = new CodeStatement[] { null }; - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(tryStatements, new CodeCatchClause[0])); - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(tryStatements, new CodeCatchClause[0], new CodeStatement[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(tryStatements, new CodeCatchClause[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(tryStatements, new CodeCatchClause[0], new CodeStatement[0])); } [Fact] public void Ctor_NullCodeCatchClauses_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], null)); - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], null, new CodeStatement[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], null)); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], null, new CodeStatement[0])); } [Fact] public void Ctor_NullObjectInCodeCatchClauses_ThrowsArgumentNullException() { CodeCatchClause[] catchClauses = new CodeCatchClause[] { null }; - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], catchClauses)); - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], catchClauses, new CodeStatement[0])); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], catchClauses)); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], catchClauses, new CodeStatement[0])); } [Fact] public void Ctor_NullFinallyStatements_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], new CodeCatchClause[0], null)); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], new CodeCatchClause[0], null)); } [Fact] public void Ctor_NullObjectInFinallyStatements_ThrowsArgumentNullException() { CodeStatement[] finallyStatements = new CodeStatement[] { null }; - Assert.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], new CodeCatchClause[0], finallyStatements)); + AssertExtensions.Throws("value", () => new CodeTryCatchFinallyStatement(new CodeStatement[0], new CodeCatchClause[0], finallyStatements)); } [Fact] diff --git a/src/System.CodeDom/tests/CodeStatements/CodeTypeOfExpressionTests.cs b/src/System.CodeDom/tests/CodeStatements/CodeTypeOfExpressionTests.cs index 9d2229e1a9f5..4adc63a784a3 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeTypeOfExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeTypeOfExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -57,7 +57,7 @@ public void Ctor_Type_CodeExpression(Type type, string expectedBaseType) [Fact] public void Ctor_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeTypeOfExpression((Type)null)); + AssertExtensions.Throws("type", () => new CodeTypeOfExpression((Type)null)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeStatements/CodeTypeReferenceExpressionTests.cs b/src/System.CodeDom/tests/CodeStatements/CodeTypeReferenceExpressionTests.cs index 96a11119f795..b81b2a19f2ff 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeTypeReferenceExpressionTests.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeTypeReferenceExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -57,7 +57,7 @@ public void Ctor_Type_CodeExpression(Type type, string expectedBaseType) [Fact] public void Ctor_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeTypeReferenceExpression((Type)null)); + AssertExtensions.Throws("type", () => new CodeTypeReferenceExpression((Type)null)); } [Theory] diff --git a/src/System.CodeDom/tests/CodeStatements/CodeVariableDeclarationStatementTests.cs b/src/System.CodeDom/tests/CodeStatements/CodeVariableDeclarationStatementTests.cs index caca8d2dbac9..4e0bd99bfaf0 100644 --- a/src/System.CodeDom/tests/CodeStatements/CodeVariableDeclarationStatementTests.cs +++ b/src/System.CodeDom/tests/CodeStatements/CodeVariableDeclarationStatementTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -123,8 +123,8 @@ public void Ctor_Type_String_CodeExpression(Type type, string name, CodeExpressi [Fact] public void Ctor_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeVariableDeclarationStatement((Type)null, "Name")); - Assert.Throws("type", () => new CodeVariableDeclarationStatement((Type)null, "Name", new CodePrimitiveExpression("Value"))); + AssertExtensions.Throws("type", () => new CodeVariableDeclarationStatement((Type)null, "Name")); + AssertExtensions.Throws("type", () => new CodeVariableDeclarationStatement((Type)null, "Name", new CodePrimitiveExpression("Value"))); } [Theory] diff --git a/src/System.CodeDom/tests/CodeTypeMembers/CodeMemberFieldTests.cs b/src/System.CodeDom/tests/CodeTypeMembers/CodeMemberFieldTests.cs index 7ba3dafb5628..f0d680f9afee 100644 --- a/src/System.CodeDom/tests/CodeTypeMembers/CodeMemberFieldTests.cs +++ b/src/System.CodeDom/tests/CodeTypeMembers/CodeMemberFieldTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -43,7 +43,7 @@ public void Ctor_Type_String(CodeTypeReference type) [Fact] public void Ctor_Type_String_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CodeMemberField((Type)null, "name")); + AssertExtensions.Throws("type", () => new CodeMemberField((Type)null, "name")); } public static IEnumerable Ctor_String_String_TestData() diff --git a/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs b/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs index 5cb3925a62d1..d5d1853ac494 100644 --- a/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs +++ b/src/System.CodeDom/tests/Compiler/CodeDomProviderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -61,7 +62,7 @@ public void GetConverter_ReturnsNotNull() [Fact] public void GetConverter_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => new CustomProvider().GetConverter(null)); + AssertExtensions.Throws("type", () => new CustomProvider().GetConverter(null)); } public static IEnumerable CreateProvider_String_TestData() @@ -110,15 +111,15 @@ public void CreateProvider_String_Dictionary(string language, Dictionary("providerOptions", () => CodeDomProvider.CreateProvider("cs", null)); - Assert.Throws("providerOptions", () => CodeDomProvider.CreateProvider("vb", null)); + AssertExtensions.Throws("providerOptions", () => CodeDomProvider.CreateProvider("cs", null)); + AssertExtensions.Throws("providerOptions", () => CodeDomProvider.CreateProvider("vb", null)); } [Fact] public void CreateProvider_NullLanguage_ThrowsArgumentNullException() { - Assert.Throws("language", () => CodeDomProvider.CreateProvider(null)); - Assert.Throws("language", () => CodeDomProvider.CreateProvider(null, new Dictionary())); + AssertExtensions.Throws("language", () => CodeDomProvider.CreateProvider(null)); + AssertExtensions.Throws("language", () => CodeDomProvider.CreateProvider(null, new Dictionary())); } [Theory] @@ -156,7 +157,7 @@ public void IsDefinedLanguage_ReturnsExpected(string language, bool expected) [Fact] public void IsDefinedLanguage_NullLanguage_ThrowsArgumentNullException() { - Assert.Throws("language", () => CodeDomProvider.IsDefinedLanguage(null)); + AssertExtensions.Throws("language", () => CodeDomProvider.IsDefinedLanguage(null)); } [Theory] @@ -176,7 +177,7 @@ public void GetLanguageFromExtension_ReturnsExpected(string extension, string ex [Fact] public void GetLanguageFromExtension_NullExtension_ThrowsArgumentNullException() { - Assert.Throws("extension", () => CodeDomProvider.GetLanguageFromExtension(null)); + AssertExtensions.Throws("extension", () => CodeDomProvider.GetLanguageFromExtension(null)); } [Theory] @@ -208,7 +209,7 @@ public void IsDefinedExtension_ReturnsExpected(string extension, bool expected) [Fact] public void IsDefinedExtension_NullExtension_ThrowsArgumentNullException() { - Assert.Throws("extension", () => CodeDomProvider.IsDefinedExtension(null)); + AssertExtensions.Throws("extension", () => CodeDomProvider.IsDefinedExtension(null)); } [Theory] @@ -230,7 +231,7 @@ public void GetCompilerInfo_ReturnsExpected(string language, Type expectedProvid [Fact] public void GetCompilerInfo_NullLanguage_ThrowsArgumentNullException() { - Assert.Throws("language", () => CodeDomProvider.GetCompilerInfo(null)); + AssertExtensions.Throws("language", () => CodeDomProvider.GetCompilerInfo(null)); } [Theory] @@ -258,7 +259,7 @@ public void CompileAssemblyFromDom_NullCompiler_ThrowsNotImplementedException() [Fact] public void CompileAssemblyFromFile_CallsCompilerMethod() { - Assert.Throws("2", () => new CustomProvider().CompileAssemblyFromFile(new CompilerParameters())); + AssertExtensions.Throws("2", () => new CustomProvider().CompileAssemblyFromFile(new CompilerParameters())); } [Fact] @@ -270,7 +271,7 @@ public void CompileAssemblyFromFile_NullCompiler_ThrowsNotImplementedException() [Fact] public void CompileAssemblyFromSource_CallsCompilerMethod() { - Assert.Throws("3", () => new CustomProvider().CompileAssemblyFromSource(new CompilerParameters())); + AssertExtensions.Throws("3", () => new CustomProvider().CompileAssemblyFromSource(new CompilerParameters())); } [Fact] @@ -294,7 +295,7 @@ public void CreateEscapedIdentifier_NullGenerator_ThrowsNotImplementedException( [Fact] public void CreateValidIdentifier_CallsGeneratorMethod() { - Assert.Throws("2", () => new CustomProvider().CreateValidIdentifier("value")); + AssertExtensions.Throws("2", () => new CustomProvider().CreateValidIdentifier("value")); } [Fact] @@ -306,7 +307,7 @@ public void CreateValidIdentifier_NullGenerator_ThrowsNotImplementedException() [Fact] public void GenerateCodeFromCompileUnit_CallsGeneratorMethod() { - Assert.Throws("3", () => new CustomProvider().GenerateCodeFromCompileUnit(new CodeCompileUnit(), new StringWriter(), new CodeGeneratorOptions())); + AssertExtensions.Throws("3", () => new CustomProvider().GenerateCodeFromCompileUnit(new CodeCompileUnit(), new StringWriter(), new CodeGeneratorOptions())); } [Fact] diff --git a/src/System.CodeDom/tests/Microsoft/CSharp/CSharpCodeProviderTests.cs b/src/System.CodeDom/tests/Microsoft/CSharp/CSharpCodeProviderTests.cs index 8029ec29c1ad..78b72bd8b541 100644 --- a/src/System.CodeDom/tests/Microsoft/CSharp/CSharpCodeProviderTests.cs +++ b/src/System.CodeDom/tests/Microsoft/CSharp/CSharpCodeProviderTests.cs @@ -42,7 +42,7 @@ public void Ctor_IDictionaryStringString(IDictionary providerOpt [Fact] public void Ctor_NullProviderOptions_ThrowsArgumentNullException() { - Assert.Throws("providerOptions", () => new CSharpCodeProvider(null)); + AssertExtensions.Throws("providerOptions", () => new CSharpCodeProvider(null)); } [Fact] diff --git a/src/System.CodeDom/tests/Microsoft/VisualBasic/VBCodeProviderTests.cs b/src/System.CodeDom/tests/Microsoft/VisualBasic/VBCodeProviderTests.cs index ab914da481b2..6ee94a749ac8 100644 --- a/src/System.CodeDom/tests/Microsoft/VisualBasic/VBCodeProviderTests.cs +++ b/src/System.CodeDom/tests/Microsoft/VisualBasic/VBCodeProviderTests.cs @@ -42,7 +42,7 @@ public void Ctor_IDictionaryStringString(IDictionary providerOpt [Fact] public void Ctor_NullProviderOptions_ThrowsArgumentNullException() { - Assert.Throws("providerOptions", () => new VBCodeProvider(null)); + AssertExtensions.Throws("providerOptions", () => new VBCodeProvider(null)); } [Fact] diff --git a/src/System.CodeDom/tests/Other/CodeAttributeDeclarationTests.cs b/src/System.CodeDom/tests/Other/CodeAttributeDeclarationTests.cs index 960ebc8e398a..64040e83df0b 100644 --- a/src/System.CodeDom/tests/Other/CodeAttributeDeclarationTests.cs +++ b/src/System.CodeDom/tests/Other/CodeAttributeDeclarationTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -73,15 +73,15 @@ public void Ctor_CodeTypeReference(CodeTypeReference attributeType, CodeAttribut [Fact] public void Ctor_NullArguments_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeAttributeDeclaration("name", null)); + AssertExtensions.Throws("value", () => new CodeAttributeDeclaration("name", null)); } [Fact] public void Ctor_NullObjectInArguments_ThrowsArgumentNullException() { CodeAttributeArgument[] arguments = new CodeAttributeArgument[] { null }; - Assert.Throws("value", () => new CodeAttributeDeclaration("name", arguments)); - Assert.Throws("value", () => new CodeAttributeDeclaration(new CodeTypeReference(), arguments)); + AssertExtensions.Throws("value", () => new CodeAttributeDeclaration("name", arguments)); + AssertExtensions.Throws("value", () => new CodeAttributeDeclaration(new CodeTypeReference(), arguments)); } [Theory] diff --git a/src/System.CodeDom/tests/Other/CodeCatchClauseTests.cs b/src/System.CodeDom/tests/Other/CodeCatchClauseTests.cs index 5d412542d7a7..7dbdb5644f39 100644 --- a/src/System.CodeDom/tests/Other/CodeCatchClauseTests.cs +++ b/src/System.CodeDom/tests/Other/CodeCatchClauseTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -67,14 +67,14 @@ public void Ctor_String_CodeTypeReference_ParamsCodeStatement(string localName, [Fact] public void Ctor_NullStatements_ThrowsArgumentNullException() { - Assert.Throws("value", () => new CodeCatchClause("name", new CodeTypeReference(typeof(void)), null)); + AssertExtensions.Throws("value", () => new CodeCatchClause("name", new CodeTypeReference(typeof(void)), null)); } [Fact] public void Ctor_NullObjectInStatements_ThrowsArgumentNullException() { CodeStatement[] statements = new CodeStatement[] { null }; - Assert.Throws("value", () => new CodeCatchClause("name", new CodeTypeReference(typeof(void)), statements)); + AssertExtensions.Throws("value", () => new CodeCatchClause("name", new CodeTypeReference(typeof(void)), statements)); } [Theory] diff --git a/src/System.CodeDom/tests/System.CodeDom.Tests.csproj b/src/System.CodeDom/tests/System.CodeDom.Tests.csproj index c0c0a2802fee..f254dd39dcfa 100644 --- a/src/System.CodeDom/tests/System.CodeDom.Tests.csproj +++ b/src/System.CodeDom/tests/System.CodeDom.Tests.csproj @@ -91,6 +91,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs diff --git a/src/System.CodeDom/tests/VBCodeGenerationTests.cs b/src/System.CodeDom/tests/VBCodeGenerationTests.cs index 619694b8ba9d..c5dbb6995a65 100644 --- a/src/System.CodeDom/tests/VBCodeGenerationTests.cs +++ b/src/System.CodeDom/tests/VBCodeGenerationTests.cs @@ -25,7 +25,7 @@ public void Provider_Ctor() { Assert.Equal("vb", new VBCodeProvider().FileExtension); Assert.Equal("vb", new VBCodeProvider(new Dictionary()).FileExtension); - Assert.Throws("providerOptions", () => new VBCodeProvider(null)); + AssertExtensions.Throws("providerOptions", () => new VBCodeProvider(null)); } [Fact] diff --git a/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs b/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs index 55171a457da1..c0fb3f04cce4 100644 --- a/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs +++ b/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs @@ -4,6 +4,7 @@ // #define StressTest // set to raise the amount of time spent in concurrency tests that stress the collections +using System; using System.Collections.Generic; using System.Collections.Tests; using System.Diagnostics; @@ -43,7 +44,7 @@ public abstract class ProducerConsumerCollectionTests : IEnumerable_Generic_Test [Fact] public void Ctor_InvalidArgs_Throws() { - Assert.Throws("collection", () => CreateProducerConsumerCollection(null)); + AssertExtensions.Throws("collection", () => CreateProducerConsumerCollection(null)); } [Fact] @@ -455,7 +456,7 @@ public void CopyTo_InvalidArgs_Throws() IProducerConsumerCollection c = CreateProducerConsumerCollection(Enumerable.Range(0, 10)); int[] dest = new int[10]; - Assert.Throws("array", () => c.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => c.CopyTo(null, 0)); Assert.Throws(() => c.CopyTo(dest, -1)); Assert.Throws(() => c.CopyTo(dest, dest.Length)); Assert.Throws(() => c.CopyTo(dest, dest.Length - 2)); @@ -469,7 +470,7 @@ public void ICollectionCopyTo_InvalidArgs_Throws() ICollection c = CreateProducerConsumerCollection(Enumerable.Range(0, 10)); Array dest = new int[10]; - Assert.Throws("array", () => c.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => c.CopyTo(null, 0)); Assert.Throws(() => c.CopyTo(dest, -1)); Assert.Throws(() => c.CopyTo(dest, dest.Length)); Assert.Throws(() => c.CopyTo(dest, dest.Length - 2)); diff --git a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj index 5d3c9a88962d..364d7fad3494 100644 --- a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj +++ b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Collections\DictionaryExtensions.cs diff --git a/src/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs b/src/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs index 2bf6bcc7ce7c..f43ac458fbc0 100644 --- a/src/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs @@ -22,7 +22,7 @@ public void CreateBuilderDefaultCapacity() [Fact] public void CreateBuilderInvalidCapacity() { - Assert.Throws("capacity", () => ImmutableArray.CreateBuilder(-1)); + AssertExtensions.Throws("capacity", () => ImmutableArray.CreateBuilder(-1)); } [Fact] @@ -134,20 +134,20 @@ public void AddRangeImmutableArray() builder1.AddRange(array); Assert.Equal(new[] { 1, 2, 3 }, builder1); - Assert.Throws("items", () => builder1.AddRange((int[])null)); - Assert.Throws("items", () => builder1.AddRange(null, 42)); - Assert.Throws("length", () => builder1.AddRange(new int[0], -1)); - Assert.Throws("length", () => builder1.AddRange(new int[0], 42)); + AssertExtensions.Throws("items", () => builder1.AddRange((int[])null)); + AssertExtensions.Throws("items", () => builder1.AddRange(null, 42)); + AssertExtensions.Throws("length", () => builder1.AddRange(new int[0], -1)); + AssertExtensions.Throws("length", () => builder1.AddRange(new int[0], 42)); - Assert.Throws("items", () => builder1.AddRange((ImmutableArray.Builder)null)); - Assert.Throws("items", () => builder1.AddRange((IEnumerable)null)); + AssertExtensions.Throws("items", () => builder1.AddRange((ImmutableArray.Builder)null)); + AssertExtensions.Throws("items", () => builder1.AddRange((IEnumerable)null)); Assert.Throws(() => builder1.AddRange(default(ImmutableArray))); builder1.AddRange(default(ImmutableArray), 42); var builder2 = new ImmutableArray.Builder(); builder2.AddRange(default(ImmutableArray)); - Assert.Throws("items", () => builder2.AddRange((ImmutableArray.Builder)null)); + AssertExtensions.Throws("items", () => builder2.AddRange((ImmutableArray.Builder)null)); } [Fact] @@ -217,8 +217,8 @@ public void Insert() builder.Insert(1, 4); builder.Insert(4, 5); Assert.Equal(new[] { 1, 4, 2, 3, 5 }, builder); - Assert.Throws("index", () => builder.Insert(-1, 0)); - Assert.Throws("index", () => builder.Insert(builder.Count + 1, 0)); + AssertExtensions.Throws("index", () => builder.Insert(-1, 0)); + AssertExtensions.Throws("index", () => builder.Insert(builder.Count + 1, 0)); } [Fact] @@ -243,8 +243,8 @@ public void RemoveAt() var builder = new ImmutableArray.Builder(); builder.AddRange(1, 2, 3, 4); builder.RemoveAt(0); - Assert.Throws("index", () => builder.RemoveAt(-1)); - Assert.Throws("index", () => builder.RemoveAt(3)); + AssertExtensions.Throws("index", () => builder.RemoveAt(-1)); + AssertExtensions.Throws("index", () => builder.RemoveAt(3)); Assert.Equal(new[] { 2, 3, 4 }, builder); builder.RemoveAt(1); Assert.Equal(new[] { 2, 4 }, builder); @@ -308,7 +308,7 @@ public void Sort_Comparison() [Fact] public void Sort_NullComparison_Throws() { - Assert.Throws("comparison", () => ImmutableArray.CreateBuilder().Sort((Comparison)null)); + AssertExtensions.Throws("comparison", () => ImmutableArray.CreateBuilder().Sort((Comparison)null)); } [Fact] @@ -351,9 +351,9 @@ public void SortRange() { var builder = new ImmutableArray.Builder(); builder.AddRange(2, 4, 1, 3); - Assert.Throws("index", () => builder.Sort(-1, 2, Comparer.Default)); - Assert.Throws("count", () => builder.Sort(1, 4, Comparer.Default)); - Assert.Throws("count", () => builder.Sort(0, -1, Comparer.Default)); + AssertExtensions.Throws("index", () => builder.Sort(-1, 2, Comparer.Default)); + AssertExtensions.Throws("count", () => builder.Sort(1, 4, Comparer.Default)); + AssertExtensions.Throws("count", () => builder.Sort(0, -1, Comparer.Default)); builder.Sort(builder.Count, 0, Comparer.Default); Assert.Equal(new int[] { 2, 4, 1, 3 }, builder); @@ -462,9 +462,9 @@ public void CopyTo() builder.CopyTo(target, 1); Assert.Equal(new[] { 0, 1, 2, 3 }, target); - Assert.Throws("array", () => builder.CopyTo(null, 0)); - Assert.Throws("index", () => builder.CopyTo(target, -1)); - Assert.Throws("index", () => builder.CopyTo(target, 2)); + AssertExtensions.Throws("array", () => builder.CopyTo(null, 0)); + AssertExtensions.Throws("index", () => builder.CopyTo(target, -1)); + AssertExtensions.Throws("index", () => builder.CopyTo(target, 2)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableArrayExtensionsTest.cs b/src/System.Collections.Immutable/tests/ImmutableArrayExtensionsTest.cs index 91c35c3f29eb..97953c9824a7 100644 --- a/src/System.Collections.Immutable/tests/ImmutableArrayExtensionsTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableArrayExtensionsTest.cs @@ -25,7 +25,7 @@ public class ImmutableArrayExtensionsTest public void Select() { Assert.Equal(new[] { 4, 5, 6 }, ImmutableArrayExtensions.Select(s_manyElements, n => n + 3)); - Assert.Throws("selector", () => ImmutableArrayExtensions.Select(s_manyElements, null)); + AssertExtensions.Throws("selector", () => ImmutableArrayExtensions.Select(s_manyElements, null)); } [Fact] @@ -38,7 +38,7 @@ public void SelectEmptyDefault() [Fact] public void SelectEmpty() { - Assert.Throws("selector", () => ImmutableArrayExtensions.Select(s_empty, null)); + AssertExtensions.Throws("selector", () => ImmutableArrayExtensions.Select(s_empty, null)); Assert.False(ImmutableArrayExtensions.Select(s_empty, n => true).Any()); } @@ -55,9 +55,9 @@ public void SelectMany() } Assert.Throws(() => ImmutableArrayExtensions.SelectMany(s_emptyDefault, null, null)); - Assert.Throws("collectionSelector", () => + AssertExtensions.Throws("collectionSelector", () => ImmutableArrayExtensions.SelectMany(s_manyElements, null, (i, e) => e)); - Assert.Throws("resultSelector", () => + AssertExtensions.Throws("resultSelector", () => ImmutableArrayExtensions.SelectMany(s_manyElements, i => new[] { i }, null)); } @@ -65,7 +65,7 @@ public void SelectMany() public void Where() { Assert.Equal(new[] { 2, 3 }, ImmutableArrayExtensions.Where(s_manyElements, n => n > 1)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.Where(s_manyElements, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Where(s_manyElements, null)); } [Fact] @@ -78,14 +78,14 @@ public void WhereEmptyDefault() [Fact] public void WhereEmpty() { - Assert.Throws("predicate", () => ImmutableArrayExtensions.Where(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Where(s_empty, null)); Assert.False(ImmutableArrayExtensions.Where(s_empty, n => true).Any()); } [Fact] public void Any() { - Assert.Throws("predicate", () => ImmutableArrayExtensions.Any(s_oneElement, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Any(s_oneElement, null)); Assert.True(ImmutableArrayExtensions.Any(s_oneElement)); Assert.True(ImmutableArrayExtensions.Any(s_manyElements, n => n == 2)); Assert.False(ImmutableArrayExtensions.Any(s_manyElements, n => n == 4)); @@ -103,7 +103,7 @@ public void AnyEmptyDefault() [Fact] public void AnyEmpty() { - Assert.Throws("predicate", () => ImmutableArrayExtensions.Any(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Any(s_empty, null)); Assert.False(ImmutableArrayExtensions.Any(s_empty)); Assert.False(ImmutableArrayExtensions.Any(s_empty, n => true)); } @@ -111,7 +111,7 @@ public void AnyEmpty() [Fact] public void All() { - Assert.Throws("predicate", () => ImmutableArrayExtensions.All(s_oneElement, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.All(s_oneElement, null)); Assert.False(ImmutableArrayExtensions.All(s_manyElements, n => n == 2)); Assert.True(ImmutableArrayExtensions.All(s_manyElements, n => n > 0)); } @@ -126,14 +126,14 @@ public void AllEmptyDefault() [Fact] public void AllEmpty() { - Assert.Throws("predicate", () => ImmutableArrayExtensions.All(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.All(s_empty, null)); Assert.True(ImmutableArrayExtensions.All(s_empty, n => { throw new ShouldNotBeInvokedException(); })); // predicate should never be invoked. } [Fact] public void SequenceEqual() { - Assert.Throws("items", () => ImmutableArrayExtensions.SequenceEqual(s_oneElement, (IEnumerable)null)); + AssertExtensions.Throws("items", () => ImmutableArrayExtensions.SequenceEqual(s_oneElement, (IEnumerable)null)); foreach (IEqualityComparer comparer in new[] { null, EqualityComparer.Default }) { @@ -156,7 +156,7 @@ public void SequenceEqual() Assert.True(ImmutableArrayExtensions.SequenceEqual(s_manyElements.Add(1), s_manyElements.Add(1), (a, b) => a == b)); Assert.False(ImmutableArrayExtensions.SequenceEqual(s_manyElements, ImmutableArray.Create(s_manyElements.ToArray()), (a, b) => false)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.SequenceEqual(s_oneElement, s_oneElement, (Func)null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.SequenceEqual(s_oneElement, s_oneElement, (Func)null)); } [Fact] @@ -165,13 +165,13 @@ public void SequenceEqualEmptyDefault() Assert.Throws(() => ImmutableArrayExtensions.SequenceEqual(s_oneElement, s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.SequenceEqual(s_emptyDefault, s_empty)); Assert.Throws(() => ImmutableArrayExtensions.SequenceEqual(s_emptyDefault, s_emptyDefault)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.SequenceEqual(s_emptyDefault, s_emptyDefault, (Func)null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.SequenceEqual(s_emptyDefault, s_emptyDefault, (Func)null)); } [Fact] public void SequenceEqualEmpty() { - Assert.Throws("items", () => ImmutableArrayExtensions.SequenceEqual(s_empty, (IEnumerable)null)); + AssertExtensions.Throws("items", () => ImmutableArrayExtensions.SequenceEqual(s_empty, (IEnumerable)null)); Assert.True(ImmutableArrayExtensions.SequenceEqual(s_empty, s_empty)); Assert.True(ImmutableArrayExtensions.SequenceEqual(s_empty, s_empty.ToArray())); Assert.True(ImmutableArrayExtensions.SequenceEqual(s_empty, s_empty, (a, b) => true)); @@ -181,10 +181,10 @@ public void SequenceEqualEmpty() [Fact] public void Aggregate() { - Assert.Throws("func", () => ImmutableArrayExtensions.Aggregate(s_oneElement, null)); - Assert.Throws("func", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, null)); - Assert.Throws("resultSelector", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, null, null)); - Assert.Throws("resultSelector", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, (a, b) => a + b, null)); + AssertExtensions.Throws("func", () => ImmutableArrayExtensions.Aggregate(s_oneElement, null)); + AssertExtensions.Throws("func", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, null)); + AssertExtensions.Throws("resultSelector", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, null, null)); + AssertExtensions.Throws("resultSelector", () => ImmutableArrayExtensions.Aggregate(s_oneElement, 1, (a, b) => a + b, null)); Assert.Equal(Enumerable.Aggregate(s_manyElements, (a, b) => a * b), ImmutableArrayExtensions.Aggregate(s_manyElements, (a, b) => a * b)); Assert.Equal(Enumerable.Aggregate(s_manyElements, 5, (a, b) => a * b), ImmutableArrayExtensions.Aggregate(s_manyElements, 5, (a, b) => a * b)); @@ -258,7 +258,7 @@ public void FirstEmpty() { Assert.Throws(() => ImmutableArrayExtensions.First(s_empty)); Assert.Throws(() => ImmutableArrayExtensions.First(s_empty, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.First(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.First(s_empty, null)); Assert.Throws(() => ImmutableArrayExtensions.First(s_emptyBuilder)); } @@ -268,7 +268,7 @@ public void FirstEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.First(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.First(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.First(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.First(s_emptyDefault, null)); } [Fact] @@ -293,7 +293,7 @@ public void FirstOrDefaultEmpty() { Assert.Equal(0, ImmutableArrayExtensions.FirstOrDefault(s_empty)); Assert.Equal(0, ImmutableArrayExtensions.FirstOrDefault(s_empty, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.FirstOrDefault(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.FirstOrDefault(s_empty, null)); Assert.Equal(0, ImmutableArrayExtensions.FirstOrDefault(s_emptyBuilder)); } @@ -303,7 +303,7 @@ public void FirstOrDefaultEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.FirstOrDefault(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.FirstOrDefault(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.FirstOrDefault(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.FirstOrDefault(s_emptyDefault, null)); } [Fact] @@ -336,7 +336,7 @@ public void LastEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.Last(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.Last(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.Last(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Last(s_emptyDefault, null)); } [Fact] @@ -361,7 +361,7 @@ public void LastOrDefaultEmpty() { Assert.Equal(0, ImmutableArrayExtensions.LastOrDefault(s_empty)); Assert.Equal(0, ImmutableArrayExtensions.LastOrDefault(s_empty, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.LastOrDefault(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.LastOrDefault(s_empty, null)); Assert.Equal(0, ImmutableArrayExtensions.LastOrDefault(s_emptyBuilder)); } @@ -371,7 +371,7 @@ public void LastOrDefaultEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.LastOrDefault(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.LastOrDefault(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.LastOrDefault(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.LastOrDefault(s_emptyDefault, null)); } [Fact] @@ -390,7 +390,7 @@ public void SingleEmpty() { Assert.Throws(() => ImmutableArrayExtensions.Single(s_empty)); Assert.Throws(() => ImmutableArrayExtensions.Single(s_empty, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.Single(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Single(s_empty, null)); } [Fact] @@ -398,7 +398,7 @@ public void SingleEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.Single(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.Single(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.Single(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.Single(s_emptyDefault, null)); } [Fact] @@ -409,7 +409,7 @@ public void SingleOrDefault() Assert.Equal(Enumerable.SingleOrDefault(s_oneElement, i => false), ImmutableArrayExtensions.SingleOrDefault(s_oneElement, i => false)); Assert.Throws(() => ImmutableArrayExtensions.SingleOrDefault(s_manyElements)); Assert.Throws(() => ImmutableArrayExtensions.SingleOrDefault(s_manyElements, i => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_oneElement, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_oneElement, null)); } [Fact] @@ -417,7 +417,7 @@ public void SingleOrDefaultEmpty() { Assert.Equal(0, ImmutableArrayExtensions.SingleOrDefault(s_empty)); Assert.Equal(0, ImmutableArrayExtensions.SingleOrDefault(s_empty, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_empty, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_empty, null)); } [Fact] @@ -425,17 +425,17 @@ public void SingleOrDefaultEmptyDefault() { Assert.Throws(() => ImmutableArrayExtensions.SingleOrDefault(s_emptyDefault)); Assert.Throws(() => ImmutableArrayExtensions.SingleOrDefault(s_emptyDefault, n => true)); - Assert.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_emptyDefault, null)); + AssertExtensions.Throws("predicate", () => ImmutableArrayExtensions.SingleOrDefault(s_emptyDefault, null)); } [Fact] public void ToDictionary() { - Assert.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null)); - Assert.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null, n => n)); - Assert.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null, n => n, EqualityComparer.Default)); - Assert.Throws("elementSelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, n => n, (Func)null)); - Assert.Throws("elementSelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, n => n, (Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null)); + AssertExtensions.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null, n => n)); + AssertExtensions.Throws("keySelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, (Func)null, n => n, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, n => n, (Func)null)); + AssertExtensions.Throws("elementSelector", () => ImmutableArrayExtensions.ToDictionary(s_manyElements, n => n, (Func)null, EqualityComparer.Default)); var stringToString = ImmutableArrayExtensions.ToDictionary(s_manyElements, n => n.ToString(), n => (n * 2).ToString()); Assert.Equal(stringToString.Count, s_manyElements.Length); diff --git a/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs b/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs index 00e301ac7e5c..786732d0bd86 100644 --- a/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableArrayTest.cs @@ -95,7 +95,7 @@ public void CreateRange(IEnumerable source) [Fact] public void CreateRangeInvalid() { - Assert.Throws("items", () => ImmutableArray.CreateRange((IEnumerable)null)); + AssertExtensions.Throws("items", () => ImmutableArray.CreateRange((IEnumerable)null)); } [Fact] @@ -126,9 +126,9 @@ public static IEnumerable CreateRangeWithSelectorData() [MemberData(nameof(Int32EnumerableData))] public void CreateRangeWithSelectorInvalid(IEnumerable source) { - Assert.Throws("selector", () => ImmutableArray.CreateRange(source.ToImmutableArray(), (Func)null)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(source.ToImmutableArray(), (Func)null)); // If both parameters are invalid, the selector should be validated first. - Assert.Throws("selector", () => ImmutableArray.CreateRange(s_emptyDefault, (Func)null)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(s_emptyDefault, (Func)null)); Assert.Throws(() => ImmutableArray.CreateRange(s_emptyDefault, i => i)); } @@ -154,9 +154,9 @@ public static IEnumerable CreateRangeWithSelectorAndArgumentData() [MemberData(nameof(Int32EnumerableData))] public void CreateRangeWithSelectorAndArgumentInvalid(IEnumerable source) { - Assert.Throws("selector", () => ImmutableArray.CreateRange(source.ToImmutableArray(), (Func)null, 0)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(source.ToImmutableArray(), (Func)null, 0)); // If both parameters are invalid, the selector should be validated first. - Assert.Throws("selector", () => ImmutableArray.CreateRange(s_emptyDefault, (Func)null, 0)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(s_emptyDefault, (Func)null, 0)); Assert.Throws(() => ImmutableArray.CreateRange(s_emptyDefault, (x, y) => 0, 0)); } @@ -189,15 +189,15 @@ public void CreateRangeSliceWithSelectorInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("selector", () => ImmutableArray.CreateRange(array, 0, 0, (Func)null)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(array, 0, 0, (Func)null)); - Assert.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, (Func)null)); - Assert.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, i => i)); + AssertExtensions.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, (Func)null)); + AssertExtensions.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, i => i)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, 0, array.Length + 1, i => i)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, array.Length, 1, i => i)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, Math.Max(0, array.Length - 1), 2, i => i)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, 0, -1, i => i)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, 0, array.Length + 1, i => i)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, array.Length, 1, i => i)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, Math.Max(0, array.Length - 1), 2, i => i)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, 0, -1, i => i)); Assert.Throws(() => ImmutableArray.CreateRange(s_emptyDefault, 0, 0, i => i)); } @@ -233,15 +233,15 @@ public void CreateRangeSliceWithSelectorAndArgumentInvalid(IEnumerable sour { var array = source.ToImmutableArray(); - Assert.Throws("selector", () => ImmutableArray.CreateRange(array, 0, 0, (Func)null, 0)); + AssertExtensions.Throws("selector", () => ImmutableArray.CreateRange(array, 0, 0, (Func)null, 0)); - Assert.Throws("start", () => ImmutableArray.CreateRange(s_empty, -1, 1, (Func)null, 0)); - Assert.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, (i, j) => i + j, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.CreateRange(s_empty, -1, 1, (Func)null, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.CreateRange(array, -1, 1, (i, j) => i + j, 0)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, 0, array.Length + 1, (i, j) => i + j, 0)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, array.Length, 1, (i, j) => i + j, 0)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, Math.Max(0, array.Length - 1), 2, (i, j) => i + j, 0)); - Assert.Throws("length", () => ImmutableArray.CreateRange(array, 0, -1, (i, j) => i + j, 0)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, 0, array.Length + 1, (i, j) => i + j, 0)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, array.Length, 1, (i, j) => i + j, 0)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, Math.Max(0, array.Length - 1), 2, (i, j) => i + j, 0)); + AssertExtensions.Throws("length", () => ImmutableArray.CreateRange(array, 0, -1, (i, j) => i + j, 0)); Assert.Throws(() => ImmutableArray.CreateRange(s_emptyDefault, 0, 0, (x, y) => 0, 0)); } @@ -270,16 +270,16 @@ public void CreateFromSliceOfImmutableArrayInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("start", () => ImmutableArray.Create(array, -1, 0)); - Assert.Throws("start", () => ImmutableArray.Create(array, array.Length + 1, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.Create(array, -1, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.Create(array, array.Length + 1, 0)); - Assert.Throws("length", () => ImmutableArray.Create(array, 0, -1)); - Assert.Throws("length", () => ImmutableArray.Create(array, 0, array.Length + 1)); - Assert.Throws("length", () => ImmutableArray.Create(array, Math.Max(0, array.Length - 1), 2)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 0, -1)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 0, array.Length + 1)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, Math.Max(0, array.Length - 1), 2)); if (array.Length > 0) { - Assert.Throws("length", () => ImmutableArray.Create(array, 1, array.Length)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 1, array.Length)); } } @@ -307,16 +307,16 @@ public void CreateFromSliceOfArrayInvalid(IEnumerable source) { var array = source.ToArray(); - Assert.Throws("start", () => ImmutableArray.Create(array, -1, 0)); - Assert.Throws("start", () => ImmutableArray.Create(array, array.Length + 1, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.Create(array, -1, 0)); + AssertExtensions.Throws("start", () => ImmutableArray.Create(array, array.Length + 1, 0)); - Assert.Throws("length", () => ImmutableArray.Create(array, 0, -1)); - Assert.Throws("length", () => ImmutableArray.Create(array, 0, array.Length + 1)); - Assert.Throws("length", () => ImmutableArray.Create(array, Math.Max(0, array.Length - 1), 2)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 0, -1)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 0, array.Length + 1)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, Math.Max(0, array.Length - 1), 2)); if (array.Length > 0) { - Assert.Throws("length", () => ImmutableArray.Create(array, 1, array.Length)); + AssertExtensions.Throws("length", () => ImmutableArray.Create(array, 1, array.Length)); } } @@ -1003,8 +1003,8 @@ public void InsertInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.Insert(-1, 0x61)); - Assert.Throws("index", () => array.Insert(array.Length + 1, 0x61)); + AssertExtensions.Throws("index", () => array.Insert(-1, 0x61)); + AssertExtensions.Throws("index", () => array.Insert(array.Length + 1, 0x61)); } [Theory] @@ -1022,11 +1022,11 @@ public void InsertRangeInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.InsertRange(array.Length + 1, s_oneElement)); - Assert.Throws("index", () => array.InsertRange(-1, s_oneElement)); + AssertExtensions.Throws("index", () => array.InsertRange(array.Length + 1, s_oneElement)); + AssertExtensions.Throws("index", () => array.InsertRange(-1, s_oneElement)); - Assert.Throws("index", () => array.InsertRange(array.Length + 1, (IEnumerable)s_oneElement)); - Assert.Throws("index", () => array.InsertRange(-1, (IEnumerable)s_oneElement)); + AssertExtensions.Throws("index", () => array.InsertRange(array.Length + 1, (IEnumerable)s_oneElement)); + AssertExtensions.Throws("index", () => array.InsertRange(-1, (IEnumerable)s_oneElement)); } [Theory] @@ -1121,9 +1121,9 @@ public void RemoveAtInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.RemoveAt(-1)); - Assert.Throws("length", () => array.RemoveAt(array.Length)); - Assert.Throws("index", () => array.RemoveAt(array.Length + 1)); + AssertExtensions.Throws("index", () => array.RemoveAt(-1)); + AssertExtensions.Throws("length", () => array.RemoveAt(array.Length)); + AssertExtensions.Throws("index", () => array.RemoveAt(array.Length + 1)); } [Theory] @@ -1210,10 +1210,10 @@ public void RemoveRangeIndexLengthInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.RemoveRange(-1, 1)); - Assert.Throws("index", () => array.RemoveRange(array.Length + 1, 1)); - Assert.Throws("length", () => array.RemoveRange(0, -1)); - Assert.Throws("length", () => array.RemoveRange(0, array.Length + 1)); + AssertExtensions.Throws("index", () => array.RemoveRange(-1, 1)); + AssertExtensions.Throws("index", () => array.RemoveRange(array.Length + 1, 1)); + AssertExtensions.Throws("length", () => array.RemoveRange(0, -1)); + AssertExtensions.Throws("length", () => array.RemoveRange(0, array.Length + 1)); } [Theory] @@ -1292,8 +1292,8 @@ public void RemoveRangeEnumerableInvalid(IEnumerable source) Assert.Throws(() => s_emptyDefault.RemoveRange(array, comparer)); // Struct overloads, rhs is default - Assert.Throws("items", () => array.RemoveRange(s_emptyDefault)); - Assert.Throws("items", () => array.RemoveRange(s_emptyDefault, comparer)); + AssertExtensions.Throws("items", () => array.RemoveRange(s_emptyDefault)); + AssertExtensions.Throws("items", () => array.RemoveRange(s_emptyDefault, comparer)); // Enumerable overloads, rhs is default Assert.Throws(() => array.RemoveRange((IEnumerable)s_emptyDefault)); @@ -1302,8 +1302,8 @@ public void RemoveRangeEnumerableInvalid(IEnumerable source) Assert.Throws(() => ((IImmutableList)array).RemoveRange(s_emptyDefault, comparer)); // Struct overloads, both sides are default - Assert.Throws("items", () => s_emptyDefault.RemoveRange(s_emptyDefault)); - Assert.Throws("items", () => s_emptyDefault.RemoveRange(s_emptyDefault, comparer)); + AssertExtensions.Throws("items", () => s_emptyDefault.RemoveRange(s_emptyDefault)); + AssertExtensions.Throws("items", () => s_emptyDefault.RemoveRange(s_emptyDefault, comparer)); // Enumerable overloads, both sides are default Assert.Throws(() => s_emptyDefault.RemoveRange((IEnumerable)s_emptyDefault)); @@ -1312,10 +1312,10 @@ public void RemoveRangeEnumerableInvalid(IEnumerable source) Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(s_emptyDefault, comparer)); // Enumerable overloads, rhs is null - Assert.Throws("items", () => array.RemoveRange(items: null)); - Assert.Throws("items", () => array.RemoveRange(items: null, equalityComparer: comparer)); - Assert.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null)); - Assert.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null, equalityComparer: comparer)); + AssertExtensions.Throws("items", () => array.RemoveRange(items: null)); + AssertExtensions.Throws("items", () => array.RemoveRange(items: null, equalityComparer: comparer)); + AssertExtensions.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null)); + AssertExtensions.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null, equalityComparer: comparer)); // Enumerable overloads, lhs is default and rhs is null Assert.Throws(() => s_emptyDefault.RemoveRange(items: null)); @@ -1366,7 +1366,7 @@ public void RemoveAllInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("match", () => array.RemoveAll(match: null)); + AssertExtensions.Throws("match", () => array.RemoveAll(match: null)); } [Fact] @@ -1427,16 +1427,16 @@ public void ReplaceInvalid(IEnumerable source) Assert.All(SharedEqualityComparers(), comparer => { - Assert.Throws("oldValue", () => array.Replace(notContained, 123)); - Assert.Throws("oldValue", () => ((IImmutableList)array).Replace(notContained, 123)); + AssertExtensions.Throws("oldValue", () => array.Replace(notContained, 123)); + AssertExtensions.Throws("oldValue", () => ((IImmutableList)array).Replace(notContained, 123)); // If the comparer is a faulty implementation that says everything is equal, // an exception won't be thrown here. Check that the comparer says the source does // not contain this value first. if (!source.Contains(notContained, comparer)) { - Assert.Throws("oldValue", () => array.Replace(notContained, 123, comparer)); - Assert.Throws("oldValue", () => ((IImmutableList)array).Replace(notContained, 123, comparer)); + AssertExtensions.Throws("oldValue", () => array.Replace(notContained, 123, comparer)); + AssertExtensions.Throws("oldValue", () => ((IImmutableList)array).Replace(notContained, 123, comparer)); } }); } @@ -1478,9 +1478,9 @@ public void SetItemInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.SetItem(index: -1, item: 0)); - Assert.Throws("index", () => array.SetItem(index: array.Length, item: 0)); - Assert.Throws("index", () => array.SetItem(index: array.Length + 1, item: 0)); + AssertExtensions.Throws("index", () => array.SetItem(index: -1, item: 0)); + AssertExtensions.Throws("index", () => array.SetItem(index: array.Length, item: 0)); + AssertExtensions.Throws("index", () => array.SetItem(index: array.Length + 1, item: 0)); } [Theory] @@ -1560,7 +1560,7 @@ public void CopyToInvalid(IEnumerable source) AssertExtensions.Throws("destinationArray", "dest", () => array.CopyTo(0, null, 0, 0)); AssertExtensions.Throws("destinationArray", "dest", () => array.CopyTo(-1, null, -1, -1)); // The destination should be validated first. - Assert.Throws("length", () => array.CopyTo(-1, new int[0], -1, -1)); + AssertExtensions.Throws("length", () => array.CopyTo(-1, new int[0], -1, -1)); AssertExtensions.Throws("sourceIndex", "srcIndex", () => array.CopyTo(-1, new int[0], -1, 0)); AssertExtensions.Throws("destinationIndex", "dstIndex", () => array.CopyTo(0, new int[0], -1, 0)); @@ -1725,7 +1725,7 @@ public void SortComparisonInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("comparison", () => array.Sort(comparison: null)); + AssertExtensions.Throws("comparison", () => array.Sort(comparison: null)); } [Theory] @@ -1734,12 +1734,12 @@ public void SortComparerInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("index", () => array.Sort(-1, -1, Comparer.Default)); - Assert.Throws("index", () => array.Sort(-1, 0, Comparer.Default)); + AssertExtensions.Throws("index", () => array.Sort(-1, -1, Comparer.Default)); + AssertExtensions.Throws("index", () => array.Sort(-1, 0, Comparer.Default)); - Assert.Throws("count", () => array.Sort(0, -1, Comparer.Default)); - Assert.Throws("count", () => array.Sort(array.Length + 1, 0, Comparer.Default)); - Assert.Throws("count", () => array.Sort(0, array.Length + 1, Comparer.Default)); + AssertExtensions.Throws("count", () => array.Sort(0, -1, Comparer.Default)); + AssertExtensions.Throws("count", () => array.Sort(array.Length + 1, 0, Comparer.Default)); + AssertExtensions.Throws("count", () => array.Sort(0, array.Length + 1, Comparer.Default)); } [Theory] @@ -1952,7 +1952,7 @@ public void IStructuralEquatableGetHashCodeDefault() public void IStructuralEquatableGetHashCodeNullComparerNonNullUnderlyingArrayInvalid(IEnumerable source) { var array = source.ToImmutableArray(); - Assert.Throws("comparer", () => ((IStructuralEquatable)array).GetHashCode(comparer: null)); + AssertExtensions.Throws("comparer", () => ((IStructuralEquatable)array).GetHashCode(comparer: null)); } [Fact] @@ -1977,8 +1977,8 @@ public void IStructuralComparableCompareToDefaultAndNonDefaultInvalid(IEnumerabl { // CompareTo should throw if the arrays are of different lengths. The default ImmutableArray is considered to have // a different length from every other array, including empty ones. - Assert.Throws("other", () => ((IStructuralComparable)s_emptyDefault).CompareTo(other, comparer)); - Assert.Throws("other", () => ((IStructuralComparable)other).CompareTo(s_emptyDefault, comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)s_emptyDefault).CompareTo(other, comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)other).CompareTo(s_emptyDefault, comparer)); }); } @@ -1991,11 +1991,11 @@ public void IStructuralComparableCompareToNullComparerArgumentInvalid(IEnumerabl // just pass in a default array from the MemberData. var array = source?.ToImmutableArray() ?? s_emptyDefault; - Assert.Throws("other", () => ((IStructuralComparable)array).CompareTo(other, comparer: null)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)array).CompareTo(other, comparer: null)); if (other is Array || IsImmutableArray(other)) { - Assert.Throws("other", () => ((IStructuralComparable)other).CompareTo(array, comparer: null)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)other).CompareTo(array, comparer: null)); } } @@ -2065,13 +2065,13 @@ public void IStructuralComparableCompareToInvalid(IEnumerable source, objec { var array = source.ToImmutableArray(); - Assert.Throws("other", () => ((IStructuralComparable)array).CompareTo(other, comparer)); - Assert.Throws("other", () => ((IStructuralComparable)source.ToArray()).CompareTo(other, comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)array).CompareTo(other, comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)source.ToArray()).CompareTo(other, comparer)); if (other is Array || IsImmutableArray(other)) { - Assert.Throws("other", () => ((IStructuralComparable)other).CompareTo(array, comparer)); - Assert.Throws("other", () => ((IStructuralComparable)other).CompareTo(source.ToArray(), comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)other).CompareTo(array, comparer)); + AssertExtensions.Throws("other", () => ((IStructuralComparable)other).CompareTo(source.ToArray(), comparer)); } } @@ -2133,7 +2133,7 @@ public static IEnumerable BinarySearchData() [MemberData(nameof(BinarySearchData))] public void BinarySearchDefaultInvalid(IEnumerable source, int value) { - Assert.Throws("array", () => ImmutableArray.BinarySearch(s_emptyDefault, value)); + AssertExtensions.Throws("array", () => ImmutableArray.BinarySearch(s_emptyDefault, value)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableDictionaryBuilderTestBase.cs b/src/System.Collections.Immutable/tests/ImmutableDictionaryBuilderTestBase.cs index 2698af248cb8..7669f31a53ff 100644 --- a/src/System.Collections.Immutable/tests/ImmutableDictionaryBuilderTestBase.cs +++ b/src/System.Collections.Immutable/tests/ImmutableDictionaryBuilderTestBase.cs @@ -104,7 +104,7 @@ public void CopyTo() Assert.Equal(new KeyValuePair(), array[0]); Assert.Equal(new KeyValuePair("five", 5), array[1]); - Assert.Throws("array", () => builder.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => builder.CopyTo(null, 0)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableDictionaryTest.cs b/src/System.Collections.Immutable/tests/ImmutableDictionaryTest.cs index 856b5e971a31..6a4806ee361a 100644 --- a/src/System.Collections.Immutable/tests/ImmutableDictionaryTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableDictionaryTest.cs @@ -202,9 +202,9 @@ public void ToImmutableDictionary() Assert.Equal(2, stringIntDictionary["2"]); Assert.Equal(2, intDictionary.Count); - Assert.Throws("keySelector", () => list.ToImmutableDictionary(null)); - Assert.Throws("keySelector", () => list.ToImmutableDictionary(null, v => v)); - Assert.Throws("elementSelector", () => list.ToImmutableDictionary(k => k, null)); + AssertExtensions.Throws("keySelector", () => list.ToImmutableDictionary(null)); + AssertExtensions.Throws("keySelector", () => list.ToImmutableDictionary(null, v => v)); + AssertExtensions.Throws("elementSelector", () => list.ToImmutableDictionary(k => k, null)); list.ToDictionary(k => k, v => v, null); // verifies BCL behavior is to not throw. list.ToImmutableDictionary(k => k, v => v, null, null); diff --git a/src/System.Collections.Immutable/tests/ImmutableDictionaryTestBase.cs b/src/System.Collections.Immutable/tests/ImmutableDictionaryTestBase.cs index ee84827f50c7..db0b8df245b7 100644 --- a/src/System.Collections.Immutable/tests/ImmutableDictionaryTestBase.cs +++ b/src/System.Collections.Immutable/tests/ImmutableDictionaryTestBase.cs @@ -581,7 +581,7 @@ private static void KeysOrValuesTestHelper(ICollection collection, T conta Assert.True(nonGeneric.IsSynchronized); Assert.True(collection.IsReadOnly); - Assert.Throws("array", () => nonGeneric.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => nonGeneric.CopyTo(null, 0)); var array = new T[collection.Count + 1]; nonGeneric.CopyTo(array, 1); Assert.Equal(default(T), array[0]); diff --git a/src/System.Collections.Immutable/tests/ImmutableHashSetBuilderTest.cs b/src/System.Collections.Immutable/tests/ImmutableHashSetBuilderTest.cs index 41dd4e278ef0..60fad815e8f1 100644 --- a/src/System.Collections.Immutable/tests/ImmutableHashSetBuilderTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableHashSetBuilderTest.cs @@ -166,7 +166,7 @@ public void KeyComparerEmptyCollection() public void UnionWith() { var builder = ImmutableHashSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.UnionWith(null)); + AssertExtensions.Throws("other", () => builder.UnionWith(null)); builder.UnionWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1, 2, 3, 4 }, builder); } @@ -175,7 +175,7 @@ public void UnionWith() public void ExceptWith() { var builder = ImmutableHashSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.ExceptWith(null)); + AssertExtensions.Throws("other", () => builder.ExceptWith(null)); builder.ExceptWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1 }, builder); } @@ -184,7 +184,7 @@ public void ExceptWith() public void SymmetricExceptWith() { var builder = ImmutableHashSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.SymmetricExceptWith(null)); + AssertExtensions.Throws("other", () => builder.SymmetricExceptWith(null)); builder.SymmetricExceptWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1, 4 }, builder); } @@ -193,7 +193,7 @@ public void SymmetricExceptWith() public void IntersectWith() { var builder = ImmutableHashSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.IntersectWith(null)); + AssertExtensions.Throws("other", () => builder.IntersectWith(null)); builder.IntersectWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 2, 3 }, builder); } @@ -202,7 +202,7 @@ public void IntersectWith() public void IsProperSubsetOf() { var builder = ImmutableHashSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsProperSubsetOf(null)); + AssertExtensions.Throws("other", () => builder.IsProperSubsetOf(null)); Assert.False(builder.IsProperSubsetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsProperSubsetOf(Enumerable.Range(1, 5))); } @@ -211,7 +211,7 @@ public void IsProperSubsetOf() public void IsProperSupersetOf() { var builder = ImmutableHashSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsProperSupersetOf(null)); + AssertExtensions.Throws("other", () => builder.IsProperSupersetOf(null)); Assert.False(builder.IsProperSupersetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsProperSupersetOf(Enumerable.Range(1, 2))); } @@ -220,7 +220,7 @@ public void IsProperSupersetOf() public void IsSubsetOf() { var builder = ImmutableHashSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsSubsetOf(null)); + AssertExtensions.Throws("other", () => builder.IsSubsetOf(null)); Assert.False(builder.IsSubsetOf(Enumerable.Range(1, 2))); Assert.True(builder.IsSubsetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsSubsetOf(Enumerable.Range(1, 5))); @@ -230,7 +230,7 @@ public void IsSubsetOf() public void IsSupersetOf() { var builder = ImmutableHashSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsSupersetOf(null)); + AssertExtensions.Throws("other", () => builder.IsSupersetOf(null)); Assert.False(builder.IsSupersetOf(Enumerable.Range(1, 4))); Assert.True(builder.IsSupersetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsSupersetOf(Enumerable.Range(1, 2))); @@ -240,7 +240,7 @@ public void IsSupersetOf() public void Overlaps() { var builder = ImmutableHashSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.Overlaps(null)); + AssertExtensions.Throws("other", () => builder.Overlaps(null)); Assert.True(builder.Overlaps(Enumerable.Range(3, 2))); Assert.False(builder.Overlaps(Enumerable.Range(4, 3))); } @@ -249,7 +249,7 @@ public void Overlaps() public void Remove() { var builder = ImmutableHashSet.Create("a").ToBuilder(); - Assert.Throws("item", () => builder.Remove(null)); + AssertExtensions.Throws("item", () => builder.Remove(null)); Assert.False(builder.Remove("b")); Assert.True(builder.Remove("a")); } @@ -258,7 +258,7 @@ public void Remove() public void SetEquals() { var builder = ImmutableHashSet.Create("a").ToBuilder(); - Assert.Throws("other", () => builder.SetEquals(null)); + AssertExtensions.Throws("other", () => builder.SetEquals(null)); Assert.False(builder.SetEquals(new[] { "b" })); Assert.True(builder.SetEquals(new[] { "a" })); Assert.True(builder.SetEquals(builder)); diff --git a/src/System.Collections.Immutable/tests/ImmutableListBuilderTest.cs b/src/System.Collections.Immutable/tests/ImmutableListBuilderTest.cs index cdff1a751ee9..aba21ca501eb 100644 --- a/src/System.Collections.Immutable/tests/ImmutableListBuilderTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableListBuilderTest.cs @@ -123,8 +123,8 @@ public void Insert() mutable.Insert(2, 3); Assert.Equal(new[] { 0, 1, 3 }, mutable); - Assert.Throws("index", () => mutable.Insert(-1, 0)); - Assert.Throws("index", () => mutable.Insert(4, 0)); + AssertExtensions.Throws("index", () => mutable.Insert(-1, 0)); + AssertExtensions.Throws("index", () => mutable.Insert(4, 0)); } [Fact] @@ -155,7 +155,7 @@ public void AddRange() mutable.AddRange(new int[0]); Assert.Equal(new[] { 1, 4, 5, 2, 3 }, mutable); - Assert.Throws("items", () => mutable.AddRange(null)); + AssertExtensions.Throws("items", () => mutable.AddRange(null)); } [Fact] @@ -189,14 +189,14 @@ public void RemoveAt() mutable.RemoveAt(0); Assert.Equal(new[] { 2 }, mutable); - Assert.Throws("index", () => mutable.RemoveAt(1)); + AssertExtensions.Throws("index", () => mutable.RemoveAt(1)); mutable.RemoveAt(0); Assert.Equal(new int[0], mutable); - Assert.Throws("index", () => mutable.RemoveAt(0)); - Assert.Throws("index", () => mutable.RemoveAt(-1)); - Assert.Throws("index", () => mutable.RemoveAt(1)); + AssertExtensions.Throws("index", () => mutable.RemoveAt(0)); + AssertExtensions.Throws("index", () => mutable.RemoveAt(-1)); + AssertExtensions.Throws("index", () => mutable.RemoveAt(1)); } [Fact] @@ -237,10 +237,10 @@ public void Indexer() mutable[2] = -3; Assert.Equal(new[] { -2, 5, -3 }, mutable); - Assert.Throws("index", () => mutable[3] = 4); - Assert.Throws("index", () => mutable[-1] = 4); - Assert.Throws("index", () => mutable[3]); - Assert.Throws("index", () => mutable[-1]); + AssertExtensions.Throws("index", () => mutable[3] = 4); + AssertExtensions.Throws("index", () => mutable[-1] = 4); + AssertExtensions.Throws("index", () => mutable[3]); + AssertExtensions.Throws("index", () => mutable[-1]); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableListTest.cs b/src/System.Collections.Immutable/tests/ImmutableListTest.cs index 066a51c58883..f55d19e160f4 100644 --- a/src/System.Collections.Immutable/tests/ImmutableListTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableListTest.cs @@ -245,8 +245,8 @@ public void InsertRangeRandomBalanceTest() public void InsertTest() { var list = ImmutableList.Empty; - Assert.Throws("index", () => list.Insert(1, 5)); - Assert.Throws("index", () => list.Insert(-1, 5)); + AssertExtensions.Throws("index", () => list.Insert(1, 5)); + AssertExtensions.Throws("index", () => list.Insert(-1, 5)); list = list.Insert(0, 10); list = list.Insert(1, 20); @@ -261,8 +261,8 @@ public void InsertTest() var actualList = list.ToArray(); Assert.Equal(expectedList, actualList); - Assert.Throws("index", () => list.Insert(7, 5)); - Assert.Throws("index", () => list.Insert(-1, 5)); + AssertExtensions.Throws("index", () => list.Insert(7, 5)); + AssertExtensions.Throws("index", () => list.Insert(-1, 5)); } [Fact] @@ -280,16 +280,16 @@ public void InsertBalanceTest() public void InsertRangeTest() { var list = ImmutableList.Empty; - Assert.Throws("index", () => list.InsertRange(1, new[] { 1 })); - Assert.Throws("index", () => list.InsertRange(-1, new[] { 1 })); + AssertExtensions.Throws("index", () => list.InsertRange(1, new[] { 1 })); + AssertExtensions.Throws("index", () => list.InsertRange(-1, new[] { 1 })); list = list.InsertRange(0, new[] { 1, 4, 5 }); list = list.InsertRange(1, new[] { 2, 3 }); list = list.InsertRange(2, new int[0]); Assert.Equal(Enumerable.Range(1, 5), list); - Assert.Throws("index", () => list.InsertRange(6, new[] { 1 })); - Assert.Throws("index", () => list.InsertRange(-1, new[] { 1 })); + AssertExtensions.Throws("index", () => list.InsertRange(6, new[] { 1 })); + AssertExtensions.Throws("index", () => list.InsertRange(-1, new[] { 1 })); } [Fact] @@ -297,8 +297,8 @@ public void InsertRangeImmutableTest() { var list = ImmutableList.Empty; var nonEmptyList = ImmutableList.Create(1); - Assert.Throws("index", () => list.InsertRange(1, nonEmptyList)); - Assert.Throws("index", () => list.InsertRange(-1, nonEmptyList)); + AssertExtensions.Throws("index", () => list.InsertRange(1, nonEmptyList)); + AssertExtensions.Throws("index", () => list.InsertRange(-1, nonEmptyList)); list = list.InsertRange(0, ImmutableList.Create(1, 104, 105)); list = list.InsertRange(1, ImmutableList.Create(2, 3)); @@ -306,8 +306,8 @@ public void InsertRangeImmutableTest() list = list.InsertRange(3, ImmutableList.Empty.InsertRange(0, Enumerable.Range(4, 100))); Assert.Equal(Enumerable.Range(1, 105), list); - Assert.Throws("index", () => list.InsertRange(106, nonEmptyList)); - Assert.Throws("index", () => list.InsertRange(-1, nonEmptyList)); + AssertExtensions.Throws("index", () => list.InsertRange(106, nonEmptyList)); + AssertExtensions.Throws("index", () => list.InsertRange(-1, nonEmptyList)); } [Fact] @@ -424,9 +424,9 @@ public void RemoveRangeDoesNotEnumerateSequenceIfThisIsEmpty() public void RemoveAtTest() { var list = ImmutableList.Empty; - Assert.Throws("index", () => list.RemoveAt(0)); - Assert.Throws("index", () => list.RemoveAt(-1)); - Assert.Throws("index", () => list.RemoveAt(1)); + AssertExtensions.Throws("index", () => list.RemoveAt(0)); + AssertExtensions.Throws("index", () => list.RemoveAt(-1)); + AssertExtensions.Throws("index", () => list.RemoveAt(1)); for (int i = 1; i <= 10; i++) { @@ -479,8 +479,8 @@ public void Indexer() Assert.Equal(2, list[1]); Assert.Equal(3, list[2]); - Assert.Throws("index", () => list[3]); - Assert.Throws("index", () => list[-1]); + AssertExtensions.Throws("index", () => list[3]); + AssertExtensions.Throws("index", () => list[-1]); Assert.Equal(3, ((IList)list)[2]); Assert.Equal(3, ((IList)list)[2]); @@ -563,7 +563,7 @@ public void ReplaceWithEqualityComparerTest() [Fact] public void ReplaceMissingThrowsTest() { - Assert.Throws("oldValue", () => ImmutableList.Empty.Replace(5, 3)); + AssertExtensions.Throws("oldValue", () => ImmutableList.Empty.Replace(5, 3)); } [Fact] @@ -613,7 +613,7 @@ public void ToImmutableListOfSameType() [Fact] public void RemoveAllNullTest() { - Assert.Throws("match", () => ImmutableList.Empty.RemoveAll(null)); + AssertExtensions.Throws("match", () => ImmutableList.Empty.RemoveAll(null)); } [Fact] @@ -622,11 +622,11 @@ public void RemoveRangeArrayTest() Assert.True(ImmutableList.Empty.RemoveRange(0, 0).IsEmpty); var list = ImmutableList.Create(1, 2, 3); - Assert.Throws("index", () => list.RemoveRange(-1, 0)); - Assert.Throws("count", () => list.RemoveRange(0, -1)); - Assert.Throws("index", () => list.RemoveRange(4, 0)); - Assert.Throws("count", () => list.RemoveRange(0, 4)); - Assert.Throws("count", () => list.RemoveRange(2, 2)); + AssertExtensions.Throws("index", () => list.RemoveRange(-1, 0)); + AssertExtensions.Throws("count", () => list.RemoveRange(0, -1)); + AssertExtensions.Throws("index", () => list.RemoveRange(4, 0)); + AssertExtensions.Throws("count", () => list.RemoveRange(0, 4)); + AssertExtensions.Throws("count", () => list.RemoveRange(2, 2)); Assert.Equal(list, list.RemoveRange(3, 0)); } @@ -643,7 +643,7 @@ public void RemoveRange_EnumerableEqualityComparer_AcceptsNullEQ() public void RemoveRangeEnumerableTest() { var list = ImmutableList.Create(1, 2, 3); - Assert.Throws("items", () => list.RemoveRange(null)); + AssertExtensions.Throws("items", () => list.RemoveRange(null)); ImmutableList removed2 = list.RemoveRange(new[] { 2 }); Assert.Equal(2, removed2.Count); @@ -661,7 +661,7 @@ public void RemoveRangeEnumerableTest() Assert.Equal(new[] { 1, 2, 3 }, listWithDuplicates.RemoveRange(new[] { 2 })); Assert.Equal(new[] { 1, 3 }, listWithDuplicates.RemoveRange(new[] { 2, 2 })); - Assert.Throws("items", () => ((IImmutableList)ImmutableList.Create(1, 2, 3)).RemoveRange(null)); + AssertExtensions.Throws("items", () => ((IImmutableList)ImmutableList.Create(1, 2, 3)).RemoveRange(null)); Assert.Equal(new[] { 1, 3 }, ((IImmutableList)ImmutableList.Create(1, 2, 3)).RemoveRange(new[] { 2 })); } @@ -726,14 +726,14 @@ public void ReverseTest2() public void SetItem() { var emptyList = ImmutableList.Create(); - Assert.Throws("index", () => emptyList[-1]); - Assert.Throws("index", () => emptyList[0]); - Assert.Throws("index", () => emptyList[1]); + AssertExtensions.Throws("index", () => emptyList[-1]); + AssertExtensions.Throws("index", () => emptyList[0]); + AssertExtensions.Throws("index", () => emptyList[1]); var listOfOne = emptyList.Add(5); - Assert.Throws("index", () => listOfOne[-1]); + AssertExtensions.Throws("index", () => listOfOne[-1]); Assert.Equal(5, listOfOne[0]); - Assert.Throws("index", () => listOfOne[1]); + AssertExtensions.Throws("index", () => listOfOne[1]); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableListTestBase.cs b/src/System.Collections.Immutable/tests/ImmutableListTestBase.cs index f6c4d4f02bba..b021490c72c3 100644 --- a/src/System.Collections.Immutable/tests/ImmutableListTestBase.cs +++ b/src/System.Collections.Immutable/tests/ImmutableListTestBase.cs @@ -343,7 +343,7 @@ public void ReverseTest() [Fact] public void Sort_NullComparison_Throws() { - Assert.Throws("comparison", () => this.SortTestHelper(ImmutableList.Empty, (Comparison)null)); + AssertExtensions.Throws("comparison", () => this.SortTestHelper(ImmutableList.Empty, (Comparison)null)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableQueueTest.cs b/src/System.Collections.Immutable/tests/ImmutableQueueTest.cs index 578bf543d122..041771c86b40 100644 --- a/src/System.Collections.Immutable/tests/ImmutableQueueTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableQueueTest.cs @@ -224,8 +224,8 @@ public void Create() Assert.False(queue.IsEmpty); Assert.Equal(new[] { 1, 2 }, queue); - Assert.Throws("items", () => ImmutableQueue.CreateRange((IEnumerable)null)); - Assert.Throws("items", () => ImmutableQueue.Create((int[])null)); + AssertExtensions.Throws("items", () => ImmutableQueue.CreateRange((IEnumerable)null)); + AssertExtensions.Throws("items", () => ImmutableQueue.Create((int[])null)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs b/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs index e11eedd72725..b0404e7bc121 100644 --- a/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs @@ -182,7 +182,7 @@ public void KeyComparerEmptyCollection() public void UnionWith() { var builder = ImmutableSortedSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.UnionWith(null)); + AssertExtensions.Throws("other", () => builder.UnionWith(null)); builder.UnionWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1, 2, 3, 4 }, builder); } @@ -191,7 +191,7 @@ public void UnionWith() public void ExceptWith() { var builder = ImmutableSortedSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.ExceptWith(null)); + AssertExtensions.Throws("other", () => builder.ExceptWith(null)); builder.ExceptWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1 }, builder); } @@ -200,7 +200,7 @@ public void ExceptWith() public void SymmetricExceptWith() { var builder = ImmutableSortedSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.SymmetricExceptWith(null)); + AssertExtensions.Throws("other", () => builder.SymmetricExceptWith(null)); builder.SymmetricExceptWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 1, 4 }, builder); } @@ -209,7 +209,7 @@ public void SymmetricExceptWith() public void IntersectWith() { var builder = ImmutableSortedSet.Create(1, 2, 3).ToBuilder(); - Assert.Throws("other", () => builder.IntersectWith(null)); + AssertExtensions.Throws("other", () => builder.IntersectWith(null)); builder.IntersectWith(new[] { 2, 3, 4 }); Assert.Equal(new[] { 2, 3 }, builder); } @@ -218,7 +218,7 @@ public void IntersectWith() public void IsProperSubsetOf() { var builder = ImmutableSortedSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsProperSubsetOf(null)); + AssertExtensions.Throws("other", () => builder.IsProperSubsetOf(null)); Assert.False(builder.IsProperSubsetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsProperSubsetOf(Enumerable.Range(1, 5))); } @@ -227,7 +227,7 @@ public void IsProperSubsetOf() public void IsProperSupersetOf() { var builder = ImmutableSortedSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsProperSupersetOf(null)); + AssertExtensions.Throws("other", () => builder.IsProperSupersetOf(null)); Assert.False(builder.IsProperSupersetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsProperSupersetOf(Enumerable.Range(1, 2))); } @@ -236,7 +236,7 @@ public void IsProperSupersetOf() public void IsSubsetOf() { var builder = ImmutableSortedSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsSubsetOf(null)); + AssertExtensions.Throws("other", () => builder.IsSubsetOf(null)); Assert.False(builder.IsSubsetOf(Enumerable.Range(1, 2))); Assert.True(builder.IsSubsetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsSubsetOf(Enumerable.Range(1, 5))); @@ -246,7 +246,7 @@ public void IsSubsetOf() public void IsSupersetOf() { var builder = ImmutableSortedSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.IsSupersetOf(null)); + AssertExtensions.Throws("other", () => builder.IsSupersetOf(null)); Assert.False(builder.IsSupersetOf(Enumerable.Range(1, 4))); Assert.True(builder.IsSupersetOf(Enumerable.Range(1, 3))); Assert.True(builder.IsSupersetOf(Enumerable.Range(1, 2))); @@ -256,7 +256,7 @@ public void IsSupersetOf() public void Overlaps() { var builder = ImmutableSortedSet.CreateRange(Enumerable.Range(1, 3)).ToBuilder(); - Assert.Throws("other", () => builder.Overlaps(null)); + AssertExtensions.Throws("other", () => builder.Overlaps(null)); Assert.True(builder.Overlaps(Enumerable.Range(3, 2))); Assert.False(builder.Overlaps(Enumerable.Range(4, 3))); } @@ -265,7 +265,7 @@ public void Overlaps() public void Remove() { var builder = ImmutableSortedSet.Create("a").ToBuilder(); - Assert.Throws("key", () => builder.Remove(null)); + AssertExtensions.Throws("key", () => builder.Remove(null)); Assert.False(builder.Remove("b")); Assert.True(builder.Remove("a")); } @@ -281,7 +281,7 @@ public void Reverse() public void SetEquals() { var builder = ImmutableSortedSet.Create("a").ToBuilder(); - Assert.Throws("other", () => builder.SetEquals(null)); + AssertExtensions.Throws("other", () => builder.SetEquals(null)); Assert.False(builder.SetEquals(new[] { "b" })); Assert.True(builder.SetEquals(new[] { "a" })); Assert.True(builder.SetEquals(builder)); @@ -325,8 +325,8 @@ public void Indexer() Assert.Equal(2, builder[1]); Assert.Equal(3, builder[2]); - Assert.Throws("index", () => builder[-1]); - Assert.Throws("index", () => builder[3]); + AssertExtensions.Throws("index", () => builder[-1]); + AssertExtensions.Throws("index", () => builder[3]); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableSortedSetTest.cs b/src/System.Collections.Immutable/tests/ImmutableSortedSetTest.cs index fe59a91e12dd..ff7312678576 100644 --- a/src/System.Collections.Immutable/tests/ImmutableSortedSetTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableSortedSetTest.cs @@ -199,8 +199,8 @@ public void IndexGetTest() AssertAreSame(item, set[i++]); } - Assert.Throws("index", () => set[-1]); - Assert.Throws("index", () => set[set.Count]); + AssertExtensions.Throws("index", () => set[-1]); + AssertExtensions.Throws("index", () => set[set.Count]); } [Fact] diff --git a/src/System.Collections.Immutable/tests/ImmutableStackTest.cs b/src/System.Collections.Immutable/tests/ImmutableStackTest.cs index 63f49962cabe..8cd81449ac1f 100644 --- a/src/System.Collections.Immutable/tests/ImmutableStackTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableStackTest.cs @@ -248,8 +248,8 @@ public void Create() Assert.False(stack.IsEmpty); Assert.Equal(new[] { 2, 1 }, stack); - Assert.Throws("items", () => ImmutableStack.CreateRange((IEnumerable)null)); - Assert.Throws("items", () => ImmutableStack.Create((int[])null)); + AssertExtensions.Throws("items", () => ImmutableStack.CreateRange((IEnumerable)null)); + AssertExtensions.Throws("items", () => ImmutableStack.Create((int[])null)); } [Fact] diff --git a/src/System.Collections.Immutable/tests/RequiresTests.cs b/src/System.Collections.Immutable/tests/RequiresTests.cs index 094ac04cb9d7..82d36c1dfb51 100644 --- a/src/System.Collections.Immutable/tests/RequiresTests.cs +++ b/src/System.Collections.Immutable/tests/RequiresTests.cs @@ -14,14 +14,14 @@ public void Argument() Requires.Argument(true); Requires.Argument(true, "parameterName", "message"); Assert.Throws(null, () => Requires.Argument(false)); - Assert.Throws("parameterName", () => Requires.Argument(false, "parameterName", "message")); + AssertExtensions.Throws("parameterName", () => Requires.Argument(false, "parameterName", "message")); } [Fact] public void FailRange() { - Assert.Throws("parameterName", () => Requires.FailRange("parameterName")); - Assert.Throws("parameterName", () => Requires.FailRange("parameterName", "message")); + AssertExtensions.Throws("parameterName", () => Requires.FailRange("parameterName")); + AssertExtensions.Throws("parameterName", () => Requires.FailRange("parameterName", "message")); } [Fact] @@ -29,15 +29,15 @@ public void Range() { Requires.Range(true, "parameterName"); Requires.Range(true, "parameterName", "message"); - Assert.Throws("parameterName", () => Requires.Range(false, "parameterName")); - Assert.Throws("parameterName", () => Requires.Range(false, "parameterName", "message")); + AssertExtensions.Throws("parameterName", () => Requires.Range(false, "parameterName")); + AssertExtensions.Throws("parameterName", () => Requires.Range(false, "parameterName", "message")); } [Fact] public void NotNull() { Requires.NotNull(new object(), "parameterName"); - Assert.Throws("parameterName", () => Requires.NotNull((object)null, "parameterName")); + AssertExtensions.Throws("parameterName", () => Requires.NotNull((object)null, "parameterName")); } [Fact] @@ -45,7 +45,7 @@ public void NotNullAllowStructs() { Requires.NotNullAllowStructs(0, "parameterName"); Requires.NotNullAllowStructs(new object(), "parameterName"); - Assert.Throws("parameterName", () => Requires.NotNullAllowStructs((object)null, "parameterName")); + AssertExtensions.Throws("parameterName", () => Requires.NotNullAllowStructs((object)null, "parameterName")); } } } diff --git a/src/System.Collections.NonGeneric/tests/ArrayListTests.cs b/src/System.Collections.NonGeneric/tests/ArrayListTests.cs index 62c47585666b..5afbf75dc216 100644 --- a/src/System.Collections.NonGeneric/tests/ArrayListTests.cs +++ b/src/System.Collections.NonGeneric/tests/ArrayListTests.cs @@ -40,7 +40,7 @@ public static void Ctor_Int(int capacity) [Fact] public static void Ctor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new ArrayList(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new ArrayList(-1)); // Capacity < 0 } [Fact] @@ -76,7 +76,7 @@ public static void Ctor_ICollection_Empty() [Fact] public static void Ctor_ICollection_NullCollection_ThrowsArgumentNullException() { - Assert.Throws("c", () => new ArrayList(null)); // Collection is null + AssertExtensions.Throws("c", () => new ArrayList(null)); // Collection is null } [Fact] @@ -254,7 +254,7 @@ public static void Adapter_Capacity_Set() [Fact] public static void Adapter_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.Adapter(null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.Adapter(null)); // List is null } [Fact] @@ -386,7 +386,7 @@ public static void AddRange_NullCollection_ThrowsArgumentNullException() return; } - Assert.Throws("c", () => arrList2.AddRange(null)); // Collection is null + AssertExtensions.Throws("c", () => arrList2.AddRange(null)); // Collection is null }); } @@ -586,10 +586,10 @@ public static void BinarySearch_Int_Int_IComparer_Invalid() { IComparer comparer = new BinarySearchComparer(); - Assert.Throws("index", () => arrList2.BinarySearch(-1, 1000, arrList2.Count, comparer)); // Index < 0 - Assert.Throws("index", () => arrList2.BinarySearch(-1, 1000, 1, comparer)); // Index < 0 - Assert.Throws("index", () => arrList2.BinarySearch(-1, arrList2.Count, 1, comparer)); // Index < 0 - Assert.Throws("count", () => arrList2.BinarySearch(0, -1, 1, comparer)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.BinarySearch(-1, 1000, arrList2.Count, comparer)); // Index < 0 + AssertExtensions.Throws("index", () => arrList2.BinarySearch(-1, 1000, 1, comparer)); // Index < 0 + AssertExtensions.Throws("index", () => arrList2.BinarySearch(-1, arrList2.Count, 1, comparer)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.BinarySearch(0, -1, 1, comparer)); // Count < 0 Assert.Throws(null, () => arrList2.BinarySearch(1, arrList2.Count, 1, comparer)); // Index + Count >= list.Count Assert.Throws(null, () => arrList2.BinarySearch(3, arrList2.Count - 2, 1, comparer)); // Index + Count >= list.Count @@ -666,8 +666,8 @@ public static void Capacity_Set_InvalidValue_ThrowsArgumentOutOfRangeException() return; } - Assert.Throws("value", () => arrList2.Capacity = -1); // Capacity < 0 - Assert.Throws("value", () => arrList2.Capacity = arrList1.Count - 1); // Capacity < list.Count + AssertExtensions.Throws("value", () => arrList2.Capacity = -1); // Capacity < 0 + AssertExtensions.Throws("value", () => arrList2.Capacity = arrList1.Count - 1); // Capacity < list.Count }); } @@ -908,7 +908,7 @@ public static void FixedSize_ArrayList() // Remove an object from the original list and verify the object underneath has been cut arrList1.RemoveAt(9); - Assert.Throws("index", () => arrList2[9]); + AssertExtensions.Throws("index", () => arrList2[9]); // We cant remove or add to the fixed list Assert.Throws(() => arrList2.RemoveRange(0, 1)); @@ -957,7 +957,7 @@ public static void FixedSize_ArrayList_CanChangeExistingItems() [Fact] public static void FixedSize_ArrayList_NullCollection_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.FixedSize(null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.FixedSize(null)); // List is null } [Fact] @@ -994,13 +994,13 @@ public static void FixedSize_IList_ModifyingUnderlyingCollection_CutsFacade() // Remove an object from the original list. Verify the object underneath has been cut arrList.RemoveAt(9); - Assert.Throws("index", () => iList[9]); + AssertExtensions.Throws("index", () => iList[9]); } [Fact] public static void FixedSize_IList_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.FixedSize((IList)null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.FixedSize((IList)null)); // List is null } [Fact] @@ -1174,10 +1174,10 @@ public static void GetEnumerator_Int_Int_Invalid() Assert.Throws(() => enumerator.Current); // Invalid parameters - Assert.Throws("index", () => arrList2.GetEnumerator(-1, arrList2.Count)); // Index < 0 - Assert.Throws("count", () => arrList2.GetEnumerator(0, -1)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.GetEnumerator(-1, arrList2.Count)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.GetEnumerator(0, -1)); // Count < 0 Assert.Throws(null, () => arrList2.GetEnumerator(0, arrList2.Count + 1)); // Count + list.Count - Assert.Throws("index", () => arrList2.GetEnumerator(-1, arrList2.Count + 1)); // Index < 0 and count > list.Count + AssertExtensions.Throws("index", () => arrList2.GetEnumerator(-1, arrList2.Count + 1)); // Index < 0 and count > list.Count }); } @@ -1297,8 +1297,8 @@ public static void GetRange_Invalid() ArrayList arrList1 = Helpers.CreateIntArrayList(100); Helpers.PerformActionOnAllArrayListWrappers(arrList1, arrList2 => { - Assert.Throws("index", () => arrList2.GetRange(-1, 50)); // Index < 0 - Assert.Throws("count", () => arrList2.GetRange(0, -1)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.GetRange(-1, 50)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.GetRange(0, -1)); // Count < 0 Assert.Throws(null, () => arrList2.GetRange(0, 500)); // Index + count > list.count Assert.Throws(null, () => arrList2.GetRange(arrList2.Count, 1)); // Index >= list.count @@ -1352,12 +1352,12 @@ public static void SetRange_Invalid() return; } - Assert.Throws("index", () => arrList2.SetRange(3, arrList2)); // Index + collection.Count > list.Count + AssertExtensions.Throws("index", () => arrList2.SetRange(3, arrList2)); // Index + collection.Count > list.Count - Assert.Throws("index", () => arrList2.SetRange(-1, new object[1])); // Index < 0 - Assert.Throws("index", () => arrList2.SetRange(arrList2.Count, new object[1])); // Index > list.Count + AssertExtensions.Throws("index", () => arrList2.SetRange(-1, new object[1])); // Index < 0 + AssertExtensions.Throws("index", () => arrList2.SetRange(arrList2.Count, new object[1])); // Index > list.Count - Assert.Throws("c", () => arrList2.SetRange(0, null)); // Collection is null + AssertExtensions.Throws("c", () => arrList2.SetRange(0, null)); // Collection is null }); } @@ -1450,8 +1450,8 @@ public static void IndexOf_Int_InvalidStartIndex_ThrowsArgumentOutOfRangeExcepti ArrayList arrList1 = Helpers.CreateIntArrayList(10); Helpers.PerformActionOnAllArrayListWrappers(arrList1, arrList2 => { - Assert.Throws("startIndex", () => arrList2.IndexOf("Batman", -1)); // Start index < 0 - Assert.Throws("startIndex", () => arrList2.IndexOf("Batman", arrList2.Count + 1)); // Start index > list.Count + AssertExtensions.Throws("startIndex", () => arrList2.IndexOf("Batman", -1)); // Start index < 0 + AssertExtensions.Throws("startIndex", () => arrList2.IndexOf("Batman", arrList2.Count + 1)); // Start index > list.Count Assert.Equal(-1, arrList2.IndexOf("Batman", arrList2.Count, 0)); // Index = list.Count }); @@ -1513,10 +1513,10 @@ public static void IndexOf_Int_Int_InvalidIndexCount_ThrowsArgumentOutOfRangeExc ArrayList arrList1 = Helpers.CreateIntArrayList(10); Helpers.PerformActionOnAllArrayListWrappers(arrList1, arrList2 => { - Assert.Throws("startIndex", () => arrList2.IndexOf("Batman", -1, arrList2.Count)); // Start index < 0 - Assert.Throws("startIndex", () => arrList2.IndexOf("Batman", arrList2.Count + 1, arrList2.Count)); // Start index > Count - Assert.Throws("count", () => arrList2.IndexOf("Batman", 0, -1)); // Count < 0 - Assert.Throws("count", () => arrList2.IndexOf("Batman", 3, arrList2.Count + 1)); // Count > list.Count + AssertExtensions.Throws("startIndex", () => arrList2.IndexOf("Batman", -1, arrList2.Count)); // Start index < 0 + AssertExtensions.Throws("startIndex", () => arrList2.IndexOf("Batman", arrList2.Count + 1, arrList2.Count)); // Start index > Count + AssertExtensions.Throws("count", () => arrList2.IndexOf("Batman", 0, -1)); // Count < 0 + AssertExtensions.Throws("count", () => arrList2.IndexOf("Batman", 3, arrList2.Count + 1)); // Count > list.Count Assert.Equal(-1, arrList2.IndexOf("Batman", arrList2.Count, 0)); // Index = list.Count }); @@ -1661,10 +1661,10 @@ public static void InsertRange_Invalid() return; } - Assert.Throws("index", () => arrList2.InsertRange(-1, new object[1])); // Index < 0 - Assert.Throws("index", () => arrList2.InsertRange(1000, new object[1])); // Index > count + AssertExtensions.Throws("index", () => arrList2.InsertRange(-1, new object[1])); // Index < 0 + AssertExtensions.Throws("index", () => arrList2.InsertRange(1000, new object[1])); // Index > count - Assert.Throws("c", () => arrList2.InsertRange(3, null)); // Collection is null + AssertExtensions.Throws("c", () => arrList2.InsertRange(3, null)); // Collection is null }); } @@ -1770,8 +1770,8 @@ public static void LastIndexOf_Int_InvalidStartIndex_ThrowsArgumentOutOfRangeExc ArrayList arrList1 = Helpers.CreateIntArrayList(10); Helpers.PerformActionOnAllArrayListWrappers(arrList1, arrList2 => { - Assert.Throws("startIndex", () => arrList2.LastIndexOf(0, -1)); // StartIndex < 0 - Assert.Throws("startIndex", () => arrList2.LastIndexOf(0, arrList2.Count)); // StartIndex >= list.Count + AssertExtensions.Throws("startIndex", () => arrList2.LastIndexOf(0, -1)); // StartIndex < 0 + AssertExtensions.Throws("startIndex", () => arrList2.LastIndexOf(0, arrList2.Count)); // StartIndex >= list.Count }); } @@ -1843,13 +1843,13 @@ public static void LastIndexOf_Int_Int_InvalidStartIndexCount_ThrowsArgumentOutO ArrayList arrList1 = Helpers.CreateIntArrayList(10); Helpers.PerformActionOnAllArrayListWrappers(arrList1, arrList2 => { - Assert.Throws("startIndex", () => arrList2.LastIndexOf(0, -1, 2)); // Index < 0 - Assert.Throws("startIndex", () => arrList2.LastIndexOf(0, arrList2.Count, 2)); // Index >= list.Count + AssertExtensions.Throws("startIndex", () => arrList2.LastIndexOf(0, -1, 2)); // Index < 0 + AssertExtensions.Throws("startIndex", () => arrList2.LastIndexOf(0, arrList2.Count, 2)); // Index >= list.Count - Assert.Throws("count", () => arrList2.LastIndexOf(0, 0, -1)); // Count < 0 - Assert.Throws("count", () => arrList2.LastIndexOf(0, 0, arrList2.Count + 1)); // Count > list.Count + AssertExtensions.Throws("count", () => arrList2.LastIndexOf(0, 0, -1)); // Count < 0 + AssertExtensions.Throws("count", () => arrList2.LastIndexOf(0, 0, arrList2.Count + 1)); // Count > list.Count - Assert.Throws("count", () => arrList2.LastIndexOf(0, 4, arrList2.Count - 4)); // Index + count > list.Count + AssertExtensions.Throws("count", () => arrList2.LastIndexOf(0, 4, arrList2.Count - 4)); // Index + count > list.Count }); } @@ -1871,7 +1871,7 @@ public static void ReadOnly_ArrayList() // Remove an object from the original list and verify the object underneath has been cut arrList1.RemoveAt(9); - Assert.Throws("index", () => arrList2[9]); + AssertExtensions.Throws("index", () => arrList2[9]); // We cant remove, change or add to the readonly list Assert.Throws(() => arrList2.RemoveRange(0, 1)); @@ -1908,7 +1908,7 @@ public static void ReadOnly_SynchronizedArrayList() [Fact] public static void ReadOnly_ArrayList_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.ReadOnly(null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.ReadOnly(null)); // List is null } [Fact] @@ -1945,13 +1945,13 @@ public static void ReadOnly_IList_ModifiyingUnderlyingCollection_CutsFacade() // Remove an object from the original list. Verify the object underneath has been cut arrList.RemoveAt(9); - Assert.Throws("index", () => iList[9]); + AssertExtensions.Throws("index", () => iList[9]); } [Fact] public static void ReadOnly_IList_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.ReadOnly((IList)null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.ReadOnly((IList)null)); // List is null } [Fact] @@ -2012,8 +2012,8 @@ public static void RemoveRange_Invalid() return; } - Assert.Throws("index", () => arrList2.RemoveRange(-1, 1)); // Index < 0 - Assert.Throws("count", () => arrList2.RemoveRange(1, -1)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.RemoveRange(-1, 1)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.RemoveRange(1, -1)); // Count < 0 Assert.Throws(null, () => arrList2.RemoveRange(arrList2.Count, 1)); // Index > list.Count Assert.Throws(null, () => arrList2.RemoveRange(0, arrList2.Count + 1)); // Count > list.Count @@ -2066,7 +2066,7 @@ public static void Repeat_ZeroCount() [Fact] public static void Repeat_NegativeCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("count", () => ArrayList.Repeat(5, -1)); // Count < 0 + AssertExtensions.Throws("count", () => ArrayList.Repeat(5, -1)); // Count < 0 } [Fact] @@ -2187,8 +2187,8 @@ public static void Reverse_Int_Int_Invalid() return; } - Assert.Throws("index", () => arrList2.Reverse(-1, arrList2.Count)); // Index < 0 - Assert.Throws("count", () => arrList2.Reverse(0, -1)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.Reverse(-1, arrList2.Count)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.Reverse(0, -1)); // Count < 0 Assert.Throws(null, () => arrList2.Reverse(1000, arrList2.Count)); // Index is too big }); } @@ -2319,8 +2319,8 @@ public static void Sort_Int_Int_IComparer_Invalid() return; } - Assert.Throws("index", () => arrList2.Sort(-1, arrList2.Count, null)); // Index < 0 - Assert.Throws("count", () => arrList2.Sort(0, -1, null)); // Count < 0 + AssertExtensions.Throws("index", () => arrList2.Sort(-1, arrList2.Count, null)); // Index < 0 + AssertExtensions.Throws("count", () => arrList2.Sort(0, -1, null)); // Count < 0 Assert.Throws(null, () => arrList2.Sort(arrList2.Count, arrList2.Count, null)); // Index >= list.Count Assert.Throws(null, () => arrList2.Sort(0, arrList2.Count + 1, null)); // Count = list.Count @@ -2379,7 +2379,7 @@ public static void Synchronized_ReadOnlyArrayList() [Fact] public static void Synchronized_ArrayList_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.Synchronized(null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.Synchronized(null)); // List is null } [Fact] @@ -2403,7 +2403,7 @@ public static void Synchronized_ReadOnlyIList() [Fact] public static void Synchronized_IList_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => ArrayList.Synchronized((IList)null)); // List is null + AssertExtensions.Throws("list", () => ArrayList.Synchronized((IList)null)); // List is null } [Fact] @@ -2447,7 +2447,7 @@ public static void ToArray_Invalid() { // This should be covered in Array.Copy, but lets do it for completion's sake Assert.Throws(() => arrList2.ToArray(typeof(string))); // Objects stored are not strings - Assert.Throws("type", () => arrList2.ToArray(null)); // Type is null + AssertExtensions.Throws("type", () => arrList2.ToArray(null)); // Type is null }); } diff --git a/src/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs b/src/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs index f8b627ff5489..ef7c6c1a350d 100644 --- a/src/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs +++ b/src/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -149,13 +149,13 @@ public static void Ctor_CultureInfo_GetHashCodeCompare_TurkishI() [Fact] public static void Ctor_CultureInfo_NullCulture_ThrowsArgumentNullException() { - Assert.Throws("culture", () => new CaseInsensitiveHashCodeProvider(null)); + AssertExtensions.Throws("culture", () => new CaseInsensitiveHashCodeProvider(null)); } [Fact] public static void GetHashCode_NullObj_ThrowsArgumentNullException() { - Assert.Throws("obj", () => new CaseInsensitiveHashCodeProvider().GetHashCode(null)); + AssertExtensions.Throws("obj", () => new CaseInsensitiveHashCodeProvider().GetHashCode(null)); } [Theory] diff --git a/src/System.Collections.NonGeneric/tests/CaseInsentiveComparerTests.cs b/src/System.Collections.NonGeneric/tests/CaseInsentiveComparerTests.cs index 6cbea07884fe..b84898bef9c1 100644 --- a/src/System.Collections.NonGeneric/tests/CaseInsentiveComparerTests.cs +++ b/src/System.Collections.NonGeneric/tests/CaseInsentiveComparerTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -111,7 +111,7 @@ public static void Ctor_CultureInfo_Compare_TurkishI() [Fact] public static void Ctor_CultureInfo_NullCulture_ThrowsArgumentNullException() { - Assert.Throws("culture", () => new CaseInsensitiveComparer(null)); // Culture is null + AssertExtensions.Throws("culture", () => new CaseInsensitiveComparer(null)); // Culture is null } [Theory] diff --git a/src/System.Collections.NonGeneric/tests/CollectionBaseTests.cs b/src/System.Collections.NonGeneric/tests/CollectionBaseTests.cs index 5b9b8bc8c098..125608d14534 100644 --- a/src/System.Collections.NonGeneric/tests/CollectionBaseTests.cs +++ b/src/System.Collections.NonGeneric/tests/CollectionBaseTests.cs @@ -39,7 +39,7 @@ public static void Ctor_Capacity(int capacity) [Fact] public static void CtorCapacity_Invalid() { - Assert.Throws("capacity", () => new MyCollection(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new MyCollection(-1)); // Capacity < 0 Assert.Throws(() => new MyCollection(int.MaxValue)); // Capacity is too large } @@ -116,8 +116,8 @@ public static void Insert() public static void Insert_InvalidIndex_ThrowsArgumentOutOfRangeException() { MyCollection collBase = CreateCollection(100); - Assert.Throws("index", () => collBase.Insert(-1, new Foo())); // Index < 0 - Assert.Throws("index", () => collBase.Insert(collBase.Count + 1, new Foo())); // Index > collBase.Count + AssertExtensions.Throws("index", () => collBase.Insert(-1, new Foo())); // Index < 0 + AssertExtensions.Throws("index", () => collBase.Insert(collBase.Count + 1, new Foo())); // Index > collBase.Count Assert.Equal(100, collBase.Count); } @@ -137,8 +137,8 @@ public static void RemoveAt() public static void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException() { MyCollection collBase = CreateCollection(100); - Assert.Throws("index", () => collBase.RemoveAt(-1)); // Index < 0 - Assert.Throws("index", () => collBase.RemoveAt(collBase.Count)); // Index > collBase.Count + AssertExtensions.Throws("index", () => collBase.RemoveAt(-1)); // Index < 0 + AssertExtensions.Throws("index", () => collBase.RemoveAt(collBase.Count)); // Index > collBase.Count Assert.Equal(100, collBase.Count); } @@ -186,8 +186,8 @@ public static void Item_Get() public static void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException() { MyCollection collBase = CreateCollection(100); - Assert.Throws("index", () => collBase[-1]); // Index < 0 - Assert.Throws("index", () => collBase[collBase.Count]); // Index >= InnerList.Count + AssertExtensions.Throws("index", () => collBase[-1]); // Index < 0 + AssertExtensions.Throws("index", () => collBase[collBase.Count]); // Index >= InnerList.Count } [Fact] @@ -206,10 +206,10 @@ public static void Item_Set() public static void Item_Set_Invalid() { MyCollection collBase = CreateCollection(100); - Assert.Throws("index", () => collBase[-1] = new Foo()); // Index < 0 - Assert.Throws("index", () => collBase[collBase.Count] = new Foo()); // Index >= InnerList.Count + AssertExtensions.Throws("index", () => collBase[-1] = new Foo()); // Index < 0 + AssertExtensions.Throws("index", () => collBase[collBase.Count] = new Foo()); // Index >= InnerList.Count - Assert.Throws("value", () => collBase[0] = null); // Object is null + AssertExtensions.Throws("value", () => collBase[0] = null); // Object is null } [Fact] @@ -329,10 +329,10 @@ public static void CapacitySet(int capacity) public static void Capacity_Set_Invalid() { var collBase = new MyCollection(new string[10]); - Assert.Throws("value", () => collBase.Capacity = -1); // Capacity < 0 + AssertExtensions.Throws("value", () => collBase.Capacity = -1); // Capacity < 0 Assert.Throws(() => collBase.Capacity = int.MaxValue); // Capacity is very large - Assert.Throws("value", () => collBase.Capacity = collBase.Count - 1); // Capacity < list.Count + AssertExtensions.Throws("value", () => collBase.Capacity = collBase.Count - 1); // Capacity < list.Count } [Fact] public static void Add_Called() diff --git a/src/System.Collections.NonGeneric/tests/ComparerTests.cs b/src/System.Collections.NonGeneric/tests/ComparerTests.cs index 04479f6cb03a..efade55ac03d 100644 --- a/src/System.Collections.NonGeneric/tests/ComparerTests.cs +++ b/src/System.Collections.NonGeneric/tests/ComparerTests.cs @@ -31,7 +31,7 @@ public static void Ctor_CultureInfo(object a, object b, int expected) [Fact] public static void Ctor_CultureInfo_NullCulture_ThrowsArgumentNullException() { - Assert.Throws("culture", () => new Comparer(null)); // Culture is null + AssertExtensions.Throws("culture", () => new Comparer(null)); // Culture is null } [Fact] diff --git a/src/System.Collections.NonGeneric/tests/DictionaryBaseTests.cs b/src/System.Collections.NonGeneric/tests/DictionaryBaseTests.cs index 5b5d36c0bea7..480f9a315022 100644 --- a/src/System.Collections.NonGeneric/tests/DictionaryBaseTests.cs +++ b/src/System.Collections.NonGeneric/tests/DictionaryBaseTests.cs @@ -111,7 +111,7 @@ public static void Item_Get() public static void Item_Get_NullKey_ThrowsArgumentNullException() { var dictBase = new MyDictionary(); - Assert.Throws("key", () => dictBase[null]); + AssertExtensions.Throws("key", () => dictBase[null]); } [Fact] @@ -138,7 +138,7 @@ public static void Item_Set() public static void Indexer_Set_NullKey_ThrowsArgumentNullException() { var dictBase = new MyDictionary(); - Assert.Throws("key", () => dictBase[null] = new FooValue()); + AssertExtensions.Throws("key", () => dictBase[null] = new FooValue()); } [Fact] @@ -182,11 +182,11 @@ public static void CopyTo() public static void CopyTo_Invalid() { MyDictionary dictBase = CreateDictionary(100); - Assert.Throws("array", () => dictBase.CopyTo(null, 0)); // Array is null + AssertExtensions.Throws("array", () => dictBase.CopyTo(null, 0)); // Array is null Assert.Throws(() => dictBase.CopyTo(new object[100, 100], 0)); // Array is multidimensional - Assert.Throws("arrayIndex", () => dictBase.CopyTo(new DictionaryEntry[100], -1)); // Index < 0 + AssertExtensions.Throws("arrayIndex", () => dictBase.CopyTo(new DictionaryEntry[100], -1)); // Index < 0 Assert.Throws(null, () => dictBase.CopyTo(new DictionaryEntry[100], 100)); // Index >= count Assert.Throws(null, () => dictBase.CopyTo(new DictionaryEntry[100], 50)); // Index + array.Count >= count diff --git a/src/System.Collections.NonGeneric/tests/HashtableTests.cs b/src/System.Collections.NonGeneric/tests/HashtableTests.cs index dca806666954..87dd17bcb8b9 100644 --- a/src/System.Collections.NonGeneric/tests/HashtableTests.cs +++ b/src/System.Collections.NonGeneric/tests/HashtableTests.cs @@ -62,7 +62,7 @@ public static void Ctor_IDictionary() [Fact] public static void Ctor_IDictionary_NullDictionary_ThrowsArgumentNullException() { - Assert.Throws("d", () => new Hashtable((IDictionary)null)); // Dictionary is null + AssertExtensions.Throws("d", () => new Hashtable((IDictionary)null)); // Dictionary is null } [Fact] @@ -84,7 +84,7 @@ public static void Ctor_IDictionary_HashCodeProvider_Comparer() [Fact] public static void Ctor_IDictionary_HashCodeProvider_Comparer_NullDictionary_ThrowsArgumentNullException() { - Assert.Throws("d", () => new Hashtable(null, CaseInsensitiveHashCodeProvider.Default, StringComparer.OrdinalIgnoreCase)); // Dictionary is null + AssertExtensions.Throws("d", () => new Hashtable(null, CaseInsensitiveHashCodeProvider.Default, StringComparer.OrdinalIgnoreCase)); // Dictionary is null } [Fact] @@ -126,7 +126,7 @@ public static void Ctor_Int_HashCodeProvider_Comparer(int capacity) [Fact] public static void Ctor_Int_Invalid() { - Assert.Throws("capacity", () => new Hashtable(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new Hashtable(-1)); // Capacity < 0 Assert.Throws(() => new Hashtable(int.MaxValue)); // Capacity / load factor > int.MaxValue } @@ -150,14 +150,14 @@ public static void Ctor_IDictionary_Int() [Fact] public static void Ctor_IDictionary_Int_Invalid() { - Assert.Throws("d", () => new Hashtable(null, 1f)); // Dictionary is null + AssertExtensions.Throws("d", () => new Hashtable(null, 1f)); // Dictionary is null - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), 0.09f)); // Load factor < 0.1f - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), 1.01f)); // Load factor > 1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), 0.09f)); // Load factor < 0.1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), 1.01f)); // Load factor > 1f - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NaN)); // Load factor is NaN - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.PositiveInfinity)); // Load factor is infinity - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NegativeInfinity)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NaN)); // Load factor is NaN + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.PositiveInfinity)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NegativeInfinity)); // Load factor is infinity } [Fact] @@ -204,7 +204,7 @@ public static void Ctor_IDictionary_IEqualityComparer() [Fact] public static void Ctor_IDictionary_IEqualityComparer_NullDictionary_ThrowsArgumentNullException() { - Assert.Throws("d", () => new Hashtable((IDictionary)null, null)); // Dictionary is null + AssertExtensions.Throws("d", () => new Hashtable((IDictionary)null, null)); // Dictionary is null } [Theory] @@ -252,15 +252,15 @@ public static void Ctor_Int_Int_GenerateNewPrime() [Fact] public static void Ctor_Int_Int_Invalid() { - Assert.Throws("capacity", () => new Hashtable(-1, 1f)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new Hashtable(-1, 1f)); // Capacity < 0 Assert.Throws(() => new Hashtable(int.MaxValue, 0.1f)); // Capacity / load factor > int.MaxValue - Assert.Throws("loadFactor", () => new Hashtable(100, 0.09f)); // Load factor < 0.1f - Assert.Throws("loadFactor", () => new Hashtable(100, 1.01f)); // Load factor > 1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, 0.09f)); // Load factor < 0.1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, 1.01f)); // Load factor > 1f - Assert.Throws("loadFactor", () => new Hashtable(100, float.NaN)); // Load factor is NaN - Assert.Throws("loadFactor", () => new Hashtable(100, float.PositiveInfinity)); // Load factor is infinity - Assert.Throws("loadFactor", () => new Hashtable(100, float.NegativeInfinity)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.NaN)); // Load factor is NaN + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.PositiveInfinity)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.NegativeInfinity)); // Load factor is infinity } [Theory] @@ -286,7 +286,7 @@ public static void Ctor_Int_IEqualityComparer(int capacity) [Fact] public static void Ctor_Int_IEqualityComparer_Invalid() { - Assert.Throws("capacity", () => new Hashtable(-1, null)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new Hashtable(-1, null)); // Capacity < 0 Assert.Throws(() => new Hashtable(int.MaxValue, null)); // Capacity / load factor > int.MaxValue } @@ -319,14 +319,14 @@ public static void Ctor_IDictionary_Int_IEqualityComparer() [Fact] public static void Ctor_IDictionary_LoadFactor_IEqualityComparer_Invalid() { - Assert.Throws("d", () => new Hashtable(null, 1f, null)); // Dictionary is null + AssertExtensions.Throws("d", () => new Hashtable(null, 1f, null)); // Dictionary is null - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), 0.09f, null)); // Load factor < 0.1f - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), 1.01f, null)); // Load factor > 1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), 0.09f, null)); // Load factor < 0.1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), 1.01f, null)); // Load factor > 1f - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NaN, null)); // Load factor is NaN - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.PositiveInfinity, null)); // Load factor is infinity - Assert.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NegativeInfinity, null)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NaN, null)); // Load factor is NaN + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.PositiveInfinity, null)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(new Hashtable(), float.NegativeInfinity, null)); // Load factor is infinity } [Theory] @@ -353,15 +353,15 @@ public static void Ctor_Int_Int_IEqualityComparer(int capacity, float loadFactor [Fact] public static void Ctor_Capacity_LoadFactor_IEqualityComparer_Invalid() { - Assert.Throws("capacity", () => new Hashtable(-1, 1f, null)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new Hashtable(-1, 1f, null)); // Capacity < 0 Assert.Throws(() => new Hashtable(int.MaxValue, 0.1f, null)); // Capacity / load factor > int.MaxValue - Assert.Throws("loadFactor", () => new Hashtable(100, 0.09f, null)); // Load factor < 0.1f - Assert.Throws("loadFactor", () => new Hashtable(100, 1.01f, null)); // Load factor > 1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, 0.09f, null)); // Load factor < 0.1f + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, 1.01f, null)); // Load factor > 1f - Assert.Throws("loadFactor", () => new Hashtable(100, float.NaN, null)); // Load factor is NaN - Assert.Throws("loadFactor", () => new Hashtable(100, float.PositiveInfinity, null)); // Load factor is infinity - Assert.Throws("loadFactor", () => new Hashtable(100, float.NegativeInfinity, null)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.NaN, null)); // Load factor is NaN + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.PositiveInfinity, null)); // Load factor is infinity + AssertExtensions.Throws("loadFactor", () => new Hashtable(100, float.NegativeInfinity, null)); // Load factor is infinity } [Fact] @@ -646,8 +646,8 @@ public static void ContainsKey_NullKey_ThrowsArgumentNullException() var hash1 = new Hashtable(); Helpers.PerformActionOnAllHashtableWrappers(hash1, hash2 => { - Assert.Throws("key", () => hash2.ContainsKey(null)); // Key is null - Assert.Throws("key", () => hash2.Contains(null)); // Key is null + AssertExtensions.Throws("key", () => hash2.ContainsKey(null)); // Key is null + AssertExtensions.Throws("key", () => hash2.Contains(null)); // Key is null }); } @@ -774,7 +774,7 @@ public static void SynchronizedProperties() [Fact] public static void Synchronized_NullTable_ThrowsArgumentNullException() { - Assert.Throws("table", () => Hashtable.Synchronized(null)); // Table is null + AssertExtensions.Throws("table", () => Hashtable.Synchronized(null)); // Table is null } [Fact] diff --git a/src/System.Collections.NonGeneric/tests/QueueTests.cs b/src/System.Collections.NonGeneric/tests/QueueTests.cs index 9e56f3033f8e..7adbc4d1abe8 100644 --- a/src/System.Collections.NonGeneric/tests/QueueTests.cs +++ b/src/System.Collections.NonGeneric/tests/QueueTests.cs @@ -47,7 +47,7 @@ public static void Ctor_Int(int capacity) [Fact] public static void Ctor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new Queue(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new Queue(-1)); // Capacity < 0 } [Theory] @@ -68,9 +68,9 @@ public static void Ctor_Int_Int(int capacity, float growFactor) [Fact] public static void Ctor_Int_Int_Invalid() { - Assert.Throws("capacity", () => new Queue(-1, 1)); // Capacity < 0 - Assert.Throws("growFactor", () => new Queue(1, (float)0.99)); // Grow factor < 1 - Assert.Throws("growFactor", () => new Queue(1, (float)10.01)); // Grow factor > 10 + AssertExtensions.Throws("capacity", () => new Queue(-1, 1)); // Capacity < 0 + AssertExtensions.Throws("growFactor", () => new Queue(1, (float)0.99)); // Grow factor < 1 + AssertExtensions.Throws("growFactor", () => new Queue(1, (float)10.01)); // Grow factor > 10 } [Fact] @@ -89,7 +89,7 @@ public static void Ctor_ICollection() [Fact] public static void Ctor_ICollection_NullCollection_ThrowsArgumentNullException() { - Assert.Throws("col", () => new Queue(null)); // Collection is null + AssertExtensions.Throws("col", () => new Queue(null)); // Collection is null } [Fact] @@ -376,10 +376,10 @@ public static void CopyTo_Invalid() Queue queue1 = Helpers.CreateIntQueue(100); Helpers.PerformActionOnAllQueueWrappers(queue1, queue2 => { - Assert.Throws("array", () => queue2.CopyTo(null, 0)); // Array is null + AssertExtensions.Throws("array", () => queue2.CopyTo(null, 0)); // Array is null Assert.Throws(() => queue2.CopyTo(new object[150, 150], 0)); // Array is multidimensional - Assert.Throws("index", () => queue2.CopyTo(new object[150], -1)); // Index < 0 + AssertExtensions.Throws("index", () => queue2.CopyTo(new object[150], -1)); // Index < 0 Assert.Throws(null, () => queue2.CopyTo(new object[150], 51)); // Index + queue.Count > array.Length }); @@ -953,7 +953,7 @@ private void PerformTest(Action action, int expected) [Fact] public static void Synchronized_NullQueue_ThrowsArgumentNullException() { - Assert.Throws("queue", () => Queue.Synchronized(null)); // Queue is null + AssertExtensions.Throws("queue", () => Queue.Synchronized(null)); // Queue is null } public void StartEnqueueThread() diff --git a/src/System.Collections.NonGeneric/tests/SortedListTests.cs b/src/System.Collections.NonGeneric/tests/SortedListTests.cs index eafb5e2b7567..906d743da24d 100644 --- a/src/System.Collections.NonGeneric/tests/SortedListTests.cs +++ b/src/System.Collections.NonGeneric/tests/SortedListTests.cs @@ -44,7 +44,7 @@ public static void Ctor_Int(int initialCapacity) [Fact] public static void Ctor_Int_NegativeInitialCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("initialCapacity", () => new SortedList(-1)); // InitialCapacity < 0 + AssertExtensions.Throws("initialCapacity", () => new SortedList(-1)); // InitialCapacity < 0 } [Theory] @@ -66,7 +66,7 @@ public static void Ctor_IComparer_Int(int initialCapacity) [Fact] public static void Ctor_IComparer_Int_NegativeInitialCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => new SortedList(new CustomComparer(), -1)); // InitialCapacity < 0 + AssertExtensions.Throws("value", () => new SortedList(new CustomComparer(), -1)); // InitialCapacity < 0 } [Fact] @@ -142,7 +142,7 @@ public static void Ctor_IDictionary(int count, bool sorted) [Fact] public static void Ctor_IDictionary_NullDictionary_ThrowsArgumentNullException() { - Assert.Throws("d", () => new SortedList((IDictionary)null)); // Dictionary is null + AssertExtensions.Throws("d", () => new SortedList((IDictionary)null)); // Dictionary is null } [Theory] @@ -208,7 +208,7 @@ public static void Ctor_IDictionary_IComparer_Null() [Fact] public static void Ctor_IDictionary_IComparer_NullDictionary_ThrowsArgumentNullException() { - Assert.Throws("d", () => new SortedList(null, new CustomComparer())); // Dictionary is null + AssertExtensions.Throws("d", () => new SortedList(null, new CustomComparer())); // Dictionary is null } [Fact] @@ -300,7 +300,7 @@ public static void Add_Invalid() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("key", () => sortList2.Add(null, 101)); // Key is null + AssertExtensions.Throws("key", () => sortList2.Add(null, 101)); // Key is null Assert.Throws(null, () => sortList2.Add(1, 101)); // Key already exists }); @@ -414,8 +414,8 @@ public static void ContainsKey_NullKey_ThrowsArgumentNullException() var sortList1 = new SortedList(); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("key", () => sortList2.Contains(null)); // Key is null - Assert.Throws("key", () => sortList2.ContainsKey(null)); // Key is null + AssertExtensions.Throws("key", () => sortList2.Contains(null)); // Key is null + AssertExtensions.Throws("key", () => sortList2.ContainsKey(null)); // Key is null }); } @@ -477,10 +477,10 @@ public static void CopyTo_Invalid() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("array", () => sortList2.CopyTo(null, 0)); // Array is null + AssertExtensions.Throws("array", () => sortList2.CopyTo(null, 0)); // Array is null Assert.Throws(() => sortList2.CopyTo(new object[10, 10], 0)); // Array is multidimensional - Assert.Throws("arrayIndex", () => sortList2.CopyTo(new object[100], -1)); // Index < 0 + AssertExtensions.Throws("arrayIndex", () => sortList2.CopyTo(new object[100], -1)); // Index < 0 Assert.Throws(null, () => sortList2.CopyTo(new object[150], 51)); // Index + list.Count > array.Count }); } @@ -509,8 +509,8 @@ public static void GetByIndex_InvalidIndex_ThrowsArgumentOutOfRangeException() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("index", () => sortList2.GetByIndex(-1)); // Index < 0 - Assert.Throws("index", () => sortList2.GetByIndex(sortList2.Count)); // Index >= list.Count + AssertExtensions.Throws("index", () => sortList2.GetByIndex(-1)); // Index < 0 + AssertExtensions.Throws("index", () => sortList2.GetByIndex(sortList2.Count)); // Index >= list.Count }); } @@ -816,7 +816,7 @@ public static void GetKeyList_IndexOf_Invalid() Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { IList keys = sortList2.GetKeyList(); - Assert.Throws("key", () => keys.IndexOf(null)); // Value is null + AssertExtensions.Throws("key", () => keys.IndexOf(null)); // Value is null Assert.Throws(() => keys.IndexOf("hello")); // Value is a different object type }); } @@ -969,8 +969,8 @@ public static void GetKey_InvalidIndex_ThrowsArgumentOutOfRangeException() SortedList sortList1 = Helpers.CreateStringSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("index", () => sortList2.GetKey(-1)); // Index < 0 - Assert.Throws("index", () => sortList2.GetKey(sortList2.Count)); // Index >= count + AssertExtensions.Throws("index", () => sortList2.GetKey(-1)); // Index < 0 + AssertExtensions.Throws("index", () => sortList2.GetKey(sortList2.Count)); // Index >= count }); } @@ -1217,7 +1217,7 @@ public static void IndexOfKey_NullKey_ThrowsArgumentNullException() SortedList sortList1 = Helpers.CreateStringSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("key", () => sortList2.IndexOfKey(null)); // Key is null + AssertExtensions.Throws("key", () => sortList2.IndexOfKey(null)); // Key is null }); } @@ -1284,7 +1284,7 @@ public static void Capacity_Set_ShrinkingCapacity_ThrowsArgumentOutOfRangeExcept SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("value", () => sortList2.Capacity = sortList2.Count - 1); // Capacity < count + AssertExtensions.Throws("value", () => sortList2.Capacity = sortList2.Count - 1); // Capacity < count }); } @@ -1294,7 +1294,7 @@ public static void Capacity_Set_Invalid() var sortList1 = new SortedList(); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("value", () => sortList2.Capacity = -1); // Capacity < 0 + AssertExtensions.Throws("value", () => sortList2.Capacity = -1); // Capacity < 0 Assert.Throws(() => sortList2.Capacity = int.MaxValue); // Capacity is too large }); } @@ -1404,7 +1404,7 @@ public static void Item_Set_NullKey_ThrowsArgumentNullException() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("key", () => sortList2[null] = 101); // Key is null + AssertExtensions.Throws("key", () => sortList2[null] = 101); // Key is null }); } @@ -1431,8 +1431,8 @@ public static void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("index", () => sortList2.RemoveAt(-1)); // Index < 0 - Assert.Throws("index", () => sortList2.RemoveAt(sortList2.Count)); // Index >= count + AssertExtensions.Throws("index", () => sortList2.RemoveAt(-1)); // Index < 0 + AssertExtensions.Throws("index", () => sortList2.RemoveAt(sortList2.Count)); // Index >= count }); } @@ -1461,7 +1461,7 @@ public static void Remove_NullKey_ThrowsArgumentNullException() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("key", () => sortList2.Remove(null)); // Key is null + AssertExtensions.Throws("key", () => sortList2.Remove(null)); // Key is null }); } @@ -1485,8 +1485,8 @@ public static void SetByIndex_InvalidIndex_ThrowsArgumentOutOfRangeExeption() SortedList sortList1 = Helpers.CreateIntSortedList(100); Helpers.PerformActionOnAllSortedListWrappers(sortList1, sortList2 => { - Assert.Throws("index", () => sortList2.SetByIndex(-1, 101)); // Index < 0 - Assert.Throws("index", () => sortList2.SetByIndex(sortList2.Count, 101)); // Index >= list.Count + AssertExtensions.Throws("index", () => sortList2.SetByIndex(-1, 101)); // Index < 0 + AssertExtensions.Throws("index", () => sortList2.SetByIndex(sortList2.Count, 101)); // Index >= list.Count }); } @@ -1500,7 +1500,7 @@ public static void Synchronized_IsSynchronized() [Fact] public static void Synchronized_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => SortedList.Synchronized(null)); // List is null + AssertExtensions.Throws("list", () => SortedList.Synchronized(null)); // List is null } [Fact] diff --git a/src/System.Collections.NonGeneric/tests/StackTests.cs b/src/System.Collections.NonGeneric/tests/StackTests.cs index f292a1392fc0..b990ca2919c3 100644 --- a/src/System.Collections.NonGeneric/tests/StackTests.cs +++ b/src/System.Collections.NonGeneric/tests/StackTests.cs @@ -36,7 +36,7 @@ public static void Ctor_Int(int initialCapacity) [Fact] public static void Ctor_Int_NegativeInitialCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("initialCapacity", () => new Stack(-1)); // InitialCapacity < 0 + AssertExtensions.Throws("initialCapacity", () => new Stack(-1)); // InitialCapacity < 0 } [Theory] @@ -67,7 +67,7 @@ public static void Ctor_ICollection(int count) [Fact] public static void Ctor_ICollection_NullCollection_ThrowsArgumentNullException() { - Assert.Throws("col", () => new Stack(null)); // Collection is null + AssertExtensions.Throws("col", () => new Stack(null)); // Collection is null } [Fact] @@ -234,10 +234,10 @@ public static void CopyTo_Invalid() Stack stack1 = Helpers.CreateIntStack(100); Helpers.PerformActionOnAllStackWrappers(stack1, stack2 => { - Assert.Throws("array", () => stack2.CopyTo(null, 0)); // Array is null + AssertExtensions.Throws("array", () => stack2.CopyTo(null, 0)); // Array is null Assert.Throws(() => stack2.CopyTo(new object[10, 10], 0)); // Array is multidimensional - Assert.Throws("index", () => stack2.CopyTo(new object[100], -1)); // Index < 0 + AssertExtensions.Throws("index", () => stack2.CopyTo(new object[100], -1)); // Index < 0 Assert.Throws(null, () => stack2.CopyTo(new object[0], 0)); // Index >= array.Count Assert.Throws(null, () => stack2.CopyTo(new object[100], 1)); // Index + array.Count > stack.Count Assert.Throws(null, () => stack2.CopyTo(new object[150], 51)); // Index + array.Count > stack.Count @@ -504,7 +504,7 @@ public static void Synchronized_IsSynchronized() [Fact] public static void Synchronized_NullStack_ThrowsArgumentNullException() { - Assert.Throws("stack", () => Stack.Synchronized(null)); // Stack is null + AssertExtensions.Throws("stack", () => Stack.Synchronized(null)); // Stack is null } [Theory] diff --git a/src/System.Collections.Specialized/tests/BitVector32Tests.cs b/src/System.Collections.Specialized/tests/BitVector32Tests.cs index 95cf24080a4a..ae55980f097e 100644 --- a/src/System.Collections.Specialized/tests/BitVector32Tests.cs +++ b/src/System.Collections.Specialized/tests/BitVector32Tests.cs @@ -430,9 +430,9 @@ public static void CreateSection_NextTest(short maximum, short mask) [InlineData(0)] public static void CreateSection_InvalidMaximumTest(short maxvalue) { - Assert.Throws("maxValue", () => BitVector32.CreateSection(maxvalue)); + AssertExtensions.Throws("maxValue", () => BitVector32.CreateSection(maxvalue)); BitVector32.Section valid = BitVector32.CreateSection(1); - Assert.Throws("maxValue", () => BitVector32.CreateSection(maxvalue, valid)); + AssertExtensions.Throws("maxValue", () => BitVector32.CreateSection(maxvalue, valid)); } [Theory] diff --git a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.AddTests.cs b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.AddTests.cs index 46086e2633ec..f9b738f34464 100644 --- a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.AddTests.cs +++ b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.AddTests.cs @@ -85,7 +85,7 @@ public void Add_SameValue(int count) public void Add_Invalid(int count, bool caseInsensitive) { HybridDictionary hybridDictionary = Helpers.CreateHybridDictionary(count, caseInsensitive); - Assert.Throws("key", () => hybridDictionary.Add(null, "value")); + AssertExtensions.Throws("key", () => hybridDictionary.Add(null, "value")); hybridDictionary.Add("key", "value"); Assert.Throws(null, () => hybridDictionary.Add("key", "value")); diff --git a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs index 1f0250d04971..69c357bf1c94 100644 --- a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs +++ b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs @@ -48,7 +48,7 @@ public void CopyTo_Invalid(int count) MyNameObjectCollection nameObjectCollection = Helpers.CreateNameObjectCollection(count); ICollection collection = nameObjectCollection; - Assert.Throws("array", () => collection.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => collection.CopyTo(null, 0)); Assert.Throws(() => collection.CopyTo(new string[count, count], 0)); if (count > 0) @@ -59,7 +59,7 @@ public void CopyTo_Invalid(int count) Assert.Throws(() => collection.CopyTo(new Foo[count], 0)); } - Assert.Throws("index", () => collection.CopyTo(new string[count], -1)); + AssertExtensions.Throws("index", () => collection.CopyTo(new string[count], -1)); Assert.Throws(null, () => collection.CopyTo(new string[count], 1)); Assert.Throws(null, () => collection.CopyTo(new string[count], count + 1)); } diff --git a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs index 0d4eca670805..f8e93c353ffe 100644 --- a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs +++ b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs @@ -38,7 +38,7 @@ private static void VerifyGetAllValues(NameObjectCollectionBase nameObjectCollec public static void GetAllValues_Invalid() { MyNameObjectCollection nameObjectCollection = new MyNameObjectCollection(); - Assert.Throws("type", () => nameObjectCollection.GetAllValues(null)); + AssertExtensions.Throws("type", () => nameObjectCollection.GetAllValues(null)); nameObjectCollection.Add("name", new Foo("value")); Assert.Throws(() => nameObjectCollection.GetAllValues(typeof(string))); diff --git a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs index d5d78822fa3a..58a97c8fcd8d 100644 --- a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs +++ b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs @@ -155,7 +155,7 @@ public void Keys_CopyTo_Invalid(int count) NameObjectCollectionBase.KeysCollection keys = nameObjectCollection.Keys; ICollection keysCollection = keys; - Assert.Throws("array", () => keysCollection.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => keysCollection.CopyTo(null, 0)); Assert.Throws(() => keysCollection.CopyTo(new string[count, count], 0)); if (count > 0) @@ -166,7 +166,7 @@ public void Keys_CopyTo_Invalid(int count) Assert.Throws(() => keysCollection.CopyTo(new Foo[count], 0)); } - Assert.Throws("index", () => keysCollection.CopyTo(new string[count], -1)); + AssertExtensions.Throws("index", () => keysCollection.CopyTo(new string[count], -1)); Assert.Throws(null, () => keysCollection.CopyTo(new string[count], 1)); Assert.Throws(null, () => keysCollection.CopyTo(new string[count], count + 1)); } diff --git a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs index ced23f270dd9..ff374d408609 100644 --- a/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs +++ b/src/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs @@ -66,8 +66,8 @@ public void RemoveAt() public void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) { MyNameObjectCollection nameObjectCollection = Helpers.CreateNameObjectCollection(count); - Assert.Throws("index", () => nameObjectCollection.RemoveAt(-1)); - Assert.Throws("index", () => nameObjectCollection.RemoveAt(count)); + AssertExtensions.Throws("index", () => nameObjectCollection.RemoveAt(-1)); + AssertExtensions.Throws("index", () => nameObjectCollection.RemoveAt(count)); } [Fact] diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs index 4ca8ba894184..7e47adbf09a6 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs @@ -123,7 +123,7 @@ public void Add_NameValueCollection_WithNullValues() [Fact] public void Add_NullNameValueCollection_ThrowsArgumentNullException() { - Assert.Throws("c", () => new NameValueCollection().Add(null)); + AssertExtensions.Throws("c", () => new NameValueCollection().Add(null)); } } } diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs index 2a1206695144..d8d2a989ad81 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs @@ -58,10 +58,10 @@ public void CopyTo_MultipleValues_SameName() public void CopyTo_Invalid(int count) { NameValueCollection nameValueCollection = Helpers.CreateNameValueCollection(count); - Assert.Throws("dest", () => nameValueCollection.CopyTo(null, 0)); + AssertExtensions.Throws("dest", () => nameValueCollection.CopyTo(null, 0)); AssertExtensions.Throws("dest", null, () => nameValueCollection.CopyTo(new string[count, count], 0)); // in netfx when passing multidimensional arrays Exception.ParamName is null. - Assert.Throws("index", () => nameValueCollection.CopyTo(new string[count], -1)); + AssertExtensions.Throws("index", () => nameValueCollection.CopyTo(new string[count], -1)); Assert.Throws(null, () => nameValueCollection.CopyTo(new string[count], 1)); Assert.Throws(null, () => nameValueCollection.CopyTo(new string[count], count + 1)); diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs index a3c85bfc4c11..e8beca425c17 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs @@ -70,9 +70,9 @@ public void Ctor_Int(int capacity) [Fact] public void Ctor_NegativeCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new NameValueCollection(-1)); - Assert.Throws("capacity", () => new NameValueCollection(-1, new NameValueCollection())); - Assert.Throws("capacity", () => new NameValueCollection(-1, (IEqualityComparer)null + AssertExtensions.Throws("capacity", () => new NameValueCollection(-1)); + AssertExtensions.Throws("capacity", () => new NameValueCollection(-1, new NameValueCollection())); + AssertExtensions.Throws("capacity", () => new NameValueCollection(-1, (IEqualityComparer)null )); Assert.Throws(() => new NameValueCollection(int.MaxValue)); @@ -109,8 +109,8 @@ public void Ctor_NameValueCollection(NameValueCollection nameValueCollection1) [Fact] public void Ctor_NullNameValueCollection_ThrowsArgumentNullException() { - Assert.Throws("c", () => new NameValueCollection((NameValueCollection)null)); - Assert.Throws("col", () => new NameValueCollection(0, (NameValueCollection)null)); + AssertExtensions.Throws("c", () => new NameValueCollection((NameValueCollection)null)); + AssertExtensions.Throws("col", () => new NameValueCollection(0, (NameValueCollection)null)); } public static IEnumerable Ctor_Int_NameValueCollection_TestData() diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs index af61099d34e4..60a4691ec4c7 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs @@ -14,9 +14,9 @@ public class NameValueCollectionGetIntTests public void Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) { NameValueCollection nameValueCollection = Helpers.CreateNameValueCollection(count); - Assert.Throws("index", () => nameValueCollection.Get(-1)); - Assert.Throws("index", () => nameValueCollection.Get(count)); - Assert.Throws("index", () => nameValueCollection.Get(count + 1)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(-1)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(count)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(count + 1)); } } } diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs index 258eed73f006..e65cb65cc3e9 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs @@ -14,9 +14,9 @@ public class NameValueCollectionGetItemTests public void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) { NameValueCollection nameValueCollection = Helpers.CreateNameValueCollection(count); - Assert.Throws("index", () => nameValueCollection[-1]); - Assert.Throws("index", () => nameValueCollection[count]); - Assert.Throws("index", () => nameValueCollection[count + 1]); + AssertExtensions.Throws("index", () => nameValueCollection[-1]); + AssertExtensions.Throws("index", () => nameValueCollection[count]); + AssertExtensions.Throws("index", () => nameValueCollection[count + 1]); } } } diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs index 9f84dfae2c37..ea10d40b554d 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs @@ -14,9 +14,9 @@ public class NameValueCollectionGetKeyTests public void Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) { NameValueCollection nameValueCollection = Helpers.CreateNameValueCollection(count); - Assert.Throws("index", () => nameValueCollection.Get(-1)); - Assert.Throws("index", () => nameValueCollection.Get(count)); - Assert.Throws("index", () => nameValueCollection.Get(count + 1)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(-1)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(count)); + AssertExtensions.Throws("index", () => nameValueCollection.Get(count + 1)); } } } diff --git a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs index bc8d1deb6d98..4e45240f366b 100644 --- a/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs +++ b/src/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs @@ -14,9 +14,9 @@ public class NameValueCollectionGetValuesIntTests public void GetValues_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) { NameValueCollection nameValueCollection = Helpers.CreateNameValueCollection(count); - Assert.Throws("index", () => nameValueCollection.GetValues(-1)); - Assert.Throws("index", () => nameValueCollection.GetValues(count)); - Assert.Throws("index", () => nameValueCollection.GetValues(count + 1)); + AssertExtensions.Throws("index", () => nameValueCollection.GetValues(-1)); + AssertExtensions.Throws("index", () => nameValueCollection.GetValues(count)); + AssertExtensions.Throws("index", () => nameValueCollection.GetValues(count + 1)); } } } diff --git a/src/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs b/src/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs index 8366b381205e..402bb913bb29 100644 --- a/src/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs +++ b/src/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs @@ -165,8 +165,8 @@ public void KeysPropertyContainsAllKeys() Assert.True(d.Contains(array[i])); } - Assert.Throws("array", () => keys.CopyTo(null, 0)); - Assert.Throws("index", () => keys.CopyTo(new object[keys.Count], -1)); + AssertExtensions.Throws("array", () => keys.CopyTo(null, 0)); + AssertExtensions.Throws("index", () => keys.CopyTo(new object[keys.Count], -1)); } // bool System.Collections.ICollection.IsSynchronized { get; } @@ -295,8 +295,8 @@ public void ValuesPropertyContainsAllValues() Assert.Equal(array[i], "bar_" + (i - 50)); } - Assert.Throws("array", () => values.CopyTo(null, 0)); - Assert.Throws("index", () => values.CopyTo(new object[values.Count], -1)); + AssertExtensions.Throws("array", () => values.CopyTo(null, 0)); + AssertExtensions.Throws("index", () => values.CopyTo(new object[values.Count], -1)); } // public void Add(object key, object value); diff --git a/src/System.Collections.Specialized/tests/StringCollectionTests.cs b/src/System.Collections.Specialized/tests/StringCollectionTests.cs index fa63185207a6..cbddc7e0682e 100644 --- a/src/System.Collections.Specialized/tests/StringCollectionTests.cs +++ b/src/System.Collections.Specialized/tests/StringCollectionTests.cs @@ -164,7 +164,7 @@ public static void AddRangeTest(StringCollection collection, string[] data) [MemberData(nameof(StringCollection_Duplicates_Data))] public static void AddRange_NullTest(StringCollection collection, string[] data) { - Assert.Throws("value", () => collection.AddRange(null)); + AssertExtensions.Throws("value", () => collection.AddRange(null)); } [Theory] diff --git a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.AddTests.cs b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.AddTests.cs index 9344f22aadd4..8352eec0cbd0 100644 --- a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.AddTests.cs +++ b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.AddTests.cs @@ -41,7 +41,7 @@ public void Add_Invalid() StringDictionary stringDictionary = new StringDictionary(); stringDictionary.Add("Key", "Value"); - Assert.Throws("key", () => stringDictionary.Add(null, "value")); + AssertExtensions.Throws("key", () => stringDictionary.Add(null, "value")); // Duplicate key Assert.Throws(null, () => stringDictionary.Add("Key", "value")); diff --git a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.ContainsKeyTests.cs b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.ContainsKeyTests.cs index eb165724a81e..b0d0d65b8c26 100644 --- a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.ContainsKeyTests.cs +++ b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.ContainsKeyTests.cs @@ -33,7 +33,7 @@ public void ContainsKey_NonExistentKey_ReturnsFalse(int count) public void ContainsKey_NullKey_ThrowsArgumentNullException(int count) { StringDictionary stringDictionary = Helpers.CreateStringDictionary(count); - Assert.Throws("key", () => stringDictionary.ContainsKey(null)); + AssertExtensions.Throws("key", () => stringDictionary.ContainsKey(null)); } } } diff --git a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.GetItemTests.cs b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.GetItemTests.cs index 0c40b2cb310e..8789b5f95974 100644 --- a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.GetItemTests.cs +++ b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.GetItemTests.cs @@ -46,7 +46,7 @@ public void Item_Get_DuplicateValues() public void Item_Get_NullKey_ThrowsArgumentNullException(int count) { StringDictionary stringDictionary = Helpers.CreateStringDictionary(count); - Assert.Throws("key", () => stringDictionary[null]); + AssertExtensions.Throws("key", () => stringDictionary[null]); } } } diff --git a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.RemoveTests.cs b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.RemoveTests.cs index bc1819039023..452e170dc4b8 100644 --- a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.RemoveTests.cs +++ b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.RemoveTests.cs @@ -63,7 +63,7 @@ public void Remove_DuplicateValues() public void Remove_NullKey_ThrowsArgumentNullException(int count) { StringDictionary stringDictionary = Helpers.CreateStringDictionary(count); - Assert.Throws("key", () => stringDictionary.Remove(null)); + AssertExtensions.Throws("key", () => stringDictionary.Remove(null)); } } } diff --git a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.SetItemTests.cs b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.SetItemTests.cs index 857b20df0767..f1aedc23685f 100644 --- a/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.SetItemTests.cs +++ b/src/System.Collections.Specialized/tests/StringDictionary/StringDictionary.SetItemTests.cs @@ -75,7 +75,7 @@ public void Item_Set_IsCaseInsensitive() public void Item_Set_NullKey_ThrowsArgumentNullException(int count) { StringDictionary stringDictionary = Helpers.CreateStringDictionary(count); - Assert.Throws("key", () => stringDictionary[null] = "value"); + AssertExtensions.Throws("key", () => stringDictionary[null] = "value"); } } } diff --git a/src/System.Collections/tests/BitArray/BitArray_CtorTests.cs b/src/System.Collections/tests/BitArray/BitArray_CtorTests.cs index b9b2981c6657..43527706bce0 100644 --- a/src/System.Collections/tests/BitArray/BitArray_CtorTests.cs +++ b/src/System.Collections/tests/BitArray/BitArray_CtorTests.cs @@ -70,8 +70,8 @@ public static void Ctor_Int_Bool(int length, bool defaultValue) [Fact] public static void Ctor_Int_NegativeLength_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => new BitArray(-1)); - Assert.Throws("length", () => new BitArray(-1, false)); + AssertExtensions.Throws("length", () => new BitArray(-1)); + AssertExtensions.Throws("length", () => new BitArray(-1, false)); } public static IEnumerable Ctor_BoolArray_TestData() @@ -104,7 +104,7 @@ public static void Ctor_BoolArray(bool[] values) [Fact] public static void Ctor_NullBoolArray_ThrowsArgumentNullException() { - Assert.Throws("values", () => new BitArray((bool[])null)); + AssertExtensions.Throws("values", () => new BitArray((bool[])null)); } public static IEnumerable Ctor_BitArray_TestData() @@ -155,7 +155,7 @@ public static void Ctor_BitArray(string label, BitArray bits) [Fact] public static void Ctor_NullBitArray_ThrowsArgumentNullException() { - Assert.Throws("bits", () => new BitArray((BitArray)null)); + AssertExtensions.Throws("bits", () => new BitArray((BitArray)null)); } public static IEnumerable Ctor_IntArray_TestData() @@ -188,13 +188,13 @@ public static void Ctor_IntArray(int[] array, bool[] expected) [Fact] public static void Ctor_NullIntArray_ThrowsArgumentNullException() { - Assert.Throws("values", () => new BitArray((int[])null)); + AssertExtensions.Throws("values", () => new BitArray((int[])null)); } [Fact] public static void Ctor_LargeIntArrayOverflowingBitArray_ThrowsArgumentException() { - Assert.Throws("values", () => new BitArray(new int[int.MaxValue / BitsPerInt32 + 1 ])); + AssertExtensions.Throws("values", () => new BitArray(new int[int.MaxValue / BitsPerInt32 + 1 ])); } public static IEnumerable Ctor_ByteArray_TestData() @@ -227,13 +227,13 @@ public static void Ctor_ByteArray(byte[] bytes, bool[] expected) [Fact] public static void Ctor_NullByteArray_ThrowsArgumentNullException() { - Assert.Throws("bytes", () => new BitArray((byte[])null)); + AssertExtensions.Throws("bytes", () => new BitArray((byte[])null)); } [Fact] public static void Ctor_LargeByteArrayOverflowingBitArray_ThrowsArgumentException() { - Assert.Throws("bytes", () => new BitArray(new byte[int.MaxValue / BitsPerByte + 1 ])); + AssertExtensions.Throws("bytes", () => new BitArray(new byte[int.MaxValue / BitsPerByte + 1 ])); } [Fact] diff --git a/src/System.Collections/tests/BitArray/BitArray_GetSetTests.cs b/src/System.Collections/tests/BitArray/BitArray_GetSetTests.cs index 1f07e801cfea..4f9b3b842090 100644 --- a/src/System.Collections/tests/BitArray/BitArray_GetSetTests.cs +++ b/src/System.Collections/tests/BitArray/BitArray_GetSetTests.cs @@ -43,22 +43,22 @@ public static void Get_Set(bool def, bool[] newValues) public static void Get_InvalidIndex_ThrowsArgumentOutOfRangeException() { BitArray bitArray = new BitArray(4); - Assert.Throws("index", () => bitArray.Get(-1)); - Assert.Throws("index", () => bitArray.Get(bitArray.Length)); + AssertExtensions.Throws("index", () => bitArray.Get(-1)); + AssertExtensions.Throws("index", () => bitArray.Get(bitArray.Length)); - Assert.Throws("index", () => bitArray[-1]); - Assert.Throws("index", () => bitArray[bitArray.Length]); + AssertExtensions.Throws("index", () => bitArray[-1]); + AssertExtensions.Throws("index", () => bitArray[bitArray.Length]); } [Fact] public static void Set_InvalidIndex_ThrowsArgumentOutOfRangeException() { BitArray bitArray = new BitArray(4); - Assert.Throws("index", () => bitArray.Set(-1, true)); - Assert.Throws("index", () => bitArray.Set(bitArray.Length, true)); + AssertExtensions.Throws("index", () => bitArray.Set(-1, true)); + AssertExtensions.Throws("index", () => bitArray.Set(bitArray.Length, true)); - Assert.Throws("index", () => bitArray[-1] = true); - Assert.Throws("index", () => bitArray[bitArray.Length] = true); + AssertExtensions.Throws("index", () => bitArray[-1] = true); + AssertExtensions.Throws("index", () => bitArray[bitArray.Length] = true); } [Theory] @@ -204,8 +204,8 @@ public static void Length_Set(int originalSize, int newSize) Assert.False(bitArray[i]); Assert.False(bitArray.Get(i)); } - Assert.Throws("index", () => bitArray[newSize]); - Assert.Throws("index", () => bitArray.Get(newSize)); + AssertExtensions.Throws("index", () => bitArray[newSize]); + AssertExtensions.Throws("index", () => bitArray.Get(newSize)); // Decrease then increase size bitArray.Length = 0; @@ -313,7 +313,7 @@ public static void CopyTo(BitArray bitArray, int length, int index, T[] expec public static void CopyTo_Type_Invalid() { ICollection bitArray = new BitArray(10); - Assert.Throws("array", () => bitArray.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => bitArray.CopyTo(null, 0)); Assert.Throws(() => bitArray.CopyTo(new long[10], 0)); Assert.Throws(() => bitArray.CopyTo(new int[10, 10], 0)); } @@ -337,7 +337,7 @@ public static void CopyTo_Size_Invalid(T def, int bits, int arraySize, int in { ICollection bitArray = new BitArray(bits); T[] array = (T[])Array.CreateInstance(typeof(T), arraySize); - Assert.Throws("index", () => bitArray.CopyTo(array, -1)); + AssertExtensions.Throws("index", () => bitArray.CopyTo(array, -1)); if (def is int) { AssertExtensions.Throws("destinationArray", string.Empty, () => bitArray.CopyTo(array, index)); diff --git a/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.cs b/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.cs index 17545035dc6c..4959c1744a49 100644 --- a/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.cs +++ b/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.cs @@ -159,7 +159,7 @@ public static void And_Invalid() Assert.Throws(null, () => bitArray1.And(bitArray2)); Assert.Throws(null, () => bitArray2.And(bitArray1)); - Assert.Throws("value", () => bitArray1.And(null)); + AssertExtensions.Throws("value", () => bitArray1.And(null)); } [Fact] @@ -172,7 +172,7 @@ public static void Or_Invalid() Assert.Throws(null, () => bitArray1.Or(bitArray2)); Assert.Throws(null, () => bitArray2.Or(bitArray1)); - Assert.Throws("value", () => bitArray1.Or(null)); + AssertExtensions.Throws("value", () => bitArray1.Or(null)); } [Fact] @@ -185,7 +185,7 @@ public static void Xor_Invalid() Assert.Throws(null, () => bitArray1.Xor(bitArray2)); Assert.Throws(null, () => bitArray2.Xor(bitArray1)); - Assert.Throws("value", () => bitArray1.Xor(null)); + AssertExtensions.Throws("value", () => bitArray1.Xor(null)); } } } diff --git a/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.netcoreapp.cs b/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.netcoreapp.cs index 471b26903ec3..d0fe600172c3 100644 --- a/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.netcoreapp.cs +++ b/src/System.Collections/tests/BitArray/BitArray_OperatorsTests.netcoreapp.cs @@ -85,7 +85,7 @@ public static void LeftShift_Iterator() public static void LeftShift_NegativeCount_ThrowsArgumentOutOfRangeException() { BitArray bitArray = new BitArray(1); - Assert.Throws("count", () => bitArray.LeftShift(-1)); + AssertExtensions.Throws("count", () => bitArray.LeftShift(-1)); } [Fact] @@ -135,7 +135,7 @@ public static void RightShift_Hidden(string label, BitArray bits) public static void RightShift_NegativeCount_ThrowsArgumentOutOfRangeException() { BitArray bitArray = new BitArray(1); - Assert.Throws("count", () => bitArray.RightShift(-1)); + AssertExtensions.Throws("count", () => bitArray.RightShift(-1)); } #endregion diff --git a/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs b/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs index 13d5f7aa56e0..26d57c622f24 100644 --- a/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs +++ b/src/System.Collections/tests/Generic/CollectionExtensionsTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -29,16 +29,16 @@ public void GetValueOrDefault_KeyDoesntExistInIDictionary_ReturnsDefaultValue() public void GetValueOrDefault_NullKeyIDictionary_ThrowsArgumentNullException() { IDictionary dictionary = new SortedDictionary() { { "key", "value" } }; - Assert.Throws("key", () => dictionary.GetValueOrDefault(null)); - Assert.Throws("key", () => dictionary.GetValueOrDefault(null, "anotherValue")); + AssertExtensions.Throws("key", () => dictionary.GetValueOrDefault(null)); + AssertExtensions.Throws("key", () => dictionary.GetValueOrDefault(null, "anotherValue")); } [Fact] public void GetValueOrDefault_NullIDictionary_ThrowsArgumentNullException() { IDictionary dictionary = null; - Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key")); - Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key", "value")); + AssertExtensions.Throws("dictionary", () => dictionary.GetValueOrDefault("key")); + AssertExtensions.Throws("dictionary", () => dictionary.GetValueOrDefault("key", "value")); } [Fact] @@ -61,16 +61,16 @@ public void GetValueOrDefault_KeyDoesntExistInIReadOnlyDictionary_ReturnsDefault public void GetValueOrDefault_NullKeyIReadOnlyDictionary_ThrowsArgumentNullException() { IReadOnlyDictionary dictionary = new SortedDictionary() { { "key", "value" } }; - Assert.Throws("key", () => dictionary.GetValueOrDefault(null)); - Assert.Throws("key", () => dictionary.GetValueOrDefault(null, "anotherValue")); + AssertExtensions.Throws("key", () => dictionary.GetValueOrDefault(null)); + AssertExtensions.Throws("key", () => dictionary.GetValueOrDefault(null, "anotherValue")); } [Fact] public void GetValueOrDefault_NullIReadOnlyDictionary_ThrowsArgumentNullException() { IReadOnlyDictionary dictionary = null; - Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key")); - Assert.Throws("dictionary", () => dictionary.GetValueOrDefault("key", "value")); + AssertExtensions.Throws("dictionary", () => dictionary.GetValueOrDefault("key")); + AssertExtensions.Throws("dictionary", () => dictionary.GetValueOrDefault("key", "value")); } [Fact] diff --git a/src/System.Collections/tests/Generic/Comparers/Comparer.Generic.Tests.cs b/src/System.Collections/tests/Generic/Comparers/Comparer.Generic.Tests.cs index a67f0253b0b3..1be2026968dd 100644 --- a/src/System.Collections/tests/Generic/Comparers/Comparer.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/Comparers/Comparer.Generic.Tests.cs @@ -129,7 +129,7 @@ public void Comparer_ComparerCreate() [Fact] public void Comparer_ComparerCreateWithNullComparisonThrows() { - Assert.Throws("comparison", () => Comparer.Create(comparison: null)); + AssertExtensions.Throws("comparison", () => Comparer.Create(comparison: null)); } } } diff --git a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs index 449c457480e5..21ebb8ed911e 100644 --- a/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs +++ b/src/System.Collections/tests/Generic/Dictionary/Dictionary.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -155,13 +155,13 @@ public class Dictionary_Tests [Fact] public void CopyConstructorExceptions() { - Assert.Throws("dictionary", () => new Dictionary((IDictionary)null)); - Assert.Throws("dictionary", () => new Dictionary((IDictionary)null, null)); - Assert.Throws("dictionary", () => new Dictionary((IDictionary)null, EqualityComparer.Default)); + AssertExtensions.Throws("dictionary", () => new Dictionary((IDictionary)null)); + AssertExtensions.Throws("dictionary", () => new Dictionary((IDictionary)null, null)); + AssertExtensions.Throws("dictionary", () => new Dictionary((IDictionary)null, EqualityComparer.Default)); - Assert.Throws("capacity", () => new Dictionary(new NegativeCountDictionary())); - Assert.Throws("capacity", () => new Dictionary(new NegativeCountDictionary(), null)); - Assert.Throws("capacity", () => new Dictionary(new NegativeCountDictionary(), EqualityComparer.Default)); + AssertExtensions.Throws("capacity", () => new Dictionary(new NegativeCountDictionary())); + AssertExtensions.Throws("capacity", () => new Dictionary(new NegativeCountDictionary(), null)); + AssertExtensions.Throws("capacity", () => new Dictionary(new NegativeCountDictionary(), EqualityComparer.Default)); } [Theory] diff --git a/src/System.Collections/tests/Generic/HashSet/HashSet.Generic.Tests.netcoreapp.cs b/src/System.Collections/tests/Generic/HashSet/HashSet.Generic.Tests.netcoreapp.cs index 075312531768..6d254360c181 100644 --- a/src/System.Collections/tests/Generic/HashSet/HashSet.Generic.Tests.netcoreapp.cs +++ b/src/System.Collections/tests/Generic/HashSet/HashSet.Generic.Tests.netcoreapp.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -33,8 +33,8 @@ public void HashSet_Generic_Constructor_int_AddUpToAndBeyondCapacity(int capacit [Fact] public void HashSet_Generic_Constructor_int_Negative_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new HashSet(-1)); - Assert.Throws("capacity", () => new HashSet(int.MinValue)); + AssertExtensions.Throws("capacity", () => new HashSet(-1)); + AssertExtensions.Throws("capacity", () => new HashSet(int.MinValue)); } [Theory] @@ -68,8 +68,8 @@ public void HashSet_Generic_Constructor_int_IEqualityComparer_AddUpToAndBeyondCa public void HashSet_Generic_Constructor_int_IEqualityComparer_Negative_ThrowsArgumentOutOfRangeException() { IEqualityComparer comparer = GetIEqualityComparer(); - Assert.Throws("capacity", () => new HashSet(-1, comparer)); - Assert.Throws("capacity", () => new HashSet(int.MinValue, comparer)); + AssertExtensions.Throws("capacity", () => new HashSet(-1, comparer)); + AssertExtensions.Throws("capacity", () => new HashSet(int.MinValue, comparer)); } #region TryGetValue diff --git a/src/System.Collections/tests/Generic/LinkedList/LinkedList.Generic.Tests.cs b/src/System.Collections/tests/Generic/LinkedList/LinkedList.Generic.Tests.cs index 954be34ea26e..63426632a26f 100644 --- a/src/System.Collections/tests/Generic/LinkedList/LinkedList.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/LinkedList/LinkedList.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -500,7 +500,7 @@ public void LinkedList_Generic_Constructor_IEnumerable(EnumerableType enumerable [Fact] public void LinkedList_Generic_Constructor_IEnumerable_Null_ThrowsArgumentNullException() { - Assert.Throws("collection", () => new LinkedList(null)); + AssertExtensions.Throws("collection", () => new LinkedList(null)); } #endregion diff --git a/src/System.Collections/tests/Generic/List/List.Generic.Tests.Remove.cs b/src/System.Collections/tests/Generic/List/List.Generic.Tests.Remove.cs index 53322f26acaf..88774209b779 100644 --- a/src/System.Collections/tests/Generic/List/List.Generic.Tests.Remove.cs +++ b/src/System.Collections/tests/Generic/List/List.Generic.Tests.Remove.cs @@ -53,7 +53,7 @@ public void RemoveAll_DefaultElements(int count) [Fact] public void RemoveAll_NullMatchPredicate() { - Assert.Throws("match", () => new List().RemoveAll(null)); + AssertExtensions.Throws("match", () => new List().RemoveAll(null)); } #endregion diff --git a/src/System.Collections/tests/Generic/Queue/Queue.Generic.Tests.cs b/src/System.Collections/tests/Generic/Queue/Queue.Generic.Tests.cs index ab31e9777fb4..7f0e96521444 100644 --- a/src/System.Collections/tests/Generic/Queue/Queue.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/Queue/Queue.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -69,7 +69,7 @@ public void Queue_Generic_Constructor_IEnumerable(EnumerableType enumerableType, [Fact] public void Queue_Generic_Constructor_IEnumerable_Null_ThrowsArgumentNullException() { - Assert.Throws("collection", () => new Queue(null)); + AssertExtensions.Throws("collection", () => new Queue(null)); } #endregion @@ -89,8 +89,8 @@ public void Queue_Generic_Constructor_int(int count) [Fact] public void Queue_Generic_Constructor_int_Negative_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new Queue(-1)); - Assert.Throws("capacity", () => new Queue(int.MinValue)); + AssertExtensions.Throws("capacity", () => new Queue(-1)); + AssertExtensions.Throws("capacity", () => new Queue(int.MinValue)); } #endregion diff --git a/src/System.Collections/tests/Generic/SortedList/SortedList.Generic.Tests.cs b/src/System.Collections/tests/Generic/SortedList/SortedList.Generic.Tests.cs index e2b4173cd9d0..c5ac8972859a 100644 --- a/src/System.Collections/tests/Generic/SortedList/SortedList.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/SortedList/SortedList.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -143,7 +143,7 @@ public void SortedList_Generic_Capacity_NegativeValue_ThrowsArgumentOutOfRangeEx { SortedList dictionary = (SortedList)GenericIDictionaryFactory(count); int capacityBefore = dictionary.Capacity; - Assert.Throws("value", () => dictionary.Capacity = -1); + AssertExtensions.Throws("value", () => dictionary.Capacity = -1); Assert.Equal(capacityBefore, dictionary.Capacity); } @@ -155,7 +155,7 @@ public void SortedList_Generic_Capacity_LessThanCount_ThrowsArgumentOutOfRangeEx for (int i = 0; i < count; i++) { AddToCollection(dictionary, 1); - Assert.Throws("value", () => dictionary.Capacity = i); + AssertExtensions.Throws("value", () => dictionary.Capacity = i); } } diff --git a/src/System.Collections/tests/Generic/SortedList/SortedList.Tests.cs b/src/System.Collections/tests/Generic/SortedList/SortedList.Tests.cs index b4dd0fea3726..41a2d8467654 100644 --- a/src/System.Collections/tests/Generic/SortedList/SortedList.Tests.cs +++ b/src/System.Collections/tests/Generic/SortedList/SortedList.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -48,7 +48,7 @@ public void IDictionary_NonGeneric_ItemSet_KeyOfWrongType(int count) if (!IsReadOnly) { IDictionary dictionary = new SortedList(); - Assert.Throws("key", () => dictionary[23] = CreateTValue(12345)); + AssertExtensions.Throws("key", () => dictionary[23] = CreateTValue(12345)); Assert.Empty(dictionary); } } diff --git a/src/System.Collections/tests/Generic/SortedSet/SortedSet.Generic.Tests.cs b/src/System.Collections/tests/Generic/SortedSet/SortedSet.Generic.Tests.cs index d20241323a1a..6bd9f181e212 100644 --- a/src/System.Collections/tests/Generic/SortedSet/SortedSet.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/SortedSet/SortedSet.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -238,7 +238,7 @@ public void SortedSet_Generic_RemoveWhere_NoElements(int setLength) public void SortedSet_Generic_RemoveWhere_NullPredicate_ThrowsArgumentNullException() { SortedSet set = (SortedSet)GenericISetFactory(); - Assert.Throws("match", () => set.RemoveWhere(null)); + AssertExtensions.Throws("match", () => set.RemoveWhere(null)); } #endregion diff --git a/src/System.Collections/tests/Generic/SortedSet/SortedSet.TreeSubSet.Tests.cs b/src/System.Collections/tests/Generic/SortedSet/SortedSet.TreeSubSet.Tests.cs index f8a231d1641c..bd1848d28737 100644 --- a/src/System.Collections/tests/Generic/SortedSet/SortedSet.TreeSubSet.Tests.cs +++ b/src/System.Collections/tests/Generic/SortedSet/SortedSet.TreeSubSet.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -38,7 +38,7 @@ public override void ICollection_Generic_Remove_DefaultValueContainedInCollectio { int seed = count * 21; ICollection collection = GenericICollectionFactory(count); - Assert.Throws("item", () => collection.Remove(default(string))); + AssertExtensions.Throws("item", () => collection.Remove(default(string))); } } @@ -47,7 +47,7 @@ public override void ICollection_Generic_Contains_DefaultValueOnCollectionContai if (DefaultValueAllowed && !IsReadOnly && !AddRemoveClear_ThrowsNotSupported) { ICollection collection = GenericICollectionFactory(count); - Assert.Throws("item", () => collection.Add(default(string))); + AssertExtensions.Throws("item", () => collection.Add(default(string))); } } } diff --git a/src/System.Collections/tests/Generic/Stack/Stack.Generic.Tests.cs b/src/System.Collections/tests/Generic/Stack/Stack.Generic.Tests.cs index 26e586528315..e1fcbff6c0f3 100644 --- a/src/System.Collections/tests/Generic/Stack/Stack.Generic.Tests.cs +++ b/src/System.Collections/tests/Generic/Stack/Stack.Generic.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -82,7 +82,7 @@ public void Stack_Generic_Constructor_IEnumerable(EnumerableType enumerableType, [Fact] public void Stack_Generic_Constructor_IEnumerable_Null_ThrowsArgumentNullException() { - Assert.Throws("collection", () => new Stack(null)); + AssertExtensions.Throws("collection", () => new Stack(null)); } #endregion @@ -100,8 +100,8 @@ public void Stack_Generic_Constructor_int(int count) [Fact] public void Stack_Generic_Constructor_int_Negative_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new Stack(-1)); - Assert.Throws("capacity", () => new Stack(int.MinValue)); + AssertExtensions.Throws("capacity", () => new Stack(-1)); + AssertExtensions.Throws("capacity", () => new Stack(int.MinValue)); } #endregion diff --git a/src/System.ComponentModel.Annotations/tests/CompareAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/CompareAttributeTests.cs index dc0a1637cf86..b8307d6bf352 100644 --- a/src/System.ComponentModel.Annotations/tests/CompareAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/CompareAttributeTests.cs @@ -28,7 +28,7 @@ public class CompareAttributeTests : ValidationAttributeTestBase [Fact] public static void Constructor_NullOtherProperty_ThrowsArgumentNullException() { - Assert.Throws("otherProperty", () => new CompareAttribute(null)); + AssertExtensions.Throws("otherProperty", () => new CompareAttribute(null)); } [Theory] diff --git a/src/System.ComponentModel.Annotations/tests/RegularExpressionAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/RegularExpressionAttributeTests.cs index fe4cd37ab53f..94544fcf176e 100644 --- a/src/System.ComponentModel.Annotations/tests/RegularExpressionAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/RegularExpressionAttributeTests.cs @@ -72,7 +72,7 @@ public static void Validate_InvalidPattern_ThrowsInvalidOperationException(strin public static void Validate_InvalidMatchTimeoutInMilliseconds_ThrowsArgumentOutOfRangeException(int timeout) { RegularExpressionAttribute attribute = new RegularExpressionAttribute("[^a]+\\.[^z]+") { MatchTimeoutInMilliseconds = 0 }; - Assert.Throws("matchTimeout", () => attribute.Validate("a", new ValidationContext(new object()))); + AssertExtensions.Throws("matchTimeout", () => attribute.Validate("a", new ValidationContext(new object()))); } [Fact] diff --git a/src/System.ComponentModel.Annotations/tests/Schema/ColumnAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/Schema/ColumnAttributeTests.cs index 9394200a3347..49bd1db0b50b 100644 --- a/src/System.ComponentModel.Annotations/tests/Schema/ColumnAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/Schema/ColumnAttributeTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.ComponentModel.DataAnnotations.Schema.Tests @@ -49,7 +50,7 @@ public static void Order_Set_ReturnsExpected(int value) public static void Order_Set_NegativeValue_ThrowsArgumentOutOfRangeException() { ColumnAttribute attribute = new ColumnAttribute(); - Assert.Throws("value", () => attribute.Order = -1); + AssertExtensions.Throws("value", () => attribute.Order = -1); } [Theory] diff --git a/src/System.ComponentModel.Annotations/tests/Schema/DatabaseGeneratedAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/Schema/DatabaseGeneratedAttributeTests.cs index ea73141059a4..8992115877a9 100644 --- a/src/System.ComponentModel.Annotations/tests/Schema/DatabaseGeneratedAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/Schema/DatabaseGeneratedAttributeTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.ComponentModel.DataAnnotations.Schema.Tests @@ -23,7 +24,7 @@ public static void Ctor_DatabaseGeneratedOption(DatabaseGeneratedOption database [InlineData((DatabaseGeneratedOption)10)] public static void Ctor_DatabaseGeneratedOption_UndefinedOption_ThrowsArgumentOutOfRangeException(DatabaseGeneratedOption databaseGeneratedOption) { - Assert.Throws("databaseGeneratedOption", () => new DatabaseGeneratedAttribute(databaseGeneratedOption)); + AssertExtensions.Throws("databaseGeneratedOption", () => new DatabaseGeneratedAttribute(databaseGeneratedOption)); } } } diff --git a/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj b/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj index a9e2d1db4e69..a06566c50679 100644 --- a/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj +++ b/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj @@ -40,6 +40,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.ComponentModel.Annotations/tests/ValidationAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/ValidationAttributeTests.cs index 81cc5e795a5d..8c0e7e641159 100644 --- a/src/System.ComponentModel.Annotations/tests/ValidationAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/ValidationAttributeTests.cs @@ -290,7 +290,7 @@ public static void TestThrowIfNullValidationContext() public static void Validate_NullValidationContext_ThrowsArgumentNullException() { ValidationAttributeOverrideBothIsValids attribute = new ValidationAttributeOverrideBothIsValids(); - Assert.Throws("validationContext", () => attribute.Validate("Any", validationContext: null)); + AssertExtensions.Throws("validationContext", () => attribute.Validate("Any", validationContext: null)); } // GetValidationResult_successful_if_One_Arg_IsValid_validates_successfully diff --git a/src/System.ComponentModel.Annotations/tests/ValidationResultTests.cs b/src/System.ComponentModel.Annotations/tests/ValidationResultTests.cs index c5e76ad00032..cb73462729f6 100644 --- a/src/System.ComponentModel.Annotations/tests/ValidationResultTests.cs +++ b/src/System.ComponentModel.Annotations/tests/ValidationResultTests.cs @@ -65,7 +65,7 @@ public void Ctor_ValidationResult_ReturnsClone() [Fact] public void Ctor_ValidationResult_NullValidationResult_ThrowsArgumentNullException() { - Assert.Throws("validationResult", () => new ValidationResultSubClass(null)); + AssertExtensions.Throws("validationResult", () => new ValidationResultSubClass(null)); } public class ValidationResultSubClass : ValidationResult diff --git a/src/System.ComponentModel.TypeConverter/tests/AttributeCollectionTests.cs b/src/System.ComponentModel.TypeConverter/tests/AttributeCollectionTests.cs index a7acf3211da4..408340a4fcd2 100644 --- a/src/System.ComponentModel.TypeConverter/tests/AttributeCollectionTests.cs +++ b/src/System.ComponentModel.TypeConverter/tests/AttributeCollectionTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -31,7 +32,7 @@ public void CollectionSyncProperties() [Fact] public void VerifyThrowsIfMultipleAttributesArePassedButOneNull() { - Assert.Throws("attributes", () => new AttributeCollection(new TestAttribute1(), null)); + AssertExtensions.Throws("attributes", () => new AttributeCollection(new TestAttribute1(), null)); } [InlineData(20)] diff --git a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj index bcd4d11b4448..0af21b39a619 100644 --- a/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj +++ b/src/System.ComponentModel.TypeConverter/tests/System.ComponentModel.TypeConverter.Tests.csproj @@ -22,6 +22,9 @@ + + Common\System\AssertExtensions.cs + Common\tests\System\PlatformDetection.cs diff --git a/src/System.Console/tests/ConsoleEncoding.cs b/src/System.Console/tests/ConsoleEncoding.cs index f507c63d5683..e47d2d21c988 100644 --- a/src/System.Console/tests/ConsoleEncoding.cs +++ b/src/System.Console/tests/ConsoleEncoding.cs @@ -116,7 +116,7 @@ public void InputEncoding_SetWithInInitialized_ResetsIn() [Fact] public void InputEncoding_SetNull_ThrowsArgumentNullException() { - Assert.Throws("value", () => Console.InputEncoding = null); + AssertExtensions.Throws("value", () => Console.InputEncoding = null); } [Fact] @@ -158,7 +158,7 @@ public void OutputEncoding_SetWithErrorAndOutputInitialized_ResetsErrorAndOutput [Fact] public void OutputEncoding_SetNull_ThrowsArgumentNullException() { - Assert.Throws("value", () => Console.OutputEncoding = null); + AssertExtensions.Throws("value", () => Console.OutputEncoding = null); } [Fact] diff --git a/src/System.Console/tests/ReadAndWrite.cs b/src/System.Console/tests/ReadAndWrite.cs index dcdbafd6f67a..9d19c8db64ed 100644 --- a/src/System.Console/tests/ReadAndWrite.cs +++ b/src/System.Console/tests/ReadAndWrite.cs @@ -385,18 +385,18 @@ public static void ReadAndReadLine() [Fact] public static void OpenStandardInput_NegativeBufferSize_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bufferSize", () => Console.OpenStandardInput(-1)); + AssertExtensions.Throws("bufferSize", () => Console.OpenStandardInput(-1)); } [Fact] public static void OpenStandardOutput_NegativeBufferSize_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bufferSize", () => Console.OpenStandardOutput(-1)); + AssertExtensions.Throws("bufferSize", () => Console.OpenStandardOutput(-1)); } [Fact] public static void OpenStandardError_NegativeBufferSize_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bufferSize", () => Console.OpenStandardError(-1)); + AssertExtensions.Throws("bufferSize", () => Console.OpenStandardError(-1)); } } diff --git a/src/System.Console/tests/System.Console.Tests.csproj b/src/System.Console/tests/System.Console.Tests.csproj index 4835ddd08922..c10c8f5b28c1 100644 --- a/src/System.Console/tests/System.Console.Tests.csproj +++ b/src/System.Console/tests/System.Console.Tests.csproj @@ -34,6 +34,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\InterceptStreamWriter.cs diff --git a/src/System.Console/tests/WindowAndCursorProps.cs b/src/System.Console/tests/WindowAndCursorProps.cs index 2952144f283a..401c94a39e55 100644 --- a/src/System.Console/tests/WindowAndCursorProps.cs +++ b/src/System.Console/tests/WindowAndCursorProps.cs @@ -42,8 +42,8 @@ public static void WindowWidth_WindowHeight_InvalidSize() } else { - Assert.Throws("width", () => Console.WindowWidth = 0); - Assert.Throws("height", () => Console.WindowHeight = 0); + AssertExtensions.Throws("width", () => Console.WindowWidth = 0); + AssertExtensions.Throws("height", () => Console.WindowHeight = 0); } } @@ -158,14 +158,14 @@ public static void Title_Set_Windows(int lengthOfTitle) [Fact] public static void Title_Set_Windows_Null_ThrowsArgumentNullException() { - Assert.Throws("value", () => Console.Title = null); + AssertExtensions.Throws("value", () => Console.Title = null); } [Fact] public static void Title_Set_Windows_GreaterThan24500Chars_ThrowsArgumentOutOfRangeException() { string newTitle = new string('a', 24501); - Assert.Throws("value", () => Console.Title = newTitle); + AssertExtensions.Throws("value", () => Console.Title = newTitle); } [Fact] @@ -191,7 +191,7 @@ public static void BeepWithFrequency() [InlineData(32768)] public void BeepWithFrequency_InvalidFrequency_ThrowsArgumentOutOfRangeException(int frequency) { - Assert.Throws("frequency", () => Console.Beep(frequency, 200)); + AssertExtensions.Throws("frequency", () => Console.Beep(frequency, 200)); } [Theory] @@ -200,7 +200,7 @@ public void BeepWithFrequency_InvalidFrequency_ThrowsArgumentOutOfRangeException [InlineData(-1)] public void BeepWithFrequency_InvalidDuration_ThrowsArgumentOutOfRangeException(int duration) { - Assert.Throws("duration", () => Console.Beep(800, duration)); + AssertExtensions.Throws("duration", () => Console.Beep(800, duration)); } [Fact] @@ -243,8 +243,8 @@ public static void SetCursorPosition() [InlineData(short.MaxValue + 1)] public void SetCursorPosition_InvalidPosition_ThrowsArgumentOutOfRangeException(int value) { - Assert.Throws("left", () => Console.SetCursorPosition(value, 100)); - Assert.Throws("top", () => Console.SetCursorPosition(100, value)); + AssertExtensions.Throws("left", () => Console.SetCursorPosition(value, 100)); + AssertExtensions.Throws("top", () => Console.SetCursorPosition(100, value)); } [Fact] @@ -294,7 +294,7 @@ public void CursorSize_SetGet_ReturnsExpected() [PlatformSpecific(TestPlatforms.Windows)] public void CursorSize_SetInvalidValue_ThrowsArgumentOutOfRangeException(int value) { - Assert.Throws("value", () => Console.CursorSize = value); + AssertExtensions.Throws("value", () => Console.CursorSize = value); } [Fact] @@ -311,10 +311,10 @@ public void SetWindowPosition_GetWindowPosition_ReturnsExpected() { if (!Console.IsInputRedirected && !Console.IsOutputRedirected) { - Assert.Throws("left", () => Console.SetWindowPosition(-1, Console.WindowTop)); - Assert.Throws("top", () => Console.SetWindowPosition(Console.WindowLeft, -1)); - Assert.Throws("left", () => Console.SetWindowPosition(Console.BufferWidth - Console.WindowWidth + 2, Console.WindowTop)); - Assert.Throws("top", () => Console.SetWindowPosition(Console.WindowHeight, Console.BufferHeight - Console.WindowHeight + 2)); + AssertExtensions.Throws("left", () => Console.SetWindowPosition(-1, Console.WindowTop)); + AssertExtensions.Throws("top", () => Console.SetWindowPosition(Console.WindowLeft, -1)); + AssertExtensions.Throws("left", () => Console.SetWindowPosition(Console.BufferWidth - Console.WindowWidth + 2, Console.WindowTop)); + AssertExtensions.Throws("top", () => Console.SetWindowPosition(Console.WindowHeight, Console.BufferHeight - Console.WindowHeight + 2)); int origTop = Console.WindowTop; int origLeft = Console.WindowLeft; @@ -345,12 +345,12 @@ public void SetWindowSize_GetWindowSize_ReturnsExpected() { if (PlatformDetection.IsNotWindowsNanoServer && !Console.IsInputRedirected && !Console.IsOutputRedirected) { - Assert.Throws("width", () => Console.SetWindowSize(-1, Console.WindowHeight)); - Assert.Throws("height", () => Console.SetWindowSize(Console.WindowHeight, -1)); - Assert.Throws("width", () => Console.SetWindowSize(short.MaxValue - Console.WindowLeft, Console.WindowHeight)); - Assert.Throws("height", () => Console.SetWindowSize(Console.WindowWidth, short.MaxValue - Console.WindowTop)); - Assert.Throws("width", () => Console.SetWindowSize(Console.LargestWindowWidth + 1, Console.WindowHeight)); - Assert.Throws("height", () => Console.SetWindowSize(Console.WindowWidth, Console.LargestWindowHeight + 1)); + AssertExtensions.Throws("width", () => Console.SetWindowSize(-1, Console.WindowHeight)); + AssertExtensions.Throws("height", () => Console.SetWindowSize(Console.WindowHeight, -1)); + AssertExtensions.Throws("width", () => Console.SetWindowSize(short.MaxValue - Console.WindowLeft, Console.WindowHeight)); + AssertExtensions.Throws("height", () => Console.SetWindowSize(Console.WindowWidth, short.MaxValue - Console.WindowTop)); + AssertExtensions.Throws("width", () => Console.SetWindowSize(Console.LargestWindowWidth + 1, Console.WindowHeight)); + AssertExtensions.Throws("height", () => Console.SetWindowSize(Console.WindowWidth, Console.LargestWindowHeight + 1)); int origWidth = Console.WindowWidth; int origHeight = Console.WindowHeight; @@ -381,18 +381,18 @@ public void MoveBufferArea_DefaultChar() { if (!Console.IsInputRedirected && !Console.IsOutputRedirected) { - Assert.Throws("sourceLeft", () => Console.MoveBufferArea(-1, 0, 0, 0, 0, 0)); - Assert.Throws("sourceTop", () => Console.MoveBufferArea(0, -1, 0, 0, 0, 0)); - Assert.Throws("sourceWidth", () => Console.MoveBufferArea(0, 0, -1, 0, 0, 0)); - Assert.Throws("sourceHeight", () => Console.MoveBufferArea(0, 0, 0, -1, 0, 0)); - Assert.Throws("targetLeft", () => Console.MoveBufferArea(0, 0, 0, 0, -1, 0)); - Assert.Throws("targetTop", () => Console.MoveBufferArea(0, 0, 0, 0, 0, -1)); - Assert.Throws("sourceLeft", () => Console.MoveBufferArea(Console.BufferWidth + 1, 0, 0, 0, 0, 0)); - Assert.Throws("targetLeft", () => Console.MoveBufferArea(0, 0, 0, 0, Console.BufferWidth + 1, 0)); - Assert.Throws("sourceTop", () => Console.MoveBufferArea(0, Console.BufferHeight + 1, 0, 0, 0, 0)); - Assert.Throws("targetTop", () => Console.MoveBufferArea(0, 0, 0, 0, 0, Console.BufferHeight + 1)); - Assert.Throws("sourceHeight", () => Console.MoveBufferArea(0, 1, 0, Console.BufferHeight, 0, 0)); - Assert.Throws("sourceWidth", () => Console.MoveBufferArea(1, 0, Console.BufferWidth, 0, 0, 0)); + AssertExtensions.Throws("sourceLeft", () => Console.MoveBufferArea(-1, 0, 0, 0, 0, 0)); + AssertExtensions.Throws("sourceTop", () => Console.MoveBufferArea(0, -1, 0, 0, 0, 0)); + AssertExtensions.Throws("sourceWidth", () => Console.MoveBufferArea(0, 0, -1, 0, 0, 0)); + AssertExtensions.Throws("sourceHeight", () => Console.MoveBufferArea(0, 0, 0, -1, 0, 0)); + AssertExtensions.Throws("targetLeft", () => Console.MoveBufferArea(0, 0, 0, 0, -1, 0)); + AssertExtensions.Throws("targetTop", () => Console.MoveBufferArea(0, 0, 0, 0, 0, -1)); + AssertExtensions.Throws("sourceLeft", () => Console.MoveBufferArea(Console.BufferWidth + 1, 0, 0, 0, 0, 0)); + AssertExtensions.Throws("targetLeft", () => Console.MoveBufferArea(0, 0, 0, 0, Console.BufferWidth + 1, 0)); + AssertExtensions.Throws("sourceTop", () => Console.MoveBufferArea(0, Console.BufferHeight + 1, 0, 0, 0, 0)); + AssertExtensions.Throws("targetTop", () => Console.MoveBufferArea(0, 0, 0, 0, 0, Console.BufferHeight + 1)); + AssertExtensions.Throws("sourceHeight", () => Console.MoveBufferArea(0, 1, 0, Console.BufferHeight, 0, 0)); + AssertExtensions.Throws("sourceWidth", () => Console.MoveBufferArea(1, 0, Console.BufferWidth, 0, 0, 0)); // Nothing to verify; just run the code. Console.MoveBufferArea(0, 0, 1, 1, 2, 2); @@ -429,8 +429,8 @@ public void MoveBufferArea() [PlatformSpecific(TestPlatforms.Windows)] public void MoveBufferArea_InvalidColor_ThrowsException(ConsoleColor color) { - Assert.Throws("sourceForeColor", () => Console.MoveBufferArea(0, 0, 0, 0, 0, 0, 'a', color, ConsoleColor.Black)); - Assert.Throws("sourceBackColor", () => Console.MoveBufferArea(0, 0, 0, 0, 0, 0, 'a', ConsoleColor.Black, color)); + AssertExtensions.Throws("sourceForeColor", () => Console.MoveBufferArea(0, 0, 0, 0, 0, 0, 'a', color, ConsoleColor.Black)); + AssertExtensions.Throws("sourceBackColor", () => Console.MoveBufferArea(0, 0, 0, 0, 0, 0, 'a', ConsoleColor.Black, color)); } [Fact] diff --git a/src/System.Data.Common/tests/System.Data.Common.Tests.csproj b/src/System.Data.Common/tests/System.Data.Common.Tests.csproj index 9c45ad636de7..1194fcd12666 100644 --- a/src/System.Data.Common/tests/System.Data.Common.Tests.csproj +++ b/src/System.Data.Common/tests/System.Data.Common.Tests.csproj @@ -101,6 +101,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Data.Common/tests/System/Data/Common/DataColumnMappingCollectionTest.cs b/src/System.Data.Common/tests/System/Data/Common/DataColumnMappingCollectionTest.cs index 1a43c6c30a1e..96f65983b259 100644 --- a/src/System.Data.Common/tests/System/Data/Common/DataColumnMappingCollectionTest.cs +++ b/src/System.Data.Common/tests/System/Data/Common/DataColumnMappingCollectionTest.cs @@ -25,6 +25,7 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. using Xunit; +using System; using System.Data.Common; namespace System.Data.Tests.Common @@ -432,7 +433,7 @@ public void Insert_Int_DataColumnMapping_InvalidArguments() [Fact] public void GetDataColumn_DataColumnMappingCollection_String_Type_DataTable_MissingMappingAction_MissingSchemaAction_InvalidArguments() { - Assert.Throws("sourceColumn", () => DataColumnMappingCollection.GetDataColumn((DataColumnMappingCollection)null, null, typeof(string), new DataTable(), new MissingMappingAction(), new MissingSchemaAction())); + AssertExtensions.Throws("sourceColumn", () => DataColumnMappingCollection.GetDataColumn((DataColumnMappingCollection)null, null, typeof(string), new DataTable(), new MissingMappingAction(), new MissingSchemaAction())); } [Fact] @@ -450,7 +451,7 @@ public void GetDataColumn_DataColumnMappingCollection_String_Type_DataTable_Miss [Fact] public void GetDataColumn_DataColumnMappingCollection_String_Type_DataTable_MissingMappingAction_MissingSchemaAction_MissingMappingActionNotFoundThrowsException() { - Assert.Throws("MissingMappingAction", () => DataColumnMappingCollection.GetDataColumn((DataColumnMappingCollection)null, "not null", typeof(string), new DataTable(), new MissingMappingAction(), new MissingSchemaAction())); + AssertExtensions.Throws("MissingMappingAction", () => DataColumnMappingCollection.GetDataColumn((DataColumnMappingCollection)null, "not null", typeof(string), new DataTable(), new MissingMappingAction(), new MissingSchemaAction())); } } -} \ No newline at end of file +} diff --git a/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.RetrieveStatistics.cs b/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.RetrieveStatistics.cs index 37ed7e2a89f5..feff63b88e2b 100644 --- a/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.RetrieveStatistics.cs +++ b/src/System.Data.SqlClient/tests/FunctionalTests/SqlConnectionTest.RetrieveStatistics.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -138,7 +138,7 @@ public void RetrieveStatistics_Add_ExistingKey_Throws() public void RetrieveStatistics_Add_NullKey_Throws() { IDictionary d = new SqlConnection().RetrieveStatistics(); - Assert.Throws("key", () => d.Add(null, 100L)); + AssertExtensions.Throws("key", () => d.Add(null, 100L)); } [Theory] @@ -169,7 +169,7 @@ public void RetrieveStatistics_Setter_ExistingKey_Success() public void RetrieveStatistics_Setter_NullKey_Throws() { IDictionary d = new SqlConnection().RetrieveStatistics(); - Assert.Throws("key", () => d[null] = 100L); + AssertExtensions.Throws("key", () => d[null] = 100L); } [Fact] @@ -237,14 +237,14 @@ public void RetrieveStatistics_Remove_NonExistentKey_Success() public void RetrieveStatistics_Remove_NullKey_Throws() { IDictionary d = new SqlConnection().RetrieveStatistics(); - Assert.Throws("key", () => d.Remove(null)); + AssertExtensions.Throws("key", () => d.Remove(null)); } [Fact] public void RetrieveStatistics_Contains_NullKey_Throws() { IDictionary d = new SqlConnection().RetrieveStatistics(); - Assert.Throws("key", () => d.Contains(null)); + AssertExtensions.Throws("key", () => d.Contains(null)); } [Fact] @@ -268,9 +268,9 @@ public void RetrieveStatistics_CopyTo_Throws() { IDictionary d = new SqlConnection().RetrieveStatistics(); - Assert.Throws("array", () => d.CopyTo(null, 0)); - Assert.Throws("array", () => d.CopyTo(null, -1)); - Assert.Throws("arrayIndex", () => d.CopyTo(new DictionaryEntry[20], -1)); + AssertExtensions.Throws("array", () => d.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => d.CopyTo(null, -1)); + AssertExtensions.Throws("arrayIndex", () => d.CopyTo(new DictionaryEntry[20], -1)); Assert.Throws(null, () => d.CopyTo(new DictionaryEntry[20], 18)); Assert.Throws(null, () => d.CopyTo(new DictionaryEntry[20], 1000)); Assert.Throws(null, () => d.CopyTo(new DictionaryEntry[4, 3], 0)); @@ -433,9 +433,9 @@ public void RetrieveStatistics_Keys_CopyTo_Throws() IDictionary d = new SqlConnection().RetrieveStatistics(); ICollection c = d.Keys; - Assert.Throws("array", () => c.CopyTo(null, 0)); - Assert.Throws("array", () => c.CopyTo(null, -1)); - Assert.Throws("arrayIndex", () => c.CopyTo(new string[20], -1)); + AssertExtensions.Throws("array", () => c.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => c.CopyTo(null, -1)); + AssertExtensions.Throws("arrayIndex", () => c.CopyTo(new string[20], -1)); Assert.Throws(null, () => c.CopyTo(new string[20], 18)); Assert.Throws(null, () => c.CopyTo(new string[20], 1000)); Assert.Throws(null, () => c.CopyTo(new string[4, 3], 0)); @@ -543,9 +543,9 @@ public void RetrieveStatistics_Values_CopyTo_Throws() IDictionary d = new SqlConnection().RetrieveStatistics(); ICollection c = d.Values; - Assert.Throws("array", () => c.CopyTo(null, 0)); - Assert.Throws("array", () => c.CopyTo(null, -1)); - Assert.Throws("arrayIndex", () => c.CopyTo(new long[20], -1)); + AssertExtensions.Throws("array", () => c.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => c.CopyTo(null, -1)); + AssertExtensions.Throws("arrayIndex", () => c.CopyTo(new long[20], -1)); Assert.Throws(null, () => c.CopyTo(new long[20], 18)); Assert.Throws(null, () => c.CopyTo(new long[20], 1000)); Assert.Throws(null, () => c.CopyTo(new long[4, 3], 0)); diff --git a/src/System.Data.SqlClient/tests/FunctionalTests/SqlErrorCollectionTest.cs b/src/System.Data.SqlClient/tests/FunctionalTests/SqlErrorCollectionTest.cs index 790d386d6950..0cfc2ed0ec12 100644 --- a/src/System.Data.SqlClient/tests/FunctionalTests/SqlErrorCollectionTest.cs +++ b/src/System.Data.SqlClient/tests/FunctionalTests/SqlErrorCollectionTest.cs @@ -1,7 +1,7 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. - +using System; using System.Collections; using Xunit; @@ -39,8 +39,8 @@ public void Indexer_Throws() { SqlErrorCollection c = CreateCollection(); - Assert.Throws("index", () => c[-1]); - Assert.Throws("index", () => c[c.Count]); + AssertExtensions.Throws("index", () => c[-1]); + AssertExtensions.Throws("index", () => c[c.Count]); } [Fact] diff --git a/src/System.Data.SqlClient/tests/FunctionalTests/System.Data.SqlClient.Tests.csproj b/src/System.Data.SqlClient/tests/FunctionalTests/System.Data.SqlClient.Tests.csproj index bf8544e12272..f3bfb583b360 100644 --- a/src/System.Data.SqlClient/tests/FunctionalTests/System.Data.SqlClient.Tests.csproj +++ b/src/System.Data.SqlClient/tests/FunctionalTests/System.Data.SqlClient.Tests.csproj @@ -19,6 +19,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\RemoteExecutorTestBase.cs diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index b1ed787fd026..ede2835f71da 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; @@ -779,7 +780,7 @@ public void TestGetProcesses() [Fact] public void GetProcesseses_NullMachineName_ThrowsArgumentNullException() { - Assert.Throws("machineName", () => Process.GetProcesses(null)); + AssertExtensions.Throws("machineName", () => Process.GetProcesses(null)); } [Fact] @@ -852,7 +853,7 @@ public void GetProcessesByName_NoSuchProcess_ReturnsEmpty() public void GetProcessesByName_NullMachineName_ThrowsArgumentNullException() { Process currentProcess = Process.GetCurrentProcess(); - Assert.Throws("machineName", () => Process.GetProcessesByName(currentProcess.ProcessName, null)); + AssertExtensions.Throws("machineName", () => Process.GetProcessesByName(currentProcess.ProcessName, null)); } [Fact] @@ -1040,7 +1041,7 @@ public void TestStartOnWindowsWithBadFileFormat() [Fact] public void Start_NullStartInfo_ThrowsArgumentNullExceptionException() { - Assert.Throws("startInfo", () => Process.Start((ProcessStartInfo)null)); + AssertExtensions.Throws("startInfo", () => Process.Start((ProcessStartInfo)null)); } [Fact] diff --git a/src/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj b/src/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj index 8846a38e66b0..ee3e539e3fb6 100644 --- a/src/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj +++ b/src/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj @@ -12,6 +12,9 @@ + + Common\System\AssertExtensions.cs + Common\tests\System\PlatformDetection.cs diff --git a/src/System.Diagnostics.TraceSource/tests/CorrelationManagerTests.cs b/src/System.Diagnostics.TraceSource/tests/CorrelationManagerTests.cs index 2dcdc3718543..e43f018817a8 100644 --- a/src/System.Diagnostics.TraceSource/tests/CorrelationManagerTests.cs +++ b/src/System.Diagnostics.TraceSource/tests/CorrelationManagerTests.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Xunit; +using System; using System.Collections; using System.Diagnostics.Tracing; using System.Linq; @@ -34,7 +35,7 @@ public void CorrelationManager_CheckStack() [Fact] public void CorrelationManager_NullOperationId() { - Assert.Throws("operationId", () => Trace.CorrelationManager.StartLogicalOperation(null)); + AssertExtensions.Throws("operationId", () => Trace.CorrelationManager.StartLogicalOperation(null)); } [Fact] @@ -133,4 +134,4 @@ private static void ValidateStack(Stack input, params object[] expectedContents) } } } -} \ No newline at end of file +} diff --git a/src/System.Diagnostics.TraceSource/tests/System.Diagnostics.TraceSource.Tests.csproj b/src/System.Diagnostics.TraceSource/tests/System.Diagnostics.TraceSource.Tests.csproj index 80cdcf4c2321..e7197d9e270b 100644 --- a/src/System.Diagnostics.TraceSource/tests/System.Diagnostics.TraceSource.Tests.csproj +++ b/src/System.Diagnostics.TraceSource/tests/System.Diagnostics.TraceSource.Tests.csproj @@ -31,6 +31,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\FileCleanupTestBase.cs diff --git a/src/System.Diagnostics.TraceSource/tests/TraceSourceClassTests.cs b/src/System.Diagnostics.TraceSource/tests/TraceSourceClassTests.cs index 35802b0c019d..20737dd6f4dd 100644 --- a/src/System.Diagnostics.TraceSource/tests/TraceSourceClassTests.cs +++ b/src/System.Diagnostics.TraceSource/tests/TraceSourceClassTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Diagnostics.TraceSourceTests @@ -124,8 +125,8 @@ public void SwitchLevelTest(SourceLevels sourceLevel, TraceEventType messageLeve [Fact] public void NullSourceName() { - Assert.Throws("name", () => new TraceSource(null)); - Assert.Throws("name", () => new TraceSource(null, SourceLevels.All)); + AssertExtensions.Throws("name", () => new TraceSource(null)); + AssertExtensions.Throws("name", () => new TraceSource(null, SourceLevels.All)); } [Fact] diff --git a/src/System.Dynamic.Runtime/tests/CallInfoTests.cs b/src/System.Dynamic.Runtime/tests/CallInfoTests.cs index 9e4de3843054..9f6aaed45eff 100644 --- a/src/System.Dynamic.Runtime/tests/CallInfoTests.cs +++ b/src/System.Dynamic.Runtime/tests/CallInfoTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -12,8 +13,8 @@ public class CallInfoTests [Fact] public void NullNames() { - Assert.Throws("argNames", () => new CallInfo(0, default(string[]))); - Assert.Throws("argNames", () => new CallInfo(0, default(IEnumerable))); + AssertExtensions.Throws("argNames", () => new CallInfo(0, default(string[]))); + AssertExtensions.Throws("argNames", () => new CallInfo(0, default(IEnumerable))); } [Fact] @@ -25,7 +26,7 @@ public void ArgCountTooLow() [Fact] public void NullName() { - Assert.Throws("argNames[1]", () => new CallInfo(3, "a", null, "c")); + AssertExtensions.Throws("argNames[1]", () => new CallInfo(3, "a", null, "c")); } [Fact] diff --git a/src/System.Dynamic.Runtime/tests/System.Dynamic.Runtime.Tests.csproj b/src/System.Dynamic.Runtime/tests/System.Dynamic.Runtime.Tests.csproj index 98021630c1f3..51a3a5b0c009 100644 --- a/src/System.Dynamic.Runtime/tests/System.Dynamic.Runtime.Tests.csproj +++ b/src/System.Dynamic.Runtime/tests/System.Dynamic.Runtime.Tests.csproj @@ -156,6 +156,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Globalization.Calendars/tests/CalendarHelpers.cs b/src/System.Globalization.Calendars/tests/CalendarHelpers.cs index 2eb43102eb89..496228488e40 100644 --- a/src/System.Globalization.Calendars/tests/CalendarHelpers.cs +++ b/src/System.Globalization.Calendars/tests/CalendarHelpers.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -254,8 +254,8 @@ public static void AddMonths_Invalid(Calendar calendar) Assert.ThrowsAny(() => calendar.AddMonths(calendar.MaxSupportedDateTime, 1)); Assert.ThrowsAny(() => calendar.AddMonths(calendar.MinSupportedDateTime, -1)); // JapaneseCalendar throws ArgumentException - Assert.Throws("months", () => calendar.AddMonths(DateTime.Now, -120001)); - Assert.Throws("months", () => calendar.AddMonths(DateTime.Now, 120001)); + AssertExtensions.Throws("months", () => calendar.AddMonths(DateTime.Now, -120001)); + AssertExtensions.Throws("months", () => calendar.AddMonths(DateTime.Now, 120001)); } [Theory] @@ -309,12 +309,12 @@ public static void AddMilliseconds_Invalid(Calendar calendar) public static void GetWeekOfYear_Invalid(Calendar calendar) { // Rule is outside supported range - Assert.Throws("rule", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay - 1, DayOfWeek.Saturday)); - Assert.Throws("rule", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstFourDayWeek + 1, DayOfWeek.Saturday)); + AssertExtensions.Throws("rule", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay - 1, DayOfWeek.Saturday)); + AssertExtensions.Throws("rule", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstFourDayWeek + 1, DayOfWeek.Saturday)); // FirstDayOfWeek is outside supported range - Assert.Throws("firstDayOfWeek", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday - 1)); - Assert.Throws("firstDayOfWeek", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay, DayOfWeek.Saturday + 1)); + AssertExtensions.Throws("firstDayOfWeek", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday - 1)); + AssertExtensions.Throws("firstDayOfWeek", () => calendar.GetWeekOfYear(calendar.MaxSupportedDateTime, CalendarWeekRule.FirstDay, DayOfWeek.Saturday + 1)); } [Theory] @@ -386,12 +386,12 @@ public static void ToDateTime_Invalid(Calendar calendar) [MemberData(nameof(Calendars_TestData))] public static void ToFourDigitYear_Invalid(Calendar calendar) { - Assert.Throws("year", () => calendar.ToFourDigitYear(-1)); - Assert.Throws("year", () => calendar.ToFourDigitYear(MaxCalendarYearInEra(calendar, MaxEra(calendar)) + 1)); + AssertExtensions.Throws("year", () => calendar.ToFourDigitYear(-1)); + AssertExtensions.Throws("year", () => calendar.ToFourDigitYear(MaxCalendarYearInEra(calendar, MaxEra(calendar)) + 1)); if (!(calendar is JapaneseLunisolarCalendar)) { - Assert.Throws("year", () => calendar.ToFourDigitYear(MinCalendarYearInEra(calendar, MinEra(calendar)) - 2)); + AssertExtensions.Throws("year", () => calendar.ToFourDigitYear(MinCalendarYearInEra(calendar, MinEra(calendar)) - 2)); } } @@ -423,28 +423,28 @@ public static void GetEra_Invalid(Calendar calendar, DateTime dt) [MemberData(nameof(DateTime_TestData))] public static void GetYear_Invalid(Calendar calendar, DateTime dt) { - Assert.Throws("time", () => calendar.GetYear(dt)); + AssertExtensions.Throws("time", () => calendar.GetYear(dt)); } [Theory] [MemberData(nameof(DateTime_TestData))] public static void GetMonth_Invalid(Calendar calendar, DateTime dt) { - Assert.Throws("time", () => calendar.GetMonth(dt)); + AssertExtensions.Throws("time", () => calendar.GetMonth(dt)); } [Theory] [MemberData(nameof(DateTime_TestData))] public static void GetDayOfYear_Invalid(Calendar calendar, DateTime dt) { - Assert.Throws("time", () => calendar.GetDayOfYear(dt)); + AssertExtensions.Throws("time", () => calendar.GetDayOfYear(dt)); } [Theory] [MemberData(nameof(DateTime_TestData))] public static void GetDayOfMonth_Invalid(Calendar calendar, DateTime dt) { - Assert.Throws("time", () => calendar.GetDayOfMonth(dt)); + AssertExtensions.Throws("time", () => calendar.GetDayOfMonth(dt)); } [Theory] @@ -457,7 +457,7 @@ public static void GetDayOfWeek_Invalid(Calendar calendar, DateTime dt) } else { - Assert.Throws("time", () => calendar.GetDayOfWeek(dt)); + AssertExtensions.Throws("time", () => calendar.GetDayOfWeek(dt)); } } } diff --git a/src/System.Globalization.Calendars/tests/GregorianCalendar/GregorianCalendarCtor.cs b/src/System.Globalization.Calendars/tests/GregorianCalendar/GregorianCalendarCtor.cs index 59e2aae7a90b..8e64bb2e0286 100644 --- a/src/System.Globalization.Calendars/tests/GregorianCalendar/GregorianCalendarCtor.cs +++ b/src/System.Globalization.Calendars/tests/GregorianCalendar/GregorianCalendarCtor.cs @@ -41,7 +41,7 @@ public void Ctor_GregorianCalendarType(GregorianCalendarTypes type) [InlineData(GregorianCalendarTypes.TransliteratedFrench + 1)] public void Ctor_GregorianCalendarTypes_InvalidType_ThrowsArgumentOutOfRangeException(GregorianCalendarTypes type) { - Assert.Throws("type", () => new GregorianCalendar(type)); + AssertExtensions.Throws("type", () => new GregorianCalendar(type)); } [Theory] @@ -59,7 +59,7 @@ public void CalendarType_Set(GregorianCalendarTypes type) public void CalendarType_Set_InvalidType_ThrowsArgumentOutOfRangeException(GregorianCalendarTypes type) { GregorianCalendar calendar = new GregorianCalendar(); - Assert.Throws("m_type", () => calendar.CalendarType = type); + AssertExtensions.Throws("m_type", () => calendar.CalendarType = type); } } } diff --git a/src/System.Globalization.Calendars/tests/KoreanCalendar/KoreanCalendarToFourDigitYear.cs b/src/System.Globalization.Calendars/tests/KoreanCalendar/KoreanCalendarToFourDigitYear.cs index 55e4b2a16019..d67ed8ce1917 100644 --- a/src/System.Globalization.Calendars/tests/KoreanCalendar/KoreanCalendarToFourDigitYear.cs +++ b/src/System.Globalization.Calendars/tests/KoreanCalendar/KoreanCalendarToFourDigitYear.cs @@ -40,7 +40,7 @@ public void ToFourDigitYear(int year) [Fact] public void ToFourDigitYear_InvalidYear_ThrowsArgumentOutOfRangeException() { - Assert.Throws("year", () => new KoreanCalendar().ToFourDigitYear(100)); + AssertExtensions.Throws("year", () => new KoreanCalendar().ToFourDigitYear(100)); } } } diff --git a/src/System.Globalization.Calendars/tests/System.Globalization.Calendars.Tests.csproj b/src/System.Globalization.Calendars/tests/System.Globalization.Calendars.Tests.csproj index f8bc13f9b88f..fe4b0756436b 100644 --- a/src/System.Globalization.Calendars/tests/System.Globalization.Calendars.Tests.csproj +++ b/src/System.Globalization.Calendars/tests/System.Globalization.Calendars.Tests.csproj @@ -109,6 +109,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Globalization.Extensions/tests/GetStringComparerTests.cs b/src/System.Globalization.Extensions/tests/GetStringComparerTests.cs index e50f8e711278..c326155e6075 100644 --- a/src/System.Globalization.Extensions/tests/GetStringComparerTests.cs +++ b/src/System.Globalization.Extensions/tests/GetStringComparerTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Runtime.InteropServices; using Xunit; @@ -14,11 +15,11 @@ public class GetStringComparerTests [Fact] public void GetStringComparer_Invalid() { - Assert.Throws("compareInfo", () => ((CompareInfo)null).GetStringComparer(CompareOptions.None)); + AssertExtensions.Throws("compareInfo", () => ((CompareInfo)null).GetStringComparer(CompareOptions.None)); - Assert.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer((CompareOptions)0xFFFF)); - Assert.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.Ordinal | CompareOptions.IgnoreCase)); - Assert.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreCase)); + AssertExtensions.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer((CompareOptions)0xFFFF)); + AssertExtensions.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.Ordinal | CompareOptions.IgnoreCase)); + AssertExtensions.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreCase)); } [Theory] @@ -51,7 +52,7 @@ public static void Compare(string x, string y, string cultureName, CompareOption [Fact] public void GetHashCode_Null_ThrowsArgumentNullException() { - Assert.Throws("obj", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.None).GetHashCode(null)); + AssertExtensions.Throws("obj", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.None).GetHashCode(null)); } [Theory] diff --git a/src/System.Globalization.Extensions/tests/IdnMapping/IdnMappingUseStd3AsciiRulesTests.cs b/src/System.Globalization.Extensions/tests/IdnMapping/IdnMappingUseStd3AsciiRulesTests.cs index 7e1736c72d0a..325e82407622 100644 --- a/src/System.Globalization.Extensions/tests/IdnMapping/IdnMappingUseStd3AsciiRulesTests.cs +++ b/src/System.Globalization.Extensions/tests/IdnMapping/IdnMappingUseStd3AsciiRulesTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Runtime.InteropServices; using Xunit; @@ -54,7 +55,7 @@ public void UseStd3AsciiRules_ChangesGetAsciiBehavior(string unicode, bool conta if (containsInvalidHyphen && !s_isWindows) { // ICU always fails on leading/trailing hyphens regardless of the Std3 rules option. - Assert.Throws("unicode", () => idnStd3False.GetAscii(unicode)); + AssertExtensions.Throws("unicode", () => idnStd3False.GetAscii(unicode)); } else { diff --git a/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs b/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs index ed9f72904abb..451d5323db91 100644 --- a/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs +++ b/src/System.Globalization.Extensions/tests/Normalization/StringNormalizationTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Text; using Xunit; @@ -27,7 +28,6 @@ public void IsNormalized(string value, NormalizationForm normalizationForm, bool public void IsNormalized_Invalid() { Assert.Throws(() => "\uFB01".IsNormalized((NormalizationForm)10)); - Assert.Throws("strInput", () => "\uFFFE".IsNormalized()); // Invalid codepoint Assert.Throws("strInput", () => "\uD800\uD800".IsNormalized()); // Invalid surrogate pair } diff --git a/src/System.Globalization.Extensions/tests/System.Globalization.Extensions.Tests.csproj b/src/System.Globalization.Extensions/tests/System.Globalization.Extensions.Tests.csproj index 32bc41d202da..7d2943da54ff 100644 --- a/src/System.Globalization.Extensions/tests/System.Globalization.Extensions.Tests.csproj +++ b/src/System.Globalization.Extensions/tests/System.Globalization.Extensions.Tests.csproj @@ -22,6 +22,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs b/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs index 7c688cb4efa6..a4a04b501328 100644 --- a/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs +++ b/src/System.Globalization/tests/CharUnicodeInfo/CharUnicodeInfoTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -59,10 +59,10 @@ public void GetUnicodeCategory_String_InvalidSurrogatePairs() [Fact] public void GetUnicodeCategory_Invalid() { - Assert.Throws("s", () => CharUnicodeInfo.GetUnicodeCategory(null, 0)); - Assert.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("abc", -1)); - Assert.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("abc", 3)); - Assert.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("", 0)); + AssertExtensions.Throws("s", () => CharUnicodeInfo.GetUnicodeCategory(null, 0)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("abc", -1)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("abc", 3)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetUnicodeCategory("", 0)); } [Fact] @@ -107,10 +107,10 @@ public void GetNumericValue(string s, double[] expected) [Fact] public void GetNumericValue_Invalid() { - Assert.Throws("s", () => CharUnicodeInfo.GetNumericValue(null, 0)); - Assert.Throws("index", () => CharUnicodeInfo.GetNumericValue("abc", -1)); - Assert.Throws("index", () => CharUnicodeInfo.GetNumericValue("abc", 3)); - Assert.Throws("index", () => CharUnicodeInfo.GetNumericValue("", 0)); + AssertExtensions.Throws("s", () => CharUnicodeInfo.GetNumericValue(null, 0)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetNumericValue("abc", -1)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetNumericValue("abc", 3)); + AssertExtensions.Throws("index", () => CharUnicodeInfo.GetNumericValue("", 0)); } private static string ErrorMessage(char ch, object expected, object actual) diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs index 9f23c5180f5e..ce4a85f6a4cc 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -348,65 +348,65 @@ public void Compare(CompareInfo compareInfo, string string1, int offset1, int le public void Compare_Invalid() { // Compare options are invalid - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.Compare("Tests", 0, 2, "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); // Offset1 < 0 - Assert.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, "Test", 0)); - Assert.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, "Test", 0, CompareOptions.None)); - Assert.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, 2, "Test", 0, 2)); - Assert.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, 2, "Test", 0, 2, CompareOptions.None)); + AssertExtensions.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, "Test", 0)); + AssertExtensions.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, "Test", 0, CompareOptions.None)); + AssertExtensions.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, 2, "Test", 0, 2)); + AssertExtensions.Throws("offset1", () => s_invariantCompare.Compare("Test", -1, 2, "Test", 0, 2, CompareOptions.None)); // Offset1 > string1.Length - Assert.Throws("length1", () => s_invariantCompare.Compare("Test", 5, "Test", 0)); - Assert.Throws("length1", () => s_invariantCompare.Compare("Test", 5, "Test", 0, CompareOptions.None)); - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 5, 0, "Test", 0, 2)); - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 5, 0, "Test", 0, 2, CompareOptions.None)); + AssertExtensions.Throws("length1", () => s_invariantCompare.Compare("Test", 5, "Test", 0)); + AssertExtensions.Throws("length1", () => s_invariantCompare.Compare("Test", 5, "Test", 0, CompareOptions.None)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 5, 0, "Test", 0, 2)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 5, 0, "Test", 0, 2, CompareOptions.None)); // Offset2 < 0 - Assert.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, "Test", -1)); - Assert.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, "Test", -1, CompareOptions.None)); - Assert.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", -1, 2)); - Assert.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", -1, 2, CompareOptions.None)); + AssertExtensions.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, "Test", -1)); + AssertExtensions.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, "Test", -1, CompareOptions.None)); + AssertExtensions.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", -1, 2)); + AssertExtensions.Throws("offset2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", -1, 2, CompareOptions.None)); // Offset2 > string2.Length - Assert.Throws("length2", () => s_invariantCompare.Compare("Test", 0, "Test", 5)); - Assert.Throws("length2", () => s_invariantCompare.Compare("Test", 0, "Test", 5, CompareOptions.None)); - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 5, 0)); - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 5, 0, CompareOptions.None)); + AssertExtensions.Throws("length2", () => s_invariantCompare.Compare("Test", 0, "Test", 5)); + AssertExtensions.Throws("length2", () => s_invariantCompare.Compare("Test", 0, "Test", 5, CompareOptions.None)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 5, 0)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 5, 0, CompareOptions.None)); // Length1 < 0 - Assert.Throws("length1", () => s_invariantCompare.Compare("Test", 0, -1, "Test", 0, 2)); - Assert.Throws("length1", () => s_invariantCompare.Compare("Test", 0, -1, "Test", 0, 2, CompareOptions.None)); + AssertExtensions.Throws("length1", () => s_invariantCompare.Compare("Test", 0, -1, "Test", 0, 2)); + AssertExtensions.Throws("length1", () => s_invariantCompare.Compare("Test", 0, -1, "Test", 0, 2, CompareOptions.None)); // Length1 > string1.Length - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 0, 5, "Test", 0, 2)); - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 0, 5, "Test", 0, 2, CompareOptions.None)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 0, 5, "Test", 0, 2)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 0, 5, "Test", 0, 2, CompareOptions.None)); // Length2 < 0 - Assert.Throws("length2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, -1)); - Assert.Throws("length2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, -1, CompareOptions.None)); + AssertExtensions.Throws("length2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, -1)); + AssertExtensions.Throws("length2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, -1, CompareOptions.None)); // Length2 > string2.Length - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, 5)); - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, 5, CompareOptions.None)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, 5)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 0, 5, CompareOptions.None)); // Offset1 + length1 > string1.Length - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 2, 3, "Test", 0, 2)); - Assert.Throws("string1", () => s_invariantCompare.Compare("Test", 2, 3, "Test", 0, 2, CompareOptions.None)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 2, 3, "Test", 0, 2)); + AssertExtensions.Throws("string1", () => s_invariantCompare.Compare("Test", 2, 3, "Test", 0, 2, CompareOptions.None)); // Offset2 + length2 > string2.Length - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 2, 3)); - Assert.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 2, 3, CompareOptions.None)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 2, 3)); + AssertExtensions.Throws("string2", () => s_invariantCompare.Compare("Test", 0, 2, "Test", 2, 3, CompareOptions.None)); } } } diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IndexOf.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IndexOf.cs index 330aee868a26..5363f0a34883 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IndexOf.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IndexOf.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -217,101 +217,101 @@ public void IndexOf_UnassignedUnicode() public void IndexOf_Invalid() { // Source is null - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, "a")); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, "a", CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, 0)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, 0, CompareOptions.None)); - - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, 'a')); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, 0)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, "a")); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, "a", CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, "a", 0, 0, CompareOptions.None)); + + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, 'a')); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, 'a', 0, 0, CompareOptions.None)); // Value is null - Assert.Throws("value", () => s_invariantCompare.IndexOf("", null)); - Assert.Throws("value", () => s_invariantCompare.IndexOf("", null, CompareOptions.None)); - Assert.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, 0)); - Assert.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, CompareOptions.None)); - Assert.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, 0, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.IndexOf("", null)); + AssertExtensions.Throws("value", () => s_invariantCompare.IndexOf("", null, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, 0)); + AssertExtensions.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.IndexOf("", null, 0, 0, CompareOptions.None)); // Source and value are null - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, null)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, null, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, 0)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, null)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, null, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IndexOf(null, null, 0, 0, CompareOptions.None)); // Options are invalid - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.StringSort)); - - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, 2, (CompareOptions)(-1))); - - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, 2, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.StringSort)); + + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'b', 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'c', 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, 2, (CompareOptions)(-1))); + + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", "Tests", 0, 2, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IndexOf("Test's", 'a', 0, 2, (CompareOptions)0x11111111)); // StartIndex < 0 - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, 4)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, 4, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, 4)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, 4, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, 4)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", -1, 4, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, 4)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', -1, 4, CompareOptions.None)); // StartIndex > source.Length - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, 0)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, 0, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, 0)); - Assert.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, 0, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, 0)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", "Test", 5, 0, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, 0)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.IndexOf("Test", 'a', 5, 0, CompareOptions.None)); // Count < 0 - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, -1)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, -1, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, -1)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, -1, CompareOptions.None)); // Count > source.Length - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, 5)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, 5, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, 5)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, 5, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 0, 5, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 0, 5, CompareOptions.None)); // StartIndex + count > source.Length - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 2, 4)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 2, 4, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 2, 4)); - Assert.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 2, 4, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 2, 4)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", "Test", 2, 4, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 2, 4)); + AssertExtensions.Throws("count", () => s_invariantCompare.IndexOf("Test", 'a', 2, 4, CompareOptions.None)); } [Fact] diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsPrefix.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsPrefix.cs index e52d4f7284fd..1ca8296a625f 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsPrefix.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsPrefix.cs @@ -80,23 +80,23 @@ public void IsPrefix_UnassignedUnicode() public void IsPrefix_Invalid() { // Source is null - Assert.Throws("source", () => s_invariantCompare.IsPrefix(null, "")); - Assert.Throws("source", () => s_invariantCompare.IsPrefix(null, "", CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsPrefix(null, "")); + AssertExtensions.Throws("source", () => s_invariantCompare.IsPrefix(null, "", CompareOptions.None)); // Value is null - Assert.Throws("prefix", () => s_invariantCompare.IsPrefix("", null)); - Assert.Throws("prefix", () => s_invariantCompare.IsPrefix("", null, CompareOptions.None)); + AssertExtensions.Throws("prefix", () => s_invariantCompare.IsPrefix("", null)); + AssertExtensions.Throws("prefix", () => s_invariantCompare.IsPrefix("", null, CompareOptions.None)); // Source and prefix are null - Assert.Throws("source", () => s_invariantCompare.IsPrefix(null, null)); - Assert.Throws("source", () => s_invariantCompare.IsPrefix(null, null, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsPrefix(null, null)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsPrefix(null, null, CompareOptions.None)); // Options are invalid - Assert.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IsPrefix("Test's", "Tests", (CompareOptions)0x11111111)); } } } diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsSuffix.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsSuffix.cs index 5830dfb24f07..1925825188c0 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsSuffix.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.IsSuffix.cs @@ -81,23 +81,23 @@ public void IsSuffix_UnassignedUnicode() public void IsSuffix_Invalid() { // Source is null - Assert.Throws("source", () => s_invariantCompare.IsSuffix(null, "")); - Assert.Throws("source", () => s_invariantCompare.IsSuffix(null, "", CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsSuffix(null, "")); + AssertExtensions.Throws("source", () => s_invariantCompare.IsSuffix(null, "", CompareOptions.None)); // Prefix is null - Assert.Throws("suffix", () => s_invariantCompare.IsSuffix("", null)); - Assert.Throws("suffix", () => s_invariantCompare.IsSuffix("", null, CompareOptions.None)); + AssertExtensions.Throws("suffix", () => s_invariantCompare.IsSuffix("", null)); + AssertExtensions.Throws("suffix", () => s_invariantCompare.IsSuffix("", null, CompareOptions.None)); // Source and prefix are null - Assert.Throws("source", () => s_invariantCompare.IsSuffix(null, null)); - Assert.Throws("source", () => s_invariantCompare.IsSuffix(null, null, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsSuffix(null, null)); + AssertExtensions.Throws("source", () => s_invariantCompare.IsSuffix(null, null, CompareOptions.None)); // Options are invalid - Assert.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.IsSuffix("Test's", "Tests", (CompareOptions)0x11111111)); } } } diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.LastIndexOf.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.LastIndexOf.cs index 5c8c2e1c68c6..57cffe231b91 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.LastIndexOf.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.LastIndexOf.cs @@ -198,114 +198,114 @@ public void LastIndexOf_UnassignedUnicode() public void LastIndexOf_Invalid() { // Source is null - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a")); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, 0)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, 0, CompareOptions.None)); - - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a')); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, 0)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a")); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, "a", 0, 0, CompareOptions.None)); + + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a')); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, 'a', 0, 0, CompareOptions.None)); // Value is null - Assert.Throws("value", () => s_invariantCompare.LastIndexOf("", null)); - Assert.Throws("value", () => s_invariantCompare.LastIndexOf("", null, CompareOptions.None)); - Assert.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, 0)); - Assert.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, CompareOptions.None)); - Assert.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, 0, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.LastIndexOf("", null)); + AssertExtensions.Throws("value", () => s_invariantCompare.LastIndexOf("", null, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, 0)); + AssertExtensions.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, CompareOptions.None)); + AssertExtensions.Throws("value", () => s_invariantCompare.LastIndexOf("", null, 0, 0, CompareOptions.None)); // Source and value are null - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, null)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, 0)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, CompareOptions.None)); - Assert.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, null)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, 0)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, CompareOptions.None)); + AssertExtensions.Throws("source", () => s_invariantCompare.LastIndexOf(null, null, 0, 0, CompareOptions.None)); // Options are invalid - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.StringSort)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.StringSort)); - - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); - - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); - - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, (CompareOptions)(-1))); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, (CompareOptions)(-1))); - - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, (CompareOptions)0x11111111)); - Assert.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.StringSort)); + + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.Ordinal | CompareOptions.IgnoreWidth)); + + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreWidth)); + + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, (CompareOptions)(-1))); + + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", "Tests", 0, 2, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, (CompareOptions)0x11111111)); + AssertExtensions.Throws("options", () => s_invariantCompare.LastIndexOf("Test's", 'a', 0, 2, (CompareOptions)0x11111111)); // StartIndex < 0 - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, 2)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, 2, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, 2)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, 2, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, 2)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", -1, 2, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, 2)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', -1, 2, CompareOptions.None)); // StartIndex >= source.Length - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, 0)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, 0, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, CompareOptions.None)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, 0)); - Assert.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, 0, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, 0)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", "Test", 5, 0, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, CompareOptions.None)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, 0)); + AssertExtensions.Throws("startIndex", () => s_invariantCompare.LastIndexOf("Test", 'a', 5, 0, CompareOptions.None)); // Count < 0 - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, -1)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, -1, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, -1)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, -1, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 4, -1)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 4, -1, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 4, -1)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 4, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 4, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 4, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 4, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 4, -1, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "", 4, -1)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "", 4, -1, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "", 4, -1)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "", 4, -1, CompareOptions.None)); // Count > source.Length - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, 5)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, 5, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, 5)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, 5, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 0, 5, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 0, 5, CompareOptions.None)); // StartIndex + count > source.Length + 1 - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 3, 5)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 3, 5, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 3, 5)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 3, 5, CompareOptions.None)); - - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "s", 4, 6)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "s", 4, 7, CompareOptions.None)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 's', 4, 6)); - Assert.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 's', 4, 7, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 3, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "Test", 3, 5, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 3, 5)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 'a', 3, 5, CompareOptions.None)); + + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "s", 4, 6)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", "s", 4, 7, CompareOptions.None)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 's', 4, 6)); + AssertExtensions.Throws("count", () => s_invariantCompare.LastIndexOf("Test", 's', 4, 7, CompareOptions.None)); } } } diff --git a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.cs b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.cs index f3d07fd2d617..ce51685591d0 100644 --- a/src/System.Globalization/tests/CompareInfo/CompareInfoTests.cs +++ b/src/System.Globalization/tests/CompareInfo/CompareInfoTests.cs @@ -26,7 +26,7 @@ public void GetCompareInfo(string name) [Fact] public void GetCompareInfo_Null_ThrowsArgumentNullException() { - Assert.Throws("name", () => CompareInfo.GetCompareInfo(null)); + AssertExtensions.Throws("name", () => CompareInfo.GetCompareInfo(null)); } public static IEnumerable Equals_TestData() @@ -69,11 +69,11 @@ public void GetHashCode_EmptyString() [Fact] public void GetHashCode_Invalid() { - Assert.Throws("source", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode(null, CompareOptions.None)); + AssertExtensions.Throws("source", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode(null, CompareOptions.None)); - Assert.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", CompareOptions.StringSort)); - Assert.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", CompareOptions.Ordinal | CompareOptions.IgnoreSymbols)); - Assert.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", (CompareOptions)(-1))); + AssertExtensions.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", CompareOptions.StringSort)); + AssertExtensions.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", CompareOptions.Ordinal | CompareOptions.IgnoreSymbols)); + AssertExtensions.Throws("options", () => CultureInfo.InvariantCulture.CompareInfo.GetHashCode("Test", (CompareOptions)(-1))); } [Theory] @@ -373,8 +373,8 @@ public void SortKeyMiscTest() Assert.Equal(sk4.GetHashCode(), sk5.GetHashCode()); Assert.Equal(sk4.KeyData, sk5.KeyData); - Assert.Throws("source", () => ci.GetSortKey(null)); - Assert.Throws("options", () => ci.GetSortKey(s1, CompareOptions.Ordinal)); + AssertExtensions.Throws("source", () => ci.GetSortKey(null)); + AssertExtensions.Throws("options", () => ci.GetSortKey(s1, CompareOptions.Ordinal)); } [Theory] diff --git a/src/System.Globalization/tests/CultureInfo/CultureInfoCtor.cs b/src/System.Globalization/tests/CultureInfo/CultureInfoCtor.cs index f1e5f1a582f0..18b32be2c63c 100644 --- a/src/System.Globalization/tests/CultureInfo/CultureInfoCtor.cs +++ b/src/System.Globalization/tests/CultureInfo/CultureInfoCtor.cs @@ -36,7 +36,7 @@ public void Ctor_String(string name, string[] expectedNames) [Fact] public void Ctor_String_Invalid() { - Assert.Throws("name", () => new CultureInfo(null)); // Name is null + AssertExtensions.Throws("name", () => new CultureInfo(null)); // Name is null Assert.Throws(() => new CultureInfo("en-US@x=1")); // Name doesn't support ICU keywords Assert.Throws(() => new CultureInfo("NotAValidCulture")); // Name is invalid diff --git a/src/System.Globalization/tests/CultureInfo/CultureInfoCurrentCulture.cs b/src/System.Globalization/tests/CultureInfo/CultureInfoCurrentCulture.cs index 587e59691e0c..a46550602a51 100644 --- a/src/System.Globalization/tests/CultureInfo/CultureInfoCurrentCulture.cs +++ b/src/System.Globalization/tests/CultureInfo/CultureInfoCurrentCulture.cs @@ -34,7 +34,7 @@ public void CurrentCulture() [Fact] public void CurrentCulture_Set_Null_ThrowsArgumentNullException() { - Assert.Throws("value", () => CultureInfo.CurrentCulture = null); + AssertExtensions.Throws("value", () => CultureInfo.CurrentCulture = null); } [Fact] @@ -97,7 +97,7 @@ public void DefaultThreadCurrentUICulture() [Fact] public void CurrentUICulture_Set_Null_ThrowsArgumentNullException() { - Assert.Throws("value", () => CultureInfo.CurrentUICulture = null); + AssertExtensions.Throws("value", () => CultureInfo.CurrentUICulture = null); } [PlatformSpecific(TestPlatforms.AnyUnix)] // Windows locale support doesn't rely on LANG variable diff --git a/src/System.Globalization/tests/CultureInfo/CultureInfoDateTimeFormat.cs b/src/System.Globalization/tests/CultureInfo/CultureInfoDateTimeFormat.cs index f421a17e7aa8..c10e86d654ed 100644 --- a/src/System.Globalization/tests/CultureInfo/CultureInfoDateTimeFormat.cs +++ b/src/System.Globalization/tests/CultureInfo/CultureInfoDateTimeFormat.cs @@ -63,7 +63,7 @@ public void DateTimeFormatInfo_Set_Properties() [Fact] public void DateTimeFormat_Set_Invalid() { - Assert.Throws("value", () => new CultureInfo("en-US").DateTimeFormat = null); // Value is null + AssertExtensions.Throws("value", () => new CultureInfo("en-US").DateTimeFormat = null); // Value is null Assert.Throws(() => CultureInfo.InvariantCulture.DateTimeFormat = new DateTimeFormatInfo()); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/CultureInfo/CultureInfoNumberFormat.cs b/src/System.Globalization/tests/CultureInfo/CultureInfoNumberFormat.cs index 291bfaf2681c..7aa32d920bdc 100644 --- a/src/System.Globalization/tests/CultureInfo/CultureInfoNumberFormat.cs +++ b/src/System.Globalization/tests/CultureInfo/CultureInfoNumberFormat.cs @@ -32,7 +32,7 @@ public void NumberFormatInfo_Set(string name, NumberFormatInfo newNumberFormatIn [Fact] public void NumberFormat_Set_Invalid() { - Assert.Throws("value", () => new CultureInfo("en-US").NumberFormat = null); + AssertExtensions.Throws("value", () => new CultureInfo("en-US").NumberFormat = null); Assert.Throws(() => CultureInfo.InvariantCulture.NumberFormat = new NumberFormatInfo()); } } diff --git a/src/System.Globalization/tests/CultureInfo/CultureInfoReadOnly.cs b/src/System.Globalization/tests/CultureInfo/CultureInfoReadOnly.cs index 7422025a4dfe..caec4fbc7d00 100644 --- a/src/System.Globalization/tests/CultureInfo/CultureInfoReadOnly.cs +++ b/src/System.Globalization/tests/CultureInfo/CultureInfoReadOnly.cs @@ -37,7 +37,7 @@ public void ReadOnly_ReadOnlyCulture_ReturnsSameReference() [Fact] public void ReadOnly_Null_ThrowsArgumentNullException() { - Assert.Throws("ci", () => CultureInfo.ReadOnly(null)); + AssertExtensions.Throws("ci", () => CultureInfo.ReadOnly(null)); } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAMDesignator.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAMDesignator.cs index 19bb26016bf6..7a4230c24540 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAMDesignator.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAMDesignator.cs @@ -26,7 +26,7 @@ public void AMDesignator_Set() [Fact] public void AMDesignator_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().AMDesignator = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AMDesignator = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.AMDesignator = "AA"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs index fb2d4e9b9336..c7ad73582255 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs @@ -26,9 +26,9 @@ public void AbbreviatedDayNames_Set() [Fact] public void AbbreviatedDayNames_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedDayNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedDayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null - Assert.Throws("value", (() => new DateTimeFormatInfo().AbbreviatedDayNames = new string[] { "sun" })); // Value.Length is not 7 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedDayNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedDayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null + AssertExtensions.Throws("value", (() => new DateTimeFormatInfo().AbbreviatedDayNames = new string[] { "sun" })); // Value.Length is not 7 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.AbbreviatedDayNames = new string[] { "1", "2", "3", "4", "5", "6", "7" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs index d9d296db2fad..4bfb024f00aa 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs @@ -26,9 +26,9 @@ public void AbbreviatedMonthNames_Set() [Fact] public void AbbreviatedMonths_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = new string[] { "Jan" }); // Value.Length is not 13 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthGenitiveNames = new string[] { "Jan" }); // Value.Length is not 13 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.AbbreviatedMonthGenitiveNames = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthNames.cs index d0ff49501159..2550ec5b8eac 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedMonthNames.cs @@ -26,9 +26,9 @@ public void AbbreviatedMonthNames_Set() [Fact] public void AbbreviatedMonths_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = new string[] { "Jan" }); // Value.Length is not 13 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().AbbreviatedMonthNames = new string[] { "Jan" }); // Value.Length is not 13 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.AbbreviatedMonthNames = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendar.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendar.cs index 04fee8eaf533..1ca47837f311 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendar.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendar.cs @@ -31,8 +31,8 @@ public void Calendar_Set() [Fact] public void Calendar_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().Calendar = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().Calendar = new ThaiBuddhistCalendar()); // Value is invalid + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().Calendar = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().Calendar = new ThaiBuddhistCalendar()); // Value is invalid Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.Calendar = new GregorianCalendar()); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendarWeekRule.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendarWeekRule.cs index 567a5a95725f..8f912d53381c 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendarWeekRule.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoCalendarWeekRule.cs @@ -39,7 +39,7 @@ public void CalendarWeekRule_Set(CalendarWeekRule newCalendarWeekRule) [InlineData(CalendarWeekRule.FirstFourDayWeek + 1)] public void CalendarWeekRule_Set_Invalid_ThrowsArgumentOutOfRangeException(CalendarWeekRule value) { - Assert.Throws("value", () => new DateTimeFormatInfo().CalendarWeekRule = value); + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().CalendarWeekRule = value); } [Fact] diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs index 750070c51c1e..ae446007d988 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs @@ -26,9 +26,9 @@ public void DayNames_Set() [Fact] public void DayNames_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().DayNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().DayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().DayNames = new string[] { "sun" }); // Value.Length is not 7 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().DayNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().DayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().DayNames = new string[] { "sun" }); // Value.Length is not 7 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.DayNames = new string[] { "1", "2", "3", "4", "5", "6", "7" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFirstDayOfWeek.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFirstDayOfWeek.cs index 80c327cb904c..87de1251e84f 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFirstDayOfWeek.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFirstDayOfWeek.cs @@ -43,7 +43,7 @@ public void FirstDayOfWeek_Set(DayOfWeek newFirstDayOfWeek) [InlineData(DayOfWeek.Saturday + 1)] public void FirstDayOfWeek_Set_Invalid_ThrowsArgumentOutOfRangeException(DayOfWeek value) { - Assert.Throws("value", () => new DateTimeFormatInfo().FirstDayOfWeek = value); + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().FirstDayOfWeek = value); } [Fact] diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFullDateTimePattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFullDateTimePattern.cs index 76b90d25737d..aaef3b430244 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFullDateTimePattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoFullDateTimePattern.cs @@ -38,7 +38,7 @@ public void FullDateTimePattern_Set(string newFullDateTimePattern) [Fact] public void FullDateTimePattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().FullDateTimePattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().FullDateTimePattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.FullDateTimePattern = "dddd, dd MMMM yyyy HH:mm:ss"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedDayName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedDayName.cs index 976282844acd..4adf45400a26 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedDayName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedDayName.cs @@ -49,7 +49,7 @@ public void GetAbbreviatedDayName(DateTimeFormatInfo info, string[] expected) [InlineData(DayOfWeek.Saturday + 1)] public void GetAbbreviatedDayName_Invalid_ThrowsArgumentOutOfRangeException(DayOfWeek dayofweek) { - Assert.Throws("dayofweek", () => new DateTimeFormatInfo().GetAbbreviatedDayName(dayofweek)); + AssertExtensions.Throws("dayofweek", () => new DateTimeFormatInfo().GetAbbreviatedDayName(dayofweek)); } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs index 102a384c178e..858777f0e882 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs @@ -29,10 +29,10 @@ public void GetAbbreviatedEraName(DateTimeFormatInfo format, int era, string exp public void GetAbbreviatedEraName_Invalid() { var format = new CultureInfo("en-US").DateTimeFormat; - Assert.Throws("era", () => format.GetAbbreviatedEraName(-1)); // Era < 0 + AssertExtensions.Throws("era", () => format.GetAbbreviatedEraName(-1)); // Era < 0 const int EnUSMaxEra = 1; - Assert.Throws("era", () => format.GetAbbreviatedEraName(EnUSMaxEra + 1)); // Era > max era for the culture + AssertExtensions.Throws("era", () => format.GetAbbreviatedEraName(EnUSMaxEra + 1)); // Era > max era for the culture } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedMonthName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedMonthName.cs index fed1abb89349..0bf5b063cb82 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedMonthName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedMonthName.cs @@ -39,8 +39,8 @@ public void GetAbbreviatedMonthName(DateTimeFormatInfo info, string[] expected) [Fact] public void GetAbbreviatedMonthName_Invalid() { - Assert.Throws("month", () => new DateTimeFormatInfo().GetAbbreviatedMonthName(MinMonth - 1)); // Month is invalid - Assert.Throws("month", (() => new DateTimeFormatInfo().GetAbbreviatedMonthName(MaxMonth + 1))); // Month is invalid + AssertExtensions.Throws("month", () => new DateTimeFormatInfo().GetAbbreviatedMonthName(MinMonth - 1)); // Month is invalid + AssertExtensions.Throws("month", (() => new DateTimeFormatInfo().GetAbbreviatedMonthName(MaxMonth + 1))); // Month is invalid } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetDayName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetDayName.cs index fea5bc5c504c..b5357207bfad 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetDayName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetDayName.cs @@ -50,7 +50,7 @@ public void GetDayName(DateTimeFormatInfo format, string[] expected) [InlineData(DayOfWeek.Saturday + 1)] public void GetDayName_Invalid_ThrowsArgumentOutOfRangeException(DayOfWeek dayofweek) { - Assert.Throws("dayofweek", () => new DateTimeFormatInfo().GetDayName(dayofweek)); + AssertExtensions.Throws("dayofweek", () => new DateTimeFormatInfo().GetDayName(dayofweek)); } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEra.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEra.cs index 4fd51da47783..ddf8944a86f2 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEra.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEra.cs @@ -60,7 +60,7 @@ public void GetEra(DateTimeFormatInfo format, string eraName, int expected) [Fact] public void GetEra_Null_ThrowsArgumentNullException() { - Assert.Throws("eraName", () => new DateTimeFormatInfo().GetEra(null)); // Era name is null + AssertExtensions.Throws("eraName", () => new DateTimeFormatInfo().GetEra(null)); // Era name is null } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs index c98a01e45a15..e90fe7927865 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs @@ -33,10 +33,10 @@ public void GetEraName(DateTimeFormatInfo format, int era, string expected) [Fact] public void GetEraName_Invalid() { - Assert.Throws("era", () => new DateTimeFormatInfo().GetEraName(-1)); // Era < 0 + AssertExtensions.Throws("era", () => new DateTimeFormatInfo().GetEraName(-1)); // Era < 0 const int EnUSMaxEra = 1; - Assert.Throws("era", () => new CultureInfo("en-US").DateTimeFormat.GetAbbreviatedEraName(EnUSMaxEra + 1)); // Era > max era for the culture + AssertExtensions.Throws("era", () => new CultureInfo("en-US").DateTimeFormat.GetAbbreviatedEraName(EnUSMaxEra + 1)); // Era > max era for the culture } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetMonthName.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetMonthName.cs index be6187ec226c..8593daa5aac5 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetMonthName.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoGetMonthName.cs @@ -39,8 +39,8 @@ public void GetMonthName(DateTimeFormatInfo format, string[] expected) [Fact] public void GetMonthName_Invalid() { - Assert.Throws("month", () => new DateTimeFormatInfo().GetMonthName(MinMonth - 1)); - Assert.Throws("month", () => new DateTimeFormatInfo().GetMonthName(MaxMonth + 1)); + AssertExtensions.Throws("month", () => new DateTimeFormatInfo().GetMonthName(MinMonth - 1)); + AssertExtensions.Throws("month", () => new DateTimeFormatInfo().GetMonthName(MaxMonth + 1)); } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongDatePattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongDatePattern.cs index 06e0181187fe..b931a76fbfbf 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongDatePattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongDatePattern.cs @@ -38,7 +38,7 @@ public void LongDatePattern_Set(string newLongDatePattern) [Fact] public void LongDatePattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().LongDatePattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().LongDatePattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.LongDatePattern = "dddd, dd MMMM yyyy"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongTimePattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongTimePattern.cs index d79889e5e523..4aa756902dbc 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongTimePattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoLongTimePattern.cs @@ -38,7 +38,7 @@ public void LongTimePattern_Set(string newLongTimePattern) [Fact] public void LongTimePattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().LongTimePattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().LongTimePattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.LongTimePattern = "HH:mm:ss"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthDayPattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthDayPattern.cs index d7968080d0b1..ecb0761b1a67 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthDayPattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthDayPattern.cs @@ -39,7 +39,7 @@ public void MonthDayPattern_Set(string newMonthDayPattern) [Fact] public void MonthDayPattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().MonthDayPattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthDayPattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.MonthDayPattern = "MMMM dd"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthGenitiveNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthGenitiveNames.cs index 9d809e8d4c0f..643d71dbe994 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthGenitiveNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthGenitiveNames.cs @@ -53,9 +53,9 @@ public void MonthGenitiveNames_Set() [Fact] public void MonthGenitiveNames_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = new string[] { "Jan" }); // Value.Length is not 13 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthGenitiveNames = new string[] { "Jan" }); // Value.Length is not 13 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.MonthGenitiveNames = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthNames.cs index bdfa6fe9207d..d0afef409685 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoMonthNames.cs @@ -26,9 +26,9 @@ public void MonthNames_Set() [Fact] public void MonthNames_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().MonthNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().MonthNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().MonthNames = new string[] { "Jan" }); // Value.Length is not 13 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthNames = new string[] { "1", "2", "3", null, "5", "6", "7", "8", "9", "10", "11", "12", "" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().MonthNames = new string[] { "Jan" }); // Value.Length is not 13 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.MonthNames = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoPMDesignator.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoPMDesignator.cs index 8cc82e90138a..418e75b45469 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoPMDesignator.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoPMDesignator.cs @@ -27,7 +27,7 @@ public void PMDesignator_Set(string newPMDesignator) [Fact] public void PMDesignator_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().PMDesignator = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().PMDesignator = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.PMDesignator = "AA"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoReadOnly.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoReadOnly.cs index 06eb3e5d4a2e..5228702d544e 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoReadOnly.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoReadOnly.cs @@ -38,7 +38,7 @@ public void ReadOnly(DateTimeFormatInfo format, bool originalFormatIsReadOnly) [Fact] public void ReadOnly_Null_ThrowsArgumentNullException() { - Assert.Throws("dtfi", () => DateTimeFormatInfo.ReadOnly(null)); // Dtfi is null + AssertExtensions.Throws("dtfi", () => DateTimeFormatInfo.ReadOnly(null)); // Dtfi is null } } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs index e09512b9327b..f716b3afe72d 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs @@ -36,7 +36,7 @@ public void ShortDatePattern_Set(string newShortDatePattern) [Fact] public void ShortDatePattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().ShortDatePattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().ShortDatePattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.ShortDatePattern = "MM/dd/yyyy"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortTimePattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortTimePattern.cs index e1965291d4fd..3c61b2183d21 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortTimePattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortTimePattern.cs @@ -36,7 +36,7 @@ public void ShortTimePattern_Set(string newShortTimePattern) [Fact] public void ShortTimePattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().ShortTimePattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().ShortTimePattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.ShortTimePattern = "HH:mm"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortestDayNames.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortestDayNames.cs index c5ea06a77130..6aef7872a921 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortestDayNames.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoShortestDayNames.cs @@ -26,9 +26,9 @@ public void ShortestDayNames_Set() [Fact] public void ShortestDayNames_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = null); // Value is null - Assert.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null - Assert.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = new string[] { "su" }); // Value.Length is not 7 + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = new string[] { "1", "2", "3", null, "5", "6", "7" }); // Value has null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().ShortestDayNames = new string[] { "su" }); // Value.Length is not 7 // DateTimeFormatInfo.InvariantInfo is read only Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.ShortestDayNames = new string[] { "1", "2", "3", "4", "5", "6", "7" }); diff --git a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoYearMonthPattern.cs b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoYearMonthPattern.cs index f55716dec4d5..e22058bf372c 100644 --- a/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoYearMonthPattern.cs +++ b/src/System.Globalization/tests/DateTimeFormatInfo/DateTimeFormatInfoYearMonthPattern.cs @@ -44,7 +44,7 @@ public void YearMonthPattern_Set(string newYearMonthPattern) [Fact] public void YearMonthPattern_Set_Invalid() { - Assert.Throws("value", () => new DateTimeFormatInfo().YearMonthPattern = null); // Value is null + AssertExtensions.Throws("value", () => new DateTimeFormatInfo().YearMonthPattern = null); // Value is null Assert.Throws(() => DateTimeFormatInfo.InvariantInfo.YearMonthPattern = "yyyy MMMM"); // DateTimeFormatInfo.InvariantInfo is read only } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalDigits.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalDigits.cs index 4c3d33afb113..b276ccd25320 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalDigits.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalDigits.cs @@ -39,8 +39,8 @@ public void CurrencyDecimalDigits_Set(int newCurrencyDecimalDigits) [Fact] public void CurrencyDecimalDigits_Set_Invalid() { - Assert.Throws("CurrencyDecimalDigits", () => new NumberFormatInfo().CurrencyDecimalDigits = -1); - Assert.Throws("CurrencyDecimalDigits", () => new NumberFormatInfo().CurrencyDecimalDigits = 100); + AssertExtensions.Throws("CurrencyDecimalDigits", () => new NumberFormatInfo().CurrencyDecimalDigits = -1); + AssertExtensions.Throws("CurrencyDecimalDigits", () => new NumberFormatInfo().CurrencyDecimalDigits = 100); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyDecimalDigits = 2); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalSeparator.cs index 6b8086e1d9a0..c1e54170c5fc 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyDecimalSeparator.cs @@ -27,7 +27,7 @@ public void CurrencyDecimalSeparator_Set(string newCurrencyDecimalSeparator) [Fact] public void CurrencyDecimalSeparator_Set_Invalid() { - Assert.Throws("CurrencyDecimalSeparator", () => new NumberFormatInfo().CurrencyDecimalSeparator = null); + AssertExtensions.Throws("CurrencyDecimalSeparator", () => new NumberFormatInfo().CurrencyDecimalSeparator = null); Assert.Throws(() => new NumberFormatInfo().CurrencyDecimalSeparator = ""); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyDecimalSeparator = "string"); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSeparator.cs index 3d46afdc238c..0f7d7422fe0c 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSeparator.cs @@ -28,7 +28,7 @@ public void CurrencyGroupSeparator_Set(string newCurrencyGroupSeparator) [Fact] public void CurrencyGroupSeparator_Set_Invalid() { - Assert.Throws("CurrencyGroupSeparator", () => new NumberFormatInfo().CurrencyGroupSeparator = null); + AssertExtensions.Throws("CurrencyGroupSeparator", () => new NumberFormatInfo().CurrencyGroupSeparator = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyGroupSeparator = "string"); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSizes.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSizes.cs index 12d83c7c95d2..bc874404f7db 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSizes.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSizes.cs @@ -43,10 +43,10 @@ public void CurrencyGroupSizes_Set(int[] newCurrencyGroupSizes) [Fact] public void CurrencyGroupSizes_Set_Invalid() { - Assert.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = null); - Assert.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { -1, 1, 2 }); - Assert.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { 98, 99, 100 }); - Assert.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { 0, 1, 2 }); + AssertExtensions.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = null); + AssertExtensions.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { -1, 1, 2 }); + AssertExtensions.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { 98, 99, 100 }); + AssertExtensions.Throws("CurrencyGroupSizes", () => new NumberFormatInfo().CurrencyGroupSizes = new int[] { 0, 1, 2 }); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyGroupSizes = new int[] { 1, 2, 3 }); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyNegativePattern.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyNegativePattern.cs index 07b2c88cf471..90670e4c6836 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyNegativePattern.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyNegativePattern.cs @@ -61,8 +61,8 @@ public void CurrencyNegativePattern_Set(int newCurrencyNegativePattern) [Fact] public void CurrencyNegativePattern_Set_Invalid() { - Assert.Throws("CurrencyNegativePattern", () => new NumberFormatInfo().CurrencyNegativePattern = -1); - Assert.Throws("CurrencyNegativePattern", () => new NumberFormatInfo().CurrencyNegativePattern = 16); + AssertExtensions.Throws("CurrencyNegativePattern", () => new NumberFormatInfo().CurrencyNegativePattern = -1); + AssertExtensions.Throws("CurrencyNegativePattern", () => new NumberFormatInfo().CurrencyNegativePattern = 16); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyNegativePattern = 1); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyPositivePattern.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyPositivePattern.cs index 40d5a840b3be..373c6db599df 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyPositivePattern.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyPositivePattern.cs @@ -37,8 +37,8 @@ public void CurrencyPositivePattern_Set(int newCurrencyPositivePattern) [Fact] public void CurrencyPositivePattern_Set_Invalid() { - Assert.Throws("CurrencyPositivePattern", () => new NumberFormatInfo().CurrencyPositivePattern = -1); - Assert.Throws("CurrencyPositivePattern", () => new NumberFormatInfo().CurrencyPositivePattern = 4); + AssertExtensions.Throws("CurrencyPositivePattern", () => new NumberFormatInfo().CurrencyPositivePattern = -1); + AssertExtensions.Throws("CurrencyPositivePattern", () => new NumberFormatInfo().CurrencyPositivePattern = 4); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencyPositivePattern = 1); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencySymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencySymbol.cs index 33472492d148..4bb33ebe33d2 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencySymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencySymbol.cs @@ -31,7 +31,7 @@ public void CurrencySymbol_Set(string newCurrencySymbol) [Fact] public void CurrencySymbol_Set_Invalid() { - Assert.Throws("CurrencySymbol", () => new NumberFormatInfo().CurrencySymbol = null); + AssertExtensions.Throws("CurrencySymbol", () => new NumberFormatInfo().CurrencySymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.CurrencySymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNaNSymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNaNSymbol.cs index ba1ddd731474..a86d413c1ac5 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNaNSymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNaNSymbol.cs @@ -29,7 +29,7 @@ public void NaNSymbol_Set(string newNaNSymbol) [Fact] public void NaNSymbol_Set_Invalid() { - Assert.Throws("NaNSymbol", () => new NumberFormatInfo().NaNSymbol = null); + AssertExtensions.Throws("NaNSymbol", () => new NumberFormatInfo().NaNSymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NaNSymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeInfinitySymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeInfinitySymbol.cs index 4b63777e9cfb..2a8fc36df3d9 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeInfinitySymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeInfinitySymbol.cs @@ -37,7 +37,7 @@ public void NegativeInfinitySymbol_Set(string newNegativeInfinitySymbol) [Fact] public void NegativeInfinitySymbol_Set_Invalid() { - Assert.Throws("NegativeInfinitySymbol", () => new NumberFormatInfo().NegativeInfinitySymbol = null); + AssertExtensions.Throws("NegativeInfinitySymbol", () => new NumberFormatInfo().NegativeInfinitySymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NegativeInfinitySymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeSign.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeSign.cs index ab6cee2a0eb2..1bf3bb1411f8 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeSign.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNegativeSign.cs @@ -36,7 +36,7 @@ public void NegativeSign_Set(string newNegativeSign) [Fact] public void NegativeSign_Set_Invalid() { - Assert.Throws("NegativeSign", () => new NumberFormatInfo().NegativeSign = null); + AssertExtensions.Throws("NegativeSign", () => new NumberFormatInfo().NegativeSign = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NegativeSign = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalDigits.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalDigits.cs index e4e098a33fc3..26da4745452f 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalDigits.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalDigits.cs @@ -38,8 +38,8 @@ public void NumberDecimalDigits_Set(int newNumberDecimalDigits) [Fact] public void NumberDecimalDigits_Set_Invalid() { - Assert.Throws("NumberDecimalDigits", () => new NumberFormatInfo().NumberDecimalDigits = -1); - Assert.Throws("NumberDecimalDigits", () => new NumberFormatInfo().NumberDecimalDigits = 100); + AssertExtensions.Throws("NumberDecimalDigits", () => new NumberFormatInfo().NumberDecimalDigits = -1); + AssertExtensions.Throws("NumberDecimalDigits", () => new NumberFormatInfo().NumberDecimalDigits = 100); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NumberDecimalDigits = 1); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalSeparator.cs index 18fb5ae4691b..3121139b5018 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberDecimalSeparator.cs @@ -27,7 +27,7 @@ public void NumberDecimalSeparator_Set(string newNumberDecimalSeparator) [Fact] public void NumberDecimalSeparator_Set_Invalid() { - Assert.Throws("NumberDecimalSeparator", () => new NumberFormatInfo().NumberDecimalSeparator = null); + AssertExtensions.Throws("NumberDecimalSeparator", () => new NumberFormatInfo().NumberDecimalSeparator = null); Assert.Throws(() => new NumberFormatInfo().NumberDecimalSeparator = ""); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NumberDecimalSeparator = "string"); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSeparator.cs index 37099ebcd2e3..a35f3fcd6b21 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSeparator.cs @@ -28,7 +28,7 @@ public void NumberGroupSeparator_Set(string newNumberGroupSeparator) [Fact] public void NumberGroupSeparator_Set_Invalid() { - Assert.Throws("NumberGroupSeparator", () => new NumberFormatInfo().NumberGroupSeparator = null); + AssertExtensions.Throws("NumberGroupSeparator", () => new NumberFormatInfo().NumberGroupSeparator = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NumberGroupSeparator = "string"); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs index f4ae7026285b..31752d563ae5 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberGroupSizes.cs @@ -43,11 +43,11 @@ public void NumberGroupSizes_Set(int[] newNumberGroupSizes) [Fact] public void NumberGroupSizes_Set_Invalid() { - Assert.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = null); + AssertExtensions.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = null); - Assert.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { -1, 1, 2 }); - Assert.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { 98, 99, 100 }); - Assert.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { 0, 1, 2 }); + AssertExtensions.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { -1, 1, 2 }); + AssertExtensions.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { 98, 99, 100 }); + AssertExtensions.Throws("NumberGroupSizes", () => new NumberFormatInfo().NumberGroupSizes = new int[] { 0, 1, 2 }); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NumberGroupSizes = new int[] { 1, 2, 3 }); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberNegativePattern.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberNegativePattern.cs index 82041ca9ba1a..aafacb9c2ced 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberNegativePattern.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoNumberNegativePattern.cs @@ -36,8 +36,8 @@ public void NumberNegativePattern_Set(int newNumberNegativePattern) [Fact] public void NumberNegativePattern_Set_Invalid() { - Assert.Throws("NumberNegativePattern", () => new NumberFormatInfo().NumberNegativePattern = -1); - Assert.Throws("NumberNegativePattern", () => new NumberFormatInfo().NumberNegativePattern = 5); + AssertExtensions.Throws("NumberNegativePattern", () => new NumberFormatInfo().NumberNegativePattern = -1); + AssertExtensions.Throws("NumberNegativePattern", () => new NumberFormatInfo().NumberNegativePattern = 5); Assert.Throws(() => NumberFormatInfo.InvariantInfo.NumberNegativePattern = 1); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPerMilleSymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPerMilleSymbol.cs index 114a1260cf68..ad8cd02b0a9e 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPerMilleSymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPerMilleSymbol.cs @@ -28,7 +28,7 @@ public void PerMilleSymbol_Set(string newPerMilleSymbol) [Fact] public void PerMilleSymbol_Set_Invalid() { - Assert.Throws("PerMilleSymbol", () => new NumberFormatInfo().PerMilleSymbol = null); + AssertExtensions.Throws("PerMilleSymbol", () => new NumberFormatInfo().PerMilleSymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PerMilleSymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalDigits.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalDigits.cs index 61e03c3f5fa1..0661ae8ef41a 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalDigits.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalDigits.cs @@ -28,8 +28,8 @@ public void PercentDecimalDigits_Set(int newPercentDecimalDigits) [Fact] public void PercentDecimalDigits_Set_Invalid() { - Assert.Throws("PercentDecimalDigits", () => new NumberFormatInfo().PercentDecimalDigits = -1); - Assert.Throws("PercentDecimalDigits", () => new NumberFormatInfo().PercentDecimalDigits = 100); + AssertExtensions.Throws("PercentDecimalDigits", () => new NumberFormatInfo().PercentDecimalDigits = -1); + AssertExtensions.Throws("PercentDecimalDigits", () => new NumberFormatInfo().PercentDecimalDigits = 100); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentDecimalDigits = 1); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalSeparator.cs index ad1b9a3dcabc..f50d260ded73 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentDecimalSeparator.cs @@ -27,7 +27,7 @@ public void PercentDecimalSeparator_Set(string newPercentDecimalSeparator) [Fact] public void PercentDecimalSeparator_Set_Invalid() { - Assert.Throws("PercentDecimalSeparator", () => new NumberFormatInfo().PercentDecimalSeparator = null); + AssertExtensions.Throws("PercentDecimalSeparator", () => new NumberFormatInfo().PercentDecimalSeparator = null); Assert.Throws(() => new NumberFormatInfo().PercentDecimalSeparator = ""); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentDecimalSeparator = "string"); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSeparator.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSeparator.cs index 7015203ad67f..78fa49e6b0de 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSeparator.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSeparator.cs @@ -28,7 +28,7 @@ public void PercentGroupSeparator_Set(string newPercentGroupSeparator) [Fact] public void PercentGroupSeparator_Set_Invalid() { - Assert.Throws("PercentGroupSeparator", () => new NumberFormatInfo().PercentGroupSeparator = null); + AssertExtensions.Throws("PercentGroupSeparator", () => new NumberFormatInfo().PercentGroupSeparator = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentGroupSeparator = "string"); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSizes.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSizes.cs index 829c73d8c6df..f20884a9b290 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSizes.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentGroupSizes.cs @@ -37,11 +37,11 @@ public void PercentGroupSizes_Set(int[] newPercentGroupSizes) [Fact] public void PercentGroupSizes_Set_Invalid() { - Assert.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = null); + AssertExtensions.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = null); - Assert.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { -1, 1, 2 }); - Assert.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { 98, 99, 100 }); - Assert.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { 0, 1, 2 }); + AssertExtensions.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { -1, 1, 2 }); + AssertExtensions.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { 98, 99, 100 }); + AssertExtensions.Throws("PercentGroupSizes", () => new NumberFormatInfo().PercentGroupSizes = new int[] { 0, 1, 2 }); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentGroupSizes = new int[] { 1, 2, 3 }); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentNegativePattern.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentNegativePattern.cs index d4d2b0a7b49c..5e750d119041 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentNegativePattern.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentNegativePattern.cs @@ -51,8 +51,8 @@ public void PercentNegativePattern_Set(int newPercentNegativePattern) [Fact] public void PercentNegativePattern_Set_Invalid() { - Assert.Throws("PercentNegativePattern", () => new NumberFormatInfo().PercentNegativePattern = -1); - Assert.Throws("PercentNegativePattern", () => new NumberFormatInfo().PercentNegativePattern = 12); + AssertExtensions.Throws("PercentNegativePattern", () => new NumberFormatInfo().PercentNegativePattern = -1); + AssertExtensions.Throws("PercentNegativePattern", () => new NumberFormatInfo().PercentNegativePattern = 12); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentNegativePattern = 1); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentPositivePattern.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentPositivePattern.cs index d1cd2c528fd6..8211d289992e 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentPositivePattern.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentPositivePattern.cs @@ -51,8 +51,8 @@ public void PercentPositivePattern_Set(int newPercentPositivePattern) [Fact] public void PercentPositivePattern_Set_Invalid() { - Assert.Throws("PercentPositivePattern", () => new NumberFormatInfo().PercentPositivePattern = -1); - Assert.Throws("PercentPositivePattern", () => new NumberFormatInfo().PercentPositivePattern = 4); + AssertExtensions.Throws("PercentPositivePattern", () => new NumberFormatInfo().PercentPositivePattern = -1); + AssertExtensions.Throws("PercentPositivePattern", () => new NumberFormatInfo().PercentPositivePattern = 4); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentPositivePattern = 1); } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentSymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentSymbol.cs index 0f1d2fab6e49..37973c2c665f 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentSymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPercentSymbol.cs @@ -36,7 +36,7 @@ public void PercentSymbol_Set(string newPercentSymbol) [Fact] public void PercentSymbol_Set_Invalid() { - Assert.Throws("PercentSymbol", () => new NumberFormatInfo().PercentSymbol = null); + AssertExtensions.Throws("PercentSymbol", () => new NumberFormatInfo().PercentSymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PercentSymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveInfinitySymbol.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveInfinitySymbol.cs index 9bbca2b41283..9cbef54072b1 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveInfinitySymbol.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveInfinitySymbol.cs @@ -37,7 +37,7 @@ public void PositiveInfinitySymbol_Set(string newPositiveInfinitySymbol) [Fact] public void PositiveInfinitySymbol_Set_Invalid() { - Assert.Throws("PositiveInfinitySymbol", () => new NumberFormatInfo().PositiveInfinitySymbol = null); + AssertExtensions.Throws("PositiveInfinitySymbol", () => new NumberFormatInfo().PositiveInfinitySymbol = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PositiveInfinitySymbol = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveSign.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveSign.cs index 544598fb01c2..ffc2e677cde3 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveSign.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoPositiveSign.cs @@ -36,7 +36,7 @@ public void PositiveSign_Set(string newPositiveSign) [Fact] public void PositiveSign_Set_Invalid() { - Assert.Throws("PositiveSign", () => new NumberFormatInfo().PositiveSign = null); + AssertExtensions.Throws("PositiveSign", () => new NumberFormatInfo().PositiveSign = null); Assert.Throws(() => NumberFormatInfo.InvariantInfo.PositiveSign = ""); } } diff --git a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoReadOnly.cs b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoReadOnly.cs index f0ce4406c6c5..50b89048d52c 100644 --- a/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoReadOnly.cs +++ b/src/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoReadOnly.cs @@ -37,7 +37,7 @@ public void ReadOnly_ReadOnlyFormat() [Fact] public void ReadOnly_Null_ThrowsArgumentNullException() { - Assert.Throws("nfi", () => NumberFormatInfo.ReadOnly(null)); + AssertExtensions.Throws("nfi", () => NumberFormatInfo.ReadOnly(null)); } } } diff --git a/src/System.Globalization/tests/RegionInfo/RegionInfoTests.Methods.cs b/src/System.Globalization/tests/RegionInfo/RegionInfoTests.Methods.cs index 1c0f48982558..d15aa5b8b03f 100644 --- a/src/System.Globalization/tests/RegionInfo/RegionInfoTests.Methods.cs +++ b/src/System.Globalization/tests/RegionInfo/RegionInfoTests.Methods.cs @@ -31,7 +31,7 @@ public void Ctor(string name, string expectedName, string windowsDesktopName) [Fact] public void Ctor_NullName_ThrowsArgumentNullException() { - Assert.Throws("name", () => new RegionInfo(null)); + AssertExtensions.Throws("name", () => new RegionInfo(null)); } [Fact] @@ -45,7 +45,7 @@ public void Ctor_EmptyName_ThrowsArgumentException() [InlineData("en")] public void Ctor_InvalidName_ThrowsArgumentException(string name) { - Assert.Throws("name", () => new RegionInfo(name)); + AssertExtensions.Throws("name", () => new RegionInfo(name)); } public static IEnumerable Equals_TestData() diff --git a/src/System.Globalization/tests/StringInfo/StringInfoCtor.cs b/src/System.Globalization/tests/StringInfo/StringInfoCtor.cs index f46093abe4a1..3d92d66abc77 100644 --- a/src/System.Globalization/tests/StringInfo/StringInfoCtor.cs +++ b/src/System.Globalization/tests/StringInfo/StringInfoCtor.cs @@ -43,7 +43,7 @@ public void Ctor_String(string value, int lengthInTextElements) [Fact] public void Ctor_String_Null_ThrowsArgumentNullException() { - Assert.Throws("String", () => new StringInfo(null)); + AssertExtensions.Throws("String", () => new StringInfo(null)); } } } diff --git a/src/System.Globalization/tests/StringInfo/StringInfoGetNextTextElement.cs b/src/System.Globalization/tests/StringInfo/StringInfoGetNextTextElement.cs index bd15108d1b1b..6235646c584c 100644 --- a/src/System.Globalization/tests/StringInfo/StringInfoGetNextTextElement.cs +++ b/src/System.Globalization/tests/StringInfo/StringInfoGetNextTextElement.cs @@ -49,11 +49,11 @@ public void GetNextTextElement(string str, int index, string expected) [Fact] public void GetNextTextElement_Invalid() { - Assert.Throws("str", () => StringInfo.GetNextTextElement(null)); // Str is null - Assert.Throws("str", () => StringInfo.GetNextTextElement(null, 0)); // Str is null + AssertExtensions.Throws("str", () => StringInfo.GetNextTextElement(null)); // Str is null + AssertExtensions.Throws("str", () => StringInfo.GetNextTextElement(null, 0)); // Str is null - Assert.Throws("index", () => StringInfo.GetNextTextElement("abc", -1)); // Index < 0 - Assert.Throws("index", () => StringInfo.GetNextTextElement("abc", 4)); // Index > str.Length + AssertExtensions.Throws("index", () => StringInfo.GetNextTextElement("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => StringInfo.GetNextTextElement("abc", 4)); // Index > str.Length } } } diff --git a/src/System.Globalization/tests/StringInfo/StringInfoGetTextElementEnumerator.cs b/src/System.Globalization/tests/StringInfo/StringInfoGetTextElementEnumerator.cs index 4a42354333e8..fb40fbf61739 100644 --- a/src/System.Globalization/tests/StringInfo/StringInfoGetTextElementEnumerator.cs +++ b/src/System.Globalization/tests/StringInfo/StringInfoGetTextElementEnumerator.cs @@ -58,11 +58,11 @@ public void GetTextElementEnumerator(string str, int index, string[] expected) [Fact] public void GetTextElementEnumerator_Invalid() { - Assert.Throws("str", () => StringInfo.GetTextElementEnumerator(null)); // Str is null - Assert.Throws("str", () => StringInfo.GetTextElementEnumerator(null, 0)); // Str is null + AssertExtensions.Throws("str", () => StringInfo.GetTextElementEnumerator(null)); // Str is null + AssertExtensions.Throws("str", () => StringInfo.GetTextElementEnumerator(null, 0)); // Str is null - Assert.Throws("index", () => StringInfo.GetTextElementEnumerator("abc", -1)); // Index < 0 - Assert.Throws("index", () => StringInfo.GetTextElementEnumerator("abc", 4)); // Index > str.Length + AssertExtensions.Throws("index", () => StringInfo.GetTextElementEnumerator("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => StringInfo.GetTextElementEnumerator("abc", 4)); // Index > str.Length } } } diff --git a/src/System.Globalization/tests/StringInfo/StringInfoParseCombiningCharacters.cs b/src/System.Globalization/tests/StringInfo/StringInfoParseCombiningCharacters.cs index ec673d4154ba..81ddc8771485 100644 --- a/src/System.Globalization/tests/StringInfo/StringInfoParseCombiningCharacters.cs +++ b/src/System.Globalization/tests/StringInfo/StringInfoParseCombiningCharacters.cs @@ -45,7 +45,7 @@ public void ParseCombiningCharacters(string str, int[] expected) [Fact] public void ParseCombiningCharacters_Null_ThrowsArgumentNullException() { - Assert.Throws("str", () => StringInfo.ParseCombiningCharacters(null)); // Str is null + AssertExtensions.Throws("str", () => StringInfo.ParseCombiningCharacters(null)); // Str is null } } } diff --git a/src/System.Globalization/tests/StringInfo/StringInfoString.cs b/src/System.Globalization/tests/StringInfo/StringInfoString.cs index 768d89531e93..a71b1f647332 100644 --- a/src/System.Globalization/tests/StringInfo/StringInfoString.cs +++ b/src/System.Globalization/tests/StringInfo/StringInfoString.cs @@ -22,7 +22,7 @@ public void String_Set(string value) [Fact] public void String_Set_Invalid() { - Assert.Throws("String", () => new StringInfo().String = null); + AssertExtensions.Throws("String", () => new StringInfo().String = null); } } } diff --git a/src/System.Globalization/tests/TextInfo/TextInfoListSeparator.cs b/src/System.Globalization/tests/TextInfo/TextInfoListSeparator.cs index 34d31819292b..271257210f19 100644 --- a/src/System.Globalization/tests/TextInfo/TextInfoListSeparator.cs +++ b/src/System.Globalization/tests/TextInfo/TextInfoListSeparator.cs @@ -29,7 +29,7 @@ public void ListSeparator_Set(string newListSeparator) public void ListSeparator_Set_Invalid() { Assert.Throws(() => CultureInfo.InvariantCulture.TextInfo.ListSeparator = ""); - Assert.Throws("value", () => new CultureInfo("en-US").TextInfo.ListSeparator = null); + AssertExtensions.Throws("value", () => new CultureInfo("en-US").TextInfo.ListSeparator = null); } } } diff --git a/src/System.Globalization/tests/TextInfo/TextInfoTests.cs b/src/System.Globalization/tests/TextInfo/TextInfoTests.cs index 59a06c4d14d3..278109af0fcc 100644 --- a/src/System.Globalization/tests/TextInfo/TextInfoTests.cs +++ b/src/System.Globalization/tests/TextInfo/TextInfoTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -58,7 +58,7 @@ public void ToTitleCaseTest() Assert.Equal("The Return Of Sherlock Holmes", ti.ToTitleCase("The Return of Sherlock Holmes")); Assert.Equal("UNICEF And Children", ti.ToTitleCase("UNICEF and children")); - Assert.Throws("str", () => ti.ToTitleCase(null)); + AssertExtensions.Throws("str", () => ti.ToTitleCase(null)); } public static IEnumerable DutchTitleCaseInfo_TestData() diff --git a/src/System.Globalization/tests/TextInfo/TextInfoToLower.cs b/src/System.Globalization/tests/TextInfo/TextInfoToLower.cs index 26cd6c2618c3..e63bd9f982b1 100644 --- a/src/System.Globalization/tests/TextInfo/TextInfoToLower.cs +++ b/src/System.Globalization/tests/TextInfo/TextInfoToLower.cs @@ -149,7 +149,7 @@ public void ToLower_InvalidSurrogates() [InlineData("fr")] public void ToLower_Null_ThrowsArgumentNullException(string cultureName) { - Assert.Throws("str", () => new CultureInfo(cultureName).TextInfo.ToLower(null)); + AssertExtensions.Throws("str", () => new CultureInfo(cultureName).TextInfo.ToLower(null)); } } } diff --git a/src/System.Globalization/tests/TextInfo/TextInfoToUpper.cs b/src/System.Globalization/tests/TextInfo/TextInfoToUpper.cs index 7922ee4e74f9..ea165f9fac9a 100644 --- a/src/System.Globalization/tests/TextInfo/TextInfoToUpper.cs +++ b/src/System.Globalization/tests/TextInfo/TextInfoToUpper.cs @@ -157,7 +157,7 @@ public void ToUpper_InvalidSurrogates() [InlineData("fr")] public void ToUpper_Null_ThrowsArgumentNullException(string cultureName) { - Assert.Throws("str", () => new CultureInfo(cultureName).TextInfo.ToUpper(null)); + AssertExtensions.Throws("str", () => new CultureInfo(cultureName).TextInfo.ToUpper(null)); } } } diff --git a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj index e04e193e8b51..9bdfef74afa4 100644 --- a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj +++ b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj @@ -12,6 +12,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\FileCleanupTestBase.cs diff --git a/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs b/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs index 8cb3897a4663..2c6f0865a77a 100644 --- a/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs +++ b/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; @@ -85,7 +86,7 @@ public void ExtractToDirectoryNormal(string file, string folder) [Fact] public void ExtractToDirectoryNull() { - Assert.Throws("sourceArchiveFileName", () => ZipFile.ExtractToDirectory(null, GetTestFilePath())); + AssertExtensions.Throws("sourceArchiveFileName", () => ZipFile.ExtractToDirectory(null, GetTestFilePath())); } [Fact] diff --git a/src/System.IO.Compression/tests/DeflateStreamTests.cs b/src/System.IO.Compression/tests/DeflateStreamTests.cs index 85aac5be6d77..8f057117d697 100644 --- a/src/System.IO.Compression/tests/DeflateStreamTests.cs +++ b/src/System.IO.Compression/tests/DeflateStreamTests.cs @@ -408,8 +408,8 @@ public void CopyToAsyncArgumentValidation() { using (DeflateStream ds = new DeflateStream(new MemoryStream(), CompressionMode.Decompress)) { - Assert.Throws("destination", () => { ds.CopyToAsync(null); }); - Assert.Throws("bufferSize", () => { ds.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("destination", () => { ds.CopyToAsync(null); }); + AssertExtensions.Throws("bufferSize", () => { ds.CopyToAsync(new MemoryStream(), 0); }); Assert.Throws(() => { ds.CopyToAsync(new MemoryStream(new byte[1], writable: false)); }); ds.Dispose(); Assert.Throws(() => { ds.CopyToAsync(new MemoryStream()); }); @@ -863,4 +863,4 @@ public override async Task WriteAsync(byte[] array, int offset, int count, Cance await base.WriteAsync(array, offset, count, cancellationToken); } } -} \ No newline at end of file +} diff --git a/src/System.IO.Compression/tests/GZipStreamTests.cs b/src/System.IO.Compression/tests/GZipStreamTests.cs index b29cd571c211..990d36aabca3 100644 --- a/src/System.IO.Compression/tests/GZipStreamTests.cs +++ b/src/System.IO.Compression/tests/GZipStreamTests.cs @@ -217,8 +217,8 @@ public void CopyToAsyncArgumentValidation() { using (GZipStream gs = new GZipStream(new MemoryStream(), CompressionMode.Decompress)) { - Assert.Throws("destination", () => { gs.CopyToAsync(null); }); - Assert.Throws("bufferSize", () => { gs.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("destination", () => { gs.CopyToAsync(null); }); + AssertExtensions.Throws("bufferSize", () => { gs.CopyToAsync(new MemoryStream(), 0); }); Assert.Throws(() => { gs.CopyToAsync(new MemoryStream(new byte[1], writable: false)); }); gs.Dispose(); Assert.Throws(() => { gs.CopyToAsync(new MemoryStream()); }); diff --git a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj index 9ada41dfe64e..497e5b7735a0 100644 --- a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj +++ b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj @@ -20,6 +20,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\Compression\CRC.cs diff --git a/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs b/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs index 2d98b2c6ab5e..5abcbcc15a5e 100644 --- a/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs +++ b/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Security.AccessControl; using Xunit; @@ -105,7 +106,7 @@ public void SetAccessControl_DirectoryInfo_DirectorySecurity_InvalidArguments() using (var directory = new TempDirectory()) { DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path); - Assert.Throws("directorySecurity", () => directoryInfo.SetAccessControl((DirectorySecurity) null)); + AssertExtensions.Throws("directorySecurity", () => directoryInfo.SetAccessControl((DirectorySecurity) null)); } } @@ -128,7 +129,7 @@ public void SetAccessControl_FileInfo_FileSecurity_InvalidArguments() using (var file = new TempFile(Path.Combine(directory.Path, "file.txt"))) { FileInfo fileInfo = new FileInfo(file.Path); - Assert.Throws("fileSecurity", () => fileInfo.SetAccessControl((FileSecurity) null)); + AssertExtensions.Throws("fileSecurity", () => fileInfo.SetAccessControl((FileSecurity) null)); } } @@ -151,4 +152,4 @@ public void SetAccessControl_FileStream_FileSecurity_InvalidArguments() Assert.Throws(() => FileSystemAclExtensions.SetAccessControl((FileStream)null, (FileSecurity)null)); } } -} \ No newline at end of file +} diff --git a/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj b/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj index 325365fe0033..c494ef4b7e93 100644 --- a/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj +++ b/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\TempFile.cs diff --git a/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs b/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs index 2ac34c579df9..8d58676005f0 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs +++ b/src/System.IO.FileSystem.DriveInfo/tests/DriveInfo.Unix.Tests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Linq; using Xunit; @@ -15,9 +16,9 @@ public void TestConstructor() { Assert.All( new[] { "", "\0", "\0/" }, - driveName => Assert.Throws("driveName", () => { new DriveInfo(driveName); })); + driveName => AssertExtensions.Throws("driveName", () => { new DriveInfo(driveName); })); - Assert.Throws("driveName", () => { new DriveInfo(null); }); + AssertExtensions.Throws("driveName", () => { new DriveInfo(null); }); Assert.Equal("/", new DriveInfo("/").Name); } diff --git a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj index 4725ea775f48..cb603cc0ef5e 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj +++ b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs b/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs index ed6cddd37641..637ee15fd74d 100644 --- a/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs +++ b/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs @@ -97,11 +97,11 @@ public void FileSystemWatcher_ctor_NullStrings() using (var testDirectory = new TempDirectory(GetTestFilePath())) { // Null filter - Assert.Throws("filter", () => new FileSystemWatcher(testDirectory.Path, null)); + AssertExtensions.Throws("filter", () => new FileSystemWatcher(testDirectory.Path, null)); // Null path - Assert.Throws("path", () => new FileSystemWatcher(null)); - Assert.Throws("path", () => new FileSystemWatcher(null, "*")); + AssertExtensions.Throws("path", () => new FileSystemWatcher(null)); + AssertExtensions.Throws("path", () => new FileSystemWatcher(null, "*")); } } @@ -112,12 +112,12 @@ public void FileSystemWatcher_ctor_InvalidStrings() using (var testDirectory = new TempDirectory(GetTestFilePath())) { // Empty path - Assert.Throws("path", () => new FileSystemWatcher(string.Empty)); - Assert.Throws("path", () => new FileSystemWatcher(string.Empty, "*")); + AssertExtensions.Throws("path", () => new FileSystemWatcher(string.Empty)); + AssertExtensions.Throws("path", () => new FileSystemWatcher(string.Empty, "*")); // Invalid directory - Assert.Throws("path", () => new FileSystemWatcher(GetTestFilePath())); - Assert.Throws("path", () => new FileSystemWatcher(GetTestFilePath(), "*")); + AssertExtensions.Throws("path", () => new FileSystemWatcher(GetTestFilePath())); + AssertExtensions.Throws("path", () => new FileSystemWatcher(GetTestFilePath(), "*")); } } diff --git a/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj b/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj index a01b977a705b..c97af90ff29c 100644 --- a/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj +++ b/src/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj @@ -37,6 +37,9 @@ Component + + Common\System\AssertExtensions.cs + Common\System\IO\FileCleanupTestBase.cs diff --git a/src/System.IO.FileSystem/tests/File/EncryptDecrypt.cs b/src/System.IO.FileSystem/tests/File/EncryptDecrypt.cs index ad676e38a8f9..2881495f345b 100644 --- a/src/System.IO.FileSystem/tests/File/EncryptDecrypt.cs +++ b/src/System.IO.FileSystem/tests/File/EncryptDecrypt.cs @@ -11,8 +11,8 @@ public class EncryptDecrypt : FileSystemTest [Fact] public static void NullArg_ThrowsException() { - Assert.Throws("path", () => File.Encrypt(null)); - Assert.Throws("path", () => File.Decrypt(null)); + AssertExtensions.Throws("path", () => File.Encrypt(null)); + AssertExtensions.Throws("path", () => File.Decrypt(null)); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] diff --git a/src/System.IO.FileSystem/tests/File/Replace.cs b/src/System.IO.FileSystem/tests/File/Replace.cs index b451d5b42822..3bc374a63423 100644 --- a/src/System.IO.FileSystem/tests/File/Replace.cs +++ b/src/System.IO.FileSystem/tests/File/Replace.cs @@ -27,8 +27,8 @@ public virtual void Replace(string source, string dest, string destBackup, bool [Fact] public void NullFileName() { - Assert.Throws("sourceFileName", () => File.Replace(null, "", "")); - Assert.Throws("destinationFileName", () => File.Replace("", null, "")); + AssertExtensions.Throws("sourceFileName", () => File.Replace(null, "", "")); + AssertExtensions.Throws("destinationFileName", () => File.Replace("", null, "")); } [Fact] diff --git a/src/System.IO.FileSystem/tests/FileInfo/Replace.cs b/src/System.IO.FileSystem/tests/FileInfo/Replace.cs index ac7cb7a97196..0860fa4fb64c 100644 --- a/src/System.IO.FileSystem/tests/FileInfo/Replace.cs +++ b/src/System.IO.FileSystem/tests/FileInfo/Replace.cs @@ -12,7 +12,7 @@ public class FileInfo_Replace : FileSystemTest public void Null_FileName() { string testFile = GetTestFilePath(); - Assert.Throws("destinationFileName", () => Replace(testFile, null, "")); + AssertExtensions.Throws("destinationFileName", () => Replace(testFile, null, "")); } [Fact] diff --git a/src/System.IO.FileSystem/tests/FileStream/BeginRead.cs b/src/System.IO.FileSystem/tests/FileStream/BeginRead.cs index e2a7f76b4911..b155e92b1396 100644 --- a/src/System.IO.FileSystem/tests/FileStream/BeginRead.cs +++ b/src/System.IO.FileSystem/tests/FileStream/BeginRead.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -15,7 +15,7 @@ public void BeginReadThrowsForNullArray() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("array", () => fs.BeginRead(null, 0, 0, null, null)); + AssertExtensions.Throws("array", () => fs.BeginRead(null, 0, 0, null, null)); } } @@ -24,7 +24,7 @@ public void BeginReadThrowsForNegativeOffset() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("offset", () => fs.BeginRead(new byte[0], -1, 0, null, null)); + AssertExtensions.Throws("offset", () => fs.BeginRead(new byte[0], -1, 0, null, null)); } } @@ -33,7 +33,7 @@ public void BeginReadThrowsForNegativeNumBytes() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("numBytes", () => fs.BeginRead(new byte[0], 0, -1, null, null)); + AssertExtensions.Throws("numBytes", () => fs.BeginRead(new byte[0], 0, -1, null, null)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/BeginWrite.cs b/src/System.IO.FileSystem/tests/FileStream/BeginWrite.cs index 68fd9d0ecb70..55b8f092df84 100644 --- a/src/System.IO.FileSystem/tests/FileStream/BeginWrite.cs +++ b/src/System.IO.FileSystem/tests/FileStream/BeginWrite.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -15,7 +15,7 @@ public void BeginWriteThrowsForNullArray() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("array", () => fs.BeginWrite(null, 0, 0, null, null)); + AssertExtensions.Throws("array", () => fs.BeginWrite(null, 0, 0, null, null)); } } @@ -24,7 +24,7 @@ public void BeginWriteThrowsForNegativeOffset() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("offset", () => fs.BeginWrite(new byte[0], -1, 0, null, null)); + AssertExtensions.Throws("offset", () => fs.BeginWrite(new byte[0], -1, 0, null, null)); } } @@ -33,7 +33,7 @@ public void BeginWriteThrowsForNegativeNumBytes() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.Write)) { - Assert.Throws("numBytes", () => fs.BeginWrite(new byte[0], 0, -1, null, null)); + AssertExtensions.Throws("numBytes", () => fs.BeginWrite(new byte[0], 0, -1, null, null)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/CopyToAsync.cs b/src/System.IO.FileSystem/tests/FileStream/CopyToAsync.cs index 53367fcdda7f..e21085b0f95f 100644 --- a/src/System.IO.FileSystem/tests/FileStream/CopyToAsync.cs +++ b/src/System.IO.FileSystem/tests/FileStream/CopyToAsync.cs @@ -21,8 +21,8 @@ public void InvalidArgs_Throws(bool useAsync) { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.None, 0x100, useAsync)) { - Assert.Throws("destination", () => { fs.CopyToAsync(null); }); - Assert.Throws("bufferSize", () => { fs.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("destination", () => { fs.CopyToAsync(null); }); + AssertExtensions.Throws("bufferSize", () => { fs.CopyToAsync(new MemoryStream(), 0); }); Assert.Throws(() => { fs.CopyToAsync(new MemoryStream(new byte[1], writable: false)); }); fs.Dispose(); Assert.Throws(() => { fs.CopyToAsync(new MemoryStream()); }); diff --git a/src/System.IO.FileSystem/tests/FileStream/EndRead.cs b/src/System.IO.FileSystem/tests/FileStream/EndRead.cs index b21370d52f2a..10034336e560 100644 --- a/src/System.IO.FileSystem/tests/FileStream/EndRead.cs +++ b/src/System.IO.FileSystem/tests/FileStream/EndRead.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -15,7 +15,7 @@ public void EndReadThrowsForNullAsyncResult() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite)) { - Assert.Throws("asyncResult", () => fs.EndRead(null)); + AssertExtensions.Throws("asyncResult", () => fs.EndRead(null)); } } } diff --git a/src/System.IO.FileSystem/tests/FileStream/EndWrite.cs b/src/System.IO.FileSystem/tests/FileStream/EndWrite.cs index 3539e25d7215..92f21ffc48e3 100644 --- a/src/System.IO.FileSystem/tests/FileStream/EndWrite.cs +++ b/src/System.IO.FileSystem/tests/FileStream/EndWrite.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -15,7 +15,7 @@ public void EndWriteThrowsForNullAsyncResult() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite)) { - Assert.Throws("asyncResult", () => fs.EndWrite(null)); + AssertExtensions.Throws("asyncResult", () => fs.EndWrite(null)); } } } diff --git a/src/System.IO.FileSystem/tests/FileStream/LockUnlock.cs b/src/System.IO.FileSystem/tests/FileStream/LockUnlock.cs index 76e50b0284b1..8a599aecb07c 100644 --- a/src/System.IO.FileSystem/tests/FileStream/LockUnlock.cs +++ b/src/System.IO.FileSystem/tests/FileStream/LockUnlock.cs @@ -17,13 +17,13 @@ public void InvalidArgs_Throws() using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { - Assert.Throws("position", () => fs.Lock(-1, 1)); - Assert.Throws("position", () => fs.Lock(-1, -1)); - Assert.Throws("length", () => fs.Lock(0, -1)); + AssertExtensions.Throws("position", () => fs.Lock(-1, 1)); + AssertExtensions.Throws("position", () => fs.Lock(-1, -1)); + AssertExtensions.Throws("length", () => fs.Lock(0, -1)); - Assert.Throws("position", () => fs.Unlock(-1, 1)); - Assert.Throws("position", () => fs.Unlock(-1, -1)); - Assert.Throws("length", () => fs.Unlock(0, -1)); + AssertExtensions.Throws("position", () => fs.Unlock(-1, 1)); + AssertExtensions.Throws("position", () => fs.Unlock(-1, -1)); + AssertExtensions.Throws("length", () => fs.Unlock(0, -1)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/Position.cs b/src/System.IO.FileSystem/tests/FileStream/Position.cs index f0c63ef0acc2..7ad865964b4c 100644 --- a/src/System.IO.FileSystem/tests/FileStream/Position.cs +++ b/src/System.IO.FileSystem/tests/FileStream/Position.cs @@ -37,8 +37,8 @@ public void SetPositionInvalidThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("value", () => fs.Position = -1); - Assert.Throws("value", () => fs.Position = long.MinValue); + AssertExtensions.Throws("value", () => fs.Position = -1); + AssertExtensions.Throws("value", () => fs.Position = long.MinValue); } } @@ -52,7 +52,7 @@ public void SetPositionDisposedThrows() // no fast path Assert.Throws(() => fs.Position = fs.Position); // parameter checking happens first - Assert.Throws("value", () => fs.Position = -1); + AssertExtensions.Throws("value", () => fs.Position = -1); } } @@ -65,7 +65,7 @@ public void SetPositionUnseekableThrows() // no fast path Assert.Throws(() => fs.Position = fs.Position); // parameter checking happens first - Assert.Throws("value", () => fs.Position = -1); + AssertExtensions.Throws("value", () => fs.Position = -1); // dispose checking happens first fs.Dispose(); Assert.Throws(() => fs.Position = 1); diff --git a/src/System.IO.FileSystem/tests/FileStream/Read.cs b/src/System.IO.FileSystem/tests/FileStream/Read.cs index ef749dff34f0..a956a05c0ea7 100644 --- a/src/System.IO.FileSystem/tests/FileStream/Read.cs +++ b/src/System.IO.FileSystem/tests/FileStream/Read.cs @@ -16,7 +16,7 @@ public void NullArrayThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("array", () => fs.Read(null, 0, 1)); + AssertExtensions.Throws("array", () => fs.Read(null, 0, 1)); } } @@ -32,10 +32,10 @@ public void NegativeOffsetThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("offset", () => fs.Read(new byte[1], -1, 1)); + AssertExtensions.Throws("offset", () => fs.Read(new byte[1], -1, 1)); // array is checked first - Assert.Throws("array", () => fs.Read(null, -1, 1)); + AssertExtensions.Throws("array", () => fs.Read(null, -1, 1)); } } @@ -44,13 +44,13 @@ public void NegativeCountThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("count", () => fs.Read(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Read(new byte[1], 0, -1)); // offset is checked before count - Assert.Throws("offset", () => fs.Read(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Read(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Read(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Read(null, -1, -1)); } } @@ -91,13 +91,13 @@ public void ReadDisposedThrows() Assert.Throws(null, () => fs.Read(new byte[2], 1, 2)); // count is checked prior - Assert.Throws("count", () => fs.Read(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Read(new byte[1], 0, -1)); // offset is checked prior - Assert.Throws("offset", () => fs.Read(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Read(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Read(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Read(null, -1, -1)); } } @@ -116,13 +116,13 @@ public void WriteOnlyThrows() Assert.Throws(null, () => fs.Read(new byte[2], 1, 2)); // count is checked prior - Assert.Throws("count", () => fs.Read(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Read(new byte[1], 0, -1)); // offset is checked prior - Assert.Throws("offset", () => fs.Read(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Read(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Read(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Read(null, -1, -1)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/ReadAsync.cs b/src/System.IO.FileSystem/tests/FileStream/ReadAsync.cs index 5ec7bb37f915..c9fad0ab5bc2 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ReadAsync.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ReadAsync.cs @@ -18,7 +18,7 @@ public void NullBufferThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, 0, 1))); } } @@ -28,11 +28,11 @@ public void NegativeOffsetThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], -1, 1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, -1, 1))); } } @@ -42,15 +42,15 @@ public void NegativeCountThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], 0, -1))); // offset is checked before count - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, -1, -1))); } } @@ -101,15 +101,15 @@ public void ReadAsyncDisposedThrows() FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[2], 1, 2))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], 0, -1))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, -1, -1))); } } @@ -132,15 +132,15 @@ public void WriteOnlyThrows() FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[2], 1, 2))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], 0, -1))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, -1, -1))); } } @@ -171,15 +171,15 @@ public void CancelledTokenFastPath() FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[2], 1, 2, cancelledToken))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], 0, -1, cancelledToken))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.ReadAsync(new byte[1], -1, -1, cancelledToken))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.ReadAsync(null, -1, -1, cancelledToken))); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/SetLength.cs b/src/System.IO.FileSystem/tests/FileStream/SetLength.cs index 323c34185f69..87b81fcc6283 100644 --- a/src/System.IO.FileSystem/tests/FileStream/SetLength.cs +++ b/src/System.IO.FileSystem/tests/FileStream/SetLength.cs @@ -15,8 +15,8 @@ public void InvalidLengths() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("value", () => fs.SetLength(-1)); - Assert.Throws("value", () => fs.SetLength(long.MinValue)); + AssertExtensions.Throws("value", () => fs.SetLength(-1)); + AssertExtensions.Throws("value", () => fs.SetLength(long.MinValue)); } } @@ -29,7 +29,7 @@ public void SetLengthDisposedThrows() fs.Dispose(); Assert.Throws(() => fs.SetLength(0)); // parameter checking happens first - Assert.Throws("value", () => fs.SetLength(-1)); + AssertExtensions.Throws("value", () => fs.SetLength(-1)); } } @@ -49,7 +49,7 @@ public void SetLengthAccessNoWriteThrows() // no change should still throw Assert.Throws(() => fs.SetLength(fs.Length)); // parameter checking happens first - Assert.Throws("value", () => fs.SetLength(-1)); + AssertExtensions.Throws("value", () => fs.SetLength(-1)); // disposed check happens first fs.Dispose(); Assert.Throws(() => fs.SetLength(0)); diff --git a/src/System.IO.FileSystem/tests/FileStream/Write.cs b/src/System.IO.FileSystem/tests/FileStream/Write.cs index 32003361fa7e..88c4afae0b0c 100644 --- a/src/System.IO.FileSystem/tests/FileStream/Write.cs +++ b/src/System.IO.FileSystem/tests/FileStream/Write.cs @@ -16,7 +16,7 @@ public void NullArrayThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("array", () => fs.Write(null, 0, 1)); + AssertExtensions.Throws("array", () => fs.Write(null, 0, 1)); } } @@ -25,10 +25,10 @@ public void NegativeOffsetThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("offset", () => fs.Write(new byte[1], -1, 1)); + AssertExtensions.Throws("offset", () => fs.Write(new byte[1], -1, 1)); // array is checked first - Assert.Throws("array", () => fs.Write(null, -1, 1)); + AssertExtensions.Throws("array", () => fs.Write(null, -1, 1)); } } @@ -37,13 +37,13 @@ public void NegativeCountThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("count", () => fs.Write(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Write(new byte[1], 0, -1)); // offset is checked before count - Assert.Throws("offset", () => fs.Write(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Write(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Write(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Write(null, -1, -1)); } } @@ -84,13 +84,13 @@ public void WriteDisposedThrows() Assert.Throws(null, () => fs.Write(new byte[2], 1, 2)); // count is checked prior - Assert.Throws("count", () => fs.Write(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Write(new byte[1], 0, -1)); // offset is checked prior - Assert.Throws("offset", () => fs.Write(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Write(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Write(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Write(null, -1, -1)); } } @@ -115,13 +115,13 @@ public void ReadOnlyThrows() Assert.Throws(null, () => fs.Write(new byte[2], 1, 2)); // count is checked prior - Assert.Throws("count", () => fs.Write(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => fs.Write(new byte[1], 0, -1)); // offset is checked prior - Assert.Throws("offset", () => fs.Write(new byte[1], -1, -1)); + AssertExtensions.Throws("offset", () => fs.Write(new byte[1], -1, -1)); // array is checked first - Assert.Throws("array", () => fs.Write(null, -1, -1)); + AssertExtensions.Throws("array", () => fs.Write(null, -1, -1)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/WriteAsync.cs b/src/System.IO.FileSystem/tests/FileStream/WriteAsync.cs index ac15d198c118..067ed972387d 100644 --- a/src/System.IO.FileSystem/tests/FileStream/WriteAsync.cs +++ b/src/System.IO.FileSystem/tests/FileStream/WriteAsync.cs @@ -17,7 +17,7 @@ public void NullBufferThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, 0, 1))); } } @@ -27,11 +27,11 @@ public void NegativeOffsetThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], -1, 1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, -1, 1))); } } @@ -41,15 +41,15 @@ public void NegativeCountThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], 0, -1))); // offset is checked before count - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, -1, -1))); } } @@ -100,15 +100,15 @@ public void WriteAsyncDisposedThrows() FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[2], 1, 2))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], 0, -1))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, -1, -1))); } } @@ -135,15 +135,15 @@ public void ReadOnlyThrows() FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[2], 1, 2))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], 0, -1))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], -1, -1))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, -1, -1))); } } @@ -175,15 +175,15 @@ public void CancelledTokenFastPath() FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[2], 1, 2, cancelledToken))); // count is checked prior - Assert.Throws("count", () => + AssertExtensions.Throws("count", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], 0, -1, cancelledToken))); // offset is checked prior - Assert.Throws("offset", () => + AssertExtensions.Throws("offset", () => FSAssert.CompletesSynchronously(fs.WriteAsync(new byte[1], -1, -1, cancelledToken))); // buffer is checked first - Assert.Throws("buffer", () => + AssertExtensions.Throws("buffer", () => FSAssert.CompletesSynchronously(fs.WriteAsync(null, -1, -1, cancelledToken))); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa.cs index 75870ab9acd5..c7dc17cd6462 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa.cs @@ -19,7 +19,7 @@ protected virtual FileStream CreateFileStream(SafeFileHandle handle, FileAccess [Fact] public void InvalidHandleThrows() { - Assert.Throws("handle", () => CreateFileStream(new SafeFileHandle(new IntPtr(-1), true), FileAccess.Read)); + AssertExtensions.Throws("handle", () => CreateFileStream(new SafeFileHandle(new IntPtr(-1), true), FileAccess.Read)); } [Fact] @@ -27,7 +27,7 @@ public void InvalidAccessThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("access", () => CreateFileStream(fs.SafeFileHandle, ~FileAccess.Read)); + AssertExtensions.Throws("access", () => CreateFileStream(fs.SafeFileHandle, ~FileAccess.Read)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa_buffer.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa_buffer.cs index 9fd257a85020..6cb465fe2475 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa_buffer.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_sfh_fa_buffer.cs @@ -26,8 +26,8 @@ public void InvalidBufferSizeThrows() { using (FileStream fs = new FileStream(GetTestFilePath(), FileMode.Create)) { - Assert.Throws("bufferSize", () => CreateFileStream(fs.SafeFileHandle, FileAccess.Read, -1)); - Assert.Throws("bufferSize", () => CreateFileStream(fs.SafeFileHandle, FileAccess.Read, 0)); + AssertExtensions.Throws("bufferSize", () => CreateFileStream(fs.SafeFileHandle, FileAccess.Read, -1)); + AssertExtensions.Throws("bufferSize", () => CreateFileStream(fs.SafeFileHandle, FileAccess.Read, 0)); } } diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm.cs index 631da2a73a00..d8aa5b4c10d7 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm.cs @@ -36,7 +36,7 @@ public void DirectoryThrows() [Fact] public void InvalidModeThrows() { - Assert.Throws("mode", () => CreateFileStream(GetTestFilePath(), ~FileMode.Open)); + AssertExtensions.Throws("mode", () => CreateFileStream(GetTestFilePath(), ~FileMode.Open)); } [Fact] diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa.cs index f2a2619ecee5..64eaef509233 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa.cs @@ -24,7 +24,7 @@ protected virtual FileStream CreateFileStream(string path, FileMode mode, FileAc [Fact] public void InvalidAccessThrows() { - Assert.Throws("access", () => CreateFileStream(GetTestFilePath(), FileMode.Create, ~FileAccess.Read)); + AssertExtensions.Throws("access", () => CreateFileStream(GetTestFilePath(), FileMode.Create, ~FileAccess.Read)); } [Fact] diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs index 6160fe2701fb..6218ed4a0fa0 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs @@ -23,7 +23,7 @@ protected virtual FileStream CreateFileStream(string path, FileMode mode, FileAc [Fact] public void InvalidShareThrows() { - Assert.Throws("share", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, ~FileShare.None)); + AssertExtensions.Throws("share", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, ~FileShare.None)); } static readonly FileShare[] shares = diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer.cs index 366156e93dd7..cda98499fe09 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer.cs @@ -25,14 +25,14 @@ protected virtual FileStream CreateFileStream(string path, FileMode mode, FileAc [Fact] public void NegativeBufferSizeThrows() { - Assert.Throws("bufferSize", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, -1)); + AssertExtensions.Throws("bufferSize", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, -1)); } [Fact] public void ZeroBufferSizeThrows() { // Unfortunate pre-existing behavior of FileStream, we should look into enabling this sometime. - Assert.Throws("bufferSize", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, 0)); + AssertExtensions.Throws("bufferSize", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, 0)); } [Fact] diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer_fo.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer_fo.cs index 675bf7df5a16..4bec376401f4 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer_fo.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs_buffer_fo.cs @@ -23,7 +23,7 @@ protected virtual FileStream CreateFileStream(string path, FileMode mode, FileAc [Fact] public void InvalidFileOptionsThrow() { - Assert.Throws("options", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, c_DefaultBufferSize, ~FileOptions.None)); + AssertExtensions.Throws("options", () => CreateFileStream(GetTestFilePath(), FileMode.Create, FileAccess.ReadWrite, FileShare.Read, c_DefaultBufferSize, ~FileOptions.None)); } [ConditionalTheory(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsNanoServer))] diff --git a/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj b/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj index 414d2332278c..d51df2fa0f99 100644 --- a/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj +++ b/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj @@ -19,6 +19,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\TempDirectory.cs diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/CopyFileTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/CopyFileTests.cs index 9387a80f786d..105b958b7533 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/CopyFileTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/CopyFileTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -13,10 +13,10 @@ public void CopyFile_ThrowsArgumentNull() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceFileName", () => isf.CopyFile(null, "bar")); - Assert.Throws("sourceFileName", () => isf.CopyFile(null, "bar", true)); - Assert.Throws("destinationFileName", () => isf.CopyFile("foo", null)); - Assert.Throws("destinationFileName", () => isf.CopyFile("foo", null, true)); + AssertExtensions.Throws("sourceFileName", () => isf.CopyFile(null, "bar")); + AssertExtensions.Throws("sourceFileName", () => isf.CopyFile(null, "bar", true)); + AssertExtensions.Throws("destinationFileName", () => isf.CopyFile("foo", null)); + AssertExtensions.Throws("destinationFileName", () => isf.CopyFile("foo", null, true)); } } @@ -25,10 +25,10 @@ public void CopyFile_ThrowsArgumentException() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceFileName", () => isf.CopyFile(string.Empty, "bar")); - Assert.Throws("sourceFileName", () => isf.CopyFile(string.Empty, "bar", true)); - Assert.Throws("destinationFileName", () => isf.CopyFile("foo", string.Empty)); - Assert.Throws("destinationFileName", () => isf.CopyFile("foo", string.Empty, true)); + AssertExtensions.Throws("sourceFileName", () => isf.CopyFile(string.Empty, "bar")); + AssertExtensions.Throws("sourceFileName", () => isf.CopyFile(string.Empty, "bar", true)); + AssertExtensions.Throws("destinationFileName", () => isf.CopyFile("foo", string.Empty)); + AssertExtensions.Throws("destinationFileName", () => isf.CopyFile("foo", string.Empty, true)); } } diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs index 06d827ccb729..4b4e50dd6221 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -13,8 +13,8 @@ public void MoveDirectory_ThrowsArgumentNull() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceDirectoryName", () => isf.MoveDirectory(null, "bar")); - Assert.Throws("destinationDirectoryName", () => isf.MoveDirectory("foo", null)); + AssertExtensions.Throws("sourceDirectoryName", () => isf.MoveDirectory(null, "bar")); + AssertExtensions.Throws("destinationDirectoryName", () => isf.MoveDirectory("foo", null)); } } @@ -23,8 +23,8 @@ public void MoveDirectory_ThrowsArgumentException() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceDirectoryName", () => isf.MoveDirectory(string.Empty, "bar")); - Assert.Throws("destinationDirectoryName", () => isf.MoveDirectory("foo", string.Empty)); + AssertExtensions.Throws("sourceDirectoryName", () => isf.MoveDirectory(string.Empty, "bar")); + AssertExtensions.Throws("destinationDirectoryName", () => isf.MoveDirectory("foo", string.Empty)); } } diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveFileTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveFileTests.cs index db8e0e99474b..847802dd112e 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveFileTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveFileTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.IO.IsolatedStorage @@ -13,8 +14,8 @@ public void MoveFile_ThrowsArgumentNull() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceFileName", () => isf.MoveFile(null, "bar")); - Assert.Throws("destinationFileName", () => isf.MoveFile("foo", null)); + AssertExtensions.Throws("sourceFileName", () => isf.MoveFile(null, "bar")); + AssertExtensions.Throws("destinationFileName", () => isf.MoveFile("foo", null)); } } @@ -23,8 +24,8 @@ public void MoveFile_ThrowsArgumentException() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("sourceFileName", () => isf.MoveFile(string.Empty, "bar")); - Assert.Throws("destinationFileName", () => isf.MoveFile("foo", string.Empty)); + AssertExtensions.Throws("sourceFileName", () => isf.MoveFile(string.Empty, "bar")); + AssertExtensions.Throws("destinationFileName", () => isf.MoveFile("foo", string.Empty)); } } diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/OpenFileTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/OpenFileTests.cs index 083c5b8360ba..811a835a60ce 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/OpenFileTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/OpenFileTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -13,9 +13,9 @@ public void OpenFile_ThrowsArgumentNull() { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly()) { - Assert.Throws("path", () => isf.OpenFile(null, FileMode.Create)); - Assert.Throws("path", () => isf.OpenFile(null, FileMode.Create, FileAccess.ReadWrite)); - Assert.Throws("path", () => isf.OpenFile(null, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)); + AssertExtensions.Throws("path", () => isf.OpenFile(null, FileMode.Create)); + AssertExtensions.Throws("path", () => isf.OpenFile(null, FileMode.Create, FileAccess.ReadWrite)); + AssertExtensions.Throws("path", () => isf.OpenFile(null, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)); } } diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs index 48569e5e07a9..fb05e687790c 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs @@ -21,11 +21,11 @@ public class MemoryMappedFileTests_CreateFromFile : MemoryMappedFilesTestBase public void InvalidArguments_Path() { // null is an invalid path - Assert.Throws("path", () => MemoryMappedFile.CreateFromFile(null)); - Assert.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open)); - Assert.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName())); - Assert.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName(), 4096)); - Assert.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Read)); + AssertExtensions.Throws("path", () => MemoryMappedFile.CreateFromFile(null)); + AssertExtensions.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open)); + AssertExtensions.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName())); + AssertExtensions.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName(), 4096)); + AssertExtensions.Throws("path", () => MemoryMappedFile.CreateFromFile(null, FileMode.Open, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Read)); } /// @@ -35,7 +35,7 @@ public void InvalidArguments_Path() public void InvalidArguments_FileStream() { // null is an invalid stream - Assert.Throws("fileStream", () => MemoryMappedFile.CreateFromFile(null, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Read, HandleInheritability.None, true)); + AssertExtensions.Throws("fileStream", () => MemoryMappedFile.CreateFromFile(null, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Read, HandleInheritability.None, true)); } /// @@ -45,16 +45,16 @@ public void InvalidArguments_FileStream() public void InvalidArguments_Mode() { // FileMode out of range - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null, 4096)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null, 4096, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null, 4096)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), (FileMode)42, null, 4096, MemoryMappedFileAccess.ReadWrite)); // FileMode.Append never allowed - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null, 4096)); - Assert.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null, 4096, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null, 4096)); + AssertExtensions.Throws("mode", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Append, null, 4096, MemoryMappedFileAccess.ReadWrite)); // FileMode.CreateNew/Create/OpenOrCreate can't be used with default capacity, as the file will be empty Assert.Throws(() => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.CreateNew)); @@ -85,22 +85,22 @@ public void InvalidArguments_Mode_Truncate() public void InvalidArguments_Access() { // Out of range access values with a path - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(-2))); - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(42))); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(-2))); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(42))); // Write-only access is not allowed on maps (only on views) - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(GetTestFilePath(), FileMode.Open, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write)); // Test the same things, but with a FileStream instead of a path using (TempFile file = new TempFile(GetTestFilePath())) using (FileStream fs = File.Open(file.Path, FileMode.Open)) { // Out of range values with a stream - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(-2), HandleInheritability.None, true)); - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(42), HandleInheritability.None, true)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(-2), HandleInheritability.None, true)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, (MemoryMappedFileAccess)(42), HandleInheritability.None, true)); // Write-only access is not allowed - Assert.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write, HandleInheritability.None, true)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write, HandleInheritability.None, true)); } } @@ -260,11 +260,11 @@ public void InvalidArguments_Capacity() Assert.Throws(() => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 8192, MemoryMappedFileAccess.Read, HandleInheritability.None, true)); // Capacity can't be less than the file size (for such cases a view can be created with the smaller size) - Assert.Throws("capacity", () => MemoryMappedFile.CreateFromFile(fs, null, 1, MemoryMappedFileAccess.ReadWrite, HandleInheritability.None, true)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateFromFile(fs, null, 1, MemoryMappedFileAccess.ReadWrite, HandleInheritability.None, true)); } // Capacity can't be less than the file size - Assert.Throws("capacity", () => MemoryMappedFile.CreateFromFile(file.Path, FileMode.Open, CreateUniqueMapName(), 1, MemoryMappedFileAccess.Read)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateFromFile(file.Path, FileMode.Open, CreateUniqueMapName(), 1, MemoryMappedFileAccess.Read)); } } @@ -280,7 +280,7 @@ public void InvalidArguments_Inheritability(HandleInheritability inheritability) using (TempFile file = new TempFile(GetTestFilePath())) using (FileStream fs = File.Open(file.Path, FileMode.Open)) { - Assert.Throws("inheritability", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, inheritability, true)); + AssertExtensions.Throws("inheritability", () => MemoryMappedFile.CreateFromFile(fs, CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, inheritability, true)); } } diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateNew.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateNew.Tests.cs index f143a3bbb315..4cf7acb07571 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateNew.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateNew.Tests.cs @@ -34,9 +34,9 @@ public void InvalidArguments_MapName() [InlineData(-100)] // negative values don't make sense public void InvalidArguments_Capacity(int capacity) { - Assert.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity, MemoryMappedFileAccess.ReadWrite)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateNew(null, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); } /// @@ -48,8 +48,8 @@ public void InvalidArguments_Capacity(int capacity) public void InvalidArguments_Access(MemoryMappedFileAccess access) { // Out of range values - Assert.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, access)); - Assert.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, access, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, access)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, access, MemoryMappedFileOptions.None, HandleInheritability.None)); } /// @@ -59,7 +59,7 @@ public void InvalidArguments_Access(MemoryMappedFileAccess access) public void InvalidArguments_WriteAccess() { // Write-only access isn't allowed, as it'd be useless - Assert.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Write)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Write)); } /// @@ -70,7 +70,7 @@ public void InvalidArguments_WriteAccess() [InlineData((MemoryMappedFileOptions)(-2))] public void InvalidArguments_Options(MemoryMappedFileOptions options) { - Assert.Throws("options", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Read, options, HandleInheritability.None)); + AssertExtensions.Throws("options", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Read, options, HandleInheritability.None)); } /// @@ -81,7 +81,7 @@ public void InvalidArguments_Options(MemoryMappedFileOptions options) [InlineData((HandleInheritability)(-2))] public void InvalidArguments_Inheritability(HandleInheritability inheritability) { - Assert.Throws("inheritability", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Read, MemoryMappedFileOptions.None, inheritability)); + AssertExtensions.Throws("inheritability", () => MemoryMappedFile.CreateNew(null, 4096, MemoryMappedFileAccess.Read, MemoryMappedFileOptions.None, inheritability)); } /// @@ -93,7 +93,7 @@ public void TooLargeCapacity_Windows() { if (IntPtr.Size == 4) { - Assert.Throws("capacity", () => MemoryMappedFile.CreateNew(null, 1 + (long)uint.MaxValue)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateNew(null, 1 + (long)uint.MaxValue)); } else { diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateOrOpen.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateOrOpen.Tests.cs index da65c7e708c7..4f631f6cf9a0 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateOrOpen.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateOrOpen.Tests.cs @@ -16,9 +16,9 @@ public class MemoryMappedFileTests_CreateOrOpen : MemoryMappedFilesTestBase public void InvalidArguments_MapName() { // null is an invalid map name with CreateOrOpen (it's valid with CreateNew and CreateFromFile) - Assert.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096)); - Assert.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096, MemoryMappedFileAccess.ReadWrite)); - Assert.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096)); + AssertExtensions.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("mapName", () => MemoryMappedFile.CreateOrOpen(null, 4096, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); // Empty string is always an invalid map name Assert.Throws(() => MemoryMappedFile.CreateOrOpen(string.Empty, 4096)); @@ -47,9 +47,9 @@ public void MapNamesNotSupported_Unix(string mapName) [InlineData(-1)] // negative capacities don't make sense public void InvalidArguments_Capacity(long capacity) { - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity, MemoryMappedFileAccess.ReadWrite)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); } /// @@ -61,9 +61,9 @@ public void InvalidArguments_Capacity_TooLarge() // On 32-bit, values larger than uint.MaxValue aren't allowed if (IntPtr.Size == 4) { - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None)); } } @@ -75,8 +75,8 @@ public void InvalidArguments_Capacity_TooLarge() [InlineData((MemoryMappedFileAccess)(42))] public void InvalidArgument_Access(MemoryMappedFileAccess access) { - Assert.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, access)); - Assert.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, access, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, access)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, access, MemoryMappedFileOptions.None, HandleInheritability.None)); } /// @@ -87,7 +87,7 @@ public void InvalidArgument_Access(MemoryMappedFileAccess access) [InlineData((MemoryMappedFileOptions)(42))] public void InvalidArgument_Options(MemoryMappedFileOptions options) { - Assert.Throws("options", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, options, HandleInheritability.None)); + AssertExtensions.Throws("options", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, options, HandleInheritability.None)); } /// @@ -98,7 +98,7 @@ public void InvalidArgument_Options(MemoryMappedFileOptions options) [InlineData((HandleInheritability)(42))] public void InvalidArgument_Inheritability(HandleInheritability inheritability) { - Assert.Throws("inheritability", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, inheritability)); + AssertExtensions.Throws("inheritability", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, inheritability)); } /// @@ -256,8 +256,8 @@ public static IEnumerable MemberData_ValidArgumentCombinations( public void OpenWrite() { // Write-only access fails when the map doesn't exist - Assert.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write)); - Assert.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write, MemoryMappedFileOptions.None, HandleInheritability.None)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write)); + AssertExtensions.Throws("access", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 4096, MemoryMappedFileAccess.Write, MemoryMappedFileOptions.None, HandleInheritability.None)); // Write-only access works when the map does exist const int Capacity = 4096; @@ -278,7 +278,7 @@ public void TooLargeCapacity() { if (IntPtr.Size == 4) { - Assert.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue)); + AssertExtensions.Throws("capacity", () => MemoryMappedFile.CreateOrOpen(CreateUniqueMapName(), 1 + (long)uint.MaxValue)); } else { diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.OpenExisting.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.OpenExisting.Tests.cs index b6b267e6b4e1..ccbd84d3526b 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.OpenExisting.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.OpenExisting.Tests.cs @@ -16,7 +16,7 @@ public class MemoryMappedFileTests_OpenExisting : MemoryMappedFilesTestBase public void InvalidArguments_Name() { // null isn't valid when trying to OpenExistinga map - Assert.Throws("mapName", () => MemoryMappedFile.OpenExisting(null)); + AssertExtensions.Throws("mapName", () => MemoryMappedFile.OpenExisting(null)); // Empty is never a valid map name Assert.Throws(() => MemoryMappedFile.OpenExisting(string.Empty)); @@ -56,7 +56,7 @@ public void InvalidArguments_Name_NonExistent() public void InvalidArguments_Inheritability(HandleInheritability inheritability) { // Out of range values - Assert.Throws("inheritability", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), MemoryMappedFileRights.Read, inheritability)); + AssertExtensions.Throws("inheritability", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), MemoryMappedFileRights.Read, inheritability)); } /// @@ -66,8 +66,8 @@ public void InvalidArguments_Inheritability(HandleInheritability inheritability) public void InvalidArguments_Rights() { // Out of range values - Assert.Throws("desiredAccessRights", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), (MemoryMappedFileRights)0x800000)); - Assert.Throws("desiredAccessRights", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), (MemoryMappedFileRights)0x800000, HandleInheritability.None)); + AssertExtensions.Throws("desiredAccessRights", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), (MemoryMappedFileRights)0x800000)); + AssertExtensions.Throws("desiredAccessRights", () => MemoryMappedFile.OpenExisting(CreateUniqueMapName(), (MemoryMappedFileRights)0x800000, HandleInheritability.None)); } /// diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs index 9013e8e20762..25faaea82f91 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs @@ -26,16 +26,16 @@ public void InvalidArguments() using (mmf) { // Offset - Assert.Throws("offset", () => mmf.CreateViewAccessor(-1, mapLength)); - Assert.Throws("offset", () => mmf.CreateViewAccessor(-1, mapLength, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("offset", () => mmf.CreateViewAccessor(-1, mapLength)); + AssertExtensions.Throws("offset", () => mmf.CreateViewAccessor(-1, mapLength, MemoryMappedFileAccess.ReadWrite)); // Size - Assert.Throws("size", () => mmf.CreateViewAccessor(0, -1)); - Assert.Throws("size", () => mmf.CreateViewAccessor(0, -1, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("size", () => mmf.CreateViewAccessor(0, -1)); + AssertExtensions.Throws("size", () => mmf.CreateViewAccessor(0, -1, MemoryMappedFileAccess.ReadWrite)); if (IntPtr.Size == 4) { - Assert.Throws("size", () => mmf.CreateViewAccessor(0, 1 + (long)uint.MaxValue)); - Assert.Throws("size", () => mmf.CreateViewAccessor(0, 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("size", () => mmf.CreateViewAccessor(0, 1 + (long)uint.MaxValue)); + AssertExtensions.Throws("size", () => mmf.CreateViewAccessor(0, 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); } else { @@ -50,8 +50,8 @@ public void InvalidArguments() Assert.Throws(() => mmf.CreateViewAccessor(mapLength, 1, MemoryMappedFileAccess.ReadWrite)); // Access - Assert.Throws("access", () => mmf.CreateViewAccessor(0, mapLength, (MemoryMappedFileAccess)(-1))); - Assert.Throws("access", () => mmf.CreateViewAccessor(0, mapLength, (MemoryMappedFileAccess)(42))); + AssertExtensions.Throws("access", () => mmf.CreateViewAccessor(0, mapLength, (MemoryMappedFileAccess)(-1))); + AssertExtensions.Throws("access", () => mmf.CreateViewAccessor(0, mapLength, (MemoryMappedFileAccess)(42))); } } } @@ -210,63 +210,63 @@ public void AllReadWriteMethods(long offset, long size) // Failed reads and writes just at the border of the end. This triggers different exception types // for some types than when we're completely beyond the end. long beyondEnd = acc.Capacity + 1; - Assert.Throws("position", () => acc.ReadBoolean(beyondEnd - sizeof(bool))); - Assert.Throws("position", () => acc.ReadByte(beyondEnd - sizeof(byte))); - Assert.Throws("position", () => acc.ReadSByte(beyondEnd - sizeof(sbyte))); - Assert.Throws("position", () => acc.ReadChar(beyondEnd - sizeof(char))); - Assert.Throws("position", () => acc.ReadDecimal(beyondEnd - sizeof(decimal))); - Assert.Throws("position", () => acc.ReadDouble(beyondEnd - sizeof(double))); - Assert.Throws("position", () => acc.ReadInt16(beyondEnd - sizeof(short))); - Assert.Throws("position", () => acc.ReadInt32(beyondEnd - sizeof(int))); - Assert.Throws("position", () => acc.ReadInt64(beyondEnd - sizeof(long))); - Assert.Throws("position", () => acc.ReadSingle(beyondEnd - sizeof(float))); - Assert.Throws("position", () => acc.ReadUInt16(beyondEnd - sizeof(ushort))); - Assert.Throws("position", () => acc.ReadUInt32(beyondEnd - sizeof(uint))); - Assert.Throws("position", () => acc.ReadUInt64(beyondEnd - sizeof(ulong))); - - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(bool), false)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(byte), (byte)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(sbyte), (sbyte)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(char), 'c')); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(decimal), (decimal)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(double), (double)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(short), (short)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(int), (int)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(long), (long)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(float), (float)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(ushort), (ushort)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(uint), (uint)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(ulong), (ulong)0)); + AssertExtensions.Throws("position", () => acc.ReadBoolean(beyondEnd - sizeof(bool))); + AssertExtensions.Throws("position", () => acc.ReadByte(beyondEnd - sizeof(byte))); + AssertExtensions.Throws("position", () => acc.ReadSByte(beyondEnd - sizeof(sbyte))); + AssertExtensions.Throws("position", () => acc.ReadChar(beyondEnd - sizeof(char))); + AssertExtensions.Throws("position", () => acc.ReadDecimal(beyondEnd - sizeof(decimal))); + AssertExtensions.Throws("position", () => acc.ReadDouble(beyondEnd - sizeof(double))); + AssertExtensions.Throws("position", () => acc.ReadInt16(beyondEnd - sizeof(short))); + AssertExtensions.Throws("position", () => acc.ReadInt32(beyondEnd - sizeof(int))); + AssertExtensions.Throws("position", () => acc.ReadInt64(beyondEnd - sizeof(long))); + AssertExtensions.Throws("position", () => acc.ReadSingle(beyondEnd - sizeof(float))); + AssertExtensions.Throws("position", () => acc.ReadUInt16(beyondEnd - sizeof(ushort))); + AssertExtensions.Throws("position", () => acc.ReadUInt32(beyondEnd - sizeof(uint))); + AssertExtensions.Throws("position", () => acc.ReadUInt64(beyondEnd - sizeof(ulong))); + + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(bool), false)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(byte), (byte)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(sbyte), (sbyte)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(char), 'c')); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(decimal), (decimal)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(double), (double)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(short), (short)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(int), (int)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(long), (long)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(float), (float)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(ushort), (ushort)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(uint), (uint)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(ulong), (ulong)0)); // Failed reads and writes well past the end beyondEnd = acc.Capacity + 20; - Assert.Throws("position", () => acc.ReadBoolean(beyondEnd - sizeof(bool))); - Assert.Throws("position", () => acc.ReadByte(beyondEnd - sizeof(byte))); - Assert.Throws("position", () => acc.ReadSByte(beyondEnd - sizeof(sbyte))); - Assert.Throws("position", () => acc.ReadChar(beyondEnd - sizeof(char))); - Assert.Throws("position", () => acc.ReadDecimal(beyondEnd - sizeof(decimal))); - Assert.Throws("position", () => acc.ReadDouble(beyondEnd - sizeof(double))); - Assert.Throws("position", () => acc.ReadInt16(beyondEnd - sizeof(short))); - Assert.Throws("position", () => acc.ReadInt32(beyondEnd - sizeof(int))); - Assert.Throws("position", () => acc.ReadInt64(beyondEnd - sizeof(long))); - Assert.Throws("position", () => acc.ReadSingle(beyondEnd - sizeof(float))); - Assert.Throws("position", () => acc.ReadUInt16(beyondEnd - sizeof(ushort))); - Assert.Throws("position", () => acc.ReadUInt32(beyondEnd - sizeof(uint))); - Assert.Throws("position", () => acc.ReadUInt64(beyondEnd - sizeof(ulong))); - - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(bool), false)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(byte), (byte)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(sbyte), (sbyte)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(char), 'c')); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(decimal), (decimal)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(double), (double)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(short), (short)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(int), (int)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(long), (long)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(float), (float)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(ushort), (ushort)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(uint), (uint)0)); - Assert.Throws("position", () => acc.Write(beyondEnd - sizeof(ulong), (ulong)0)); + AssertExtensions.Throws("position", () => acc.ReadBoolean(beyondEnd - sizeof(bool))); + AssertExtensions.Throws("position", () => acc.ReadByte(beyondEnd - sizeof(byte))); + AssertExtensions.Throws("position", () => acc.ReadSByte(beyondEnd - sizeof(sbyte))); + AssertExtensions.Throws("position", () => acc.ReadChar(beyondEnd - sizeof(char))); + AssertExtensions.Throws("position", () => acc.ReadDecimal(beyondEnd - sizeof(decimal))); + AssertExtensions.Throws("position", () => acc.ReadDouble(beyondEnd - sizeof(double))); + AssertExtensions.Throws("position", () => acc.ReadInt16(beyondEnd - sizeof(short))); + AssertExtensions.Throws("position", () => acc.ReadInt32(beyondEnd - sizeof(int))); + AssertExtensions.Throws("position", () => acc.ReadInt64(beyondEnd - sizeof(long))); + AssertExtensions.Throws("position", () => acc.ReadSingle(beyondEnd - sizeof(float))); + AssertExtensions.Throws("position", () => acc.ReadUInt16(beyondEnd - sizeof(ushort))); + AssertExtensions.Throws("position", () => acc.ReadUInt32(beyondEnd - sizeof(uint))); + AssertExtensions.Throws("position", () => acc.ReadUInt64(beyondEnd - sizeof(ulong))); + + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(bool), false)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(byte), (byte)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(sbyte), (sbyte)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(char), 'c')); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(decimal), (decimal)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(double), (double)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(short), (short)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(int), (int)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(long), (long)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(float), (float)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(ushort), (ushort)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(uint), (uint)0)); + AssertExtensions.Throws("position", () => acc.Write(beyondEnd - sizeof(ulong), (ulong)0)); } /// Performs and verifies a read and write against an accessor. diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs index 2380bba7c423..d2b6906febc8 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs @@ -26,16 +26,16 @@ public void InvalidArguments() using (mmf) { // Offset - Assert.Throws("offset", () => mmf.CreateViewStream(-1, mapLength)); - Assert.Throws("offset", () => mmf.CreateViewStream(-1, mapLength, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("offset", () => mmf.CreateViewStream(-1, mapLength)); + AssertExtensions.Throws("offset", () => mmf.CreateViewStream(-1, mapLength, MemoryMappedFileAccess.ReadWrite)); // Size - Assert.Throws("size", () => mmf.CreateViewStream(0, -1)); - Assert.Throws("size", () => mmf.CreateViewStream(0, -1, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("size", () => mmf.CreateViewStream(0, -1)); + AssertExtensions.Throws("size", () => mmf.CreateViewStream(0, -1, MemoryMappedFileAccess.ReadWrite)); if (IntPtr.Size == 4) { - Assert.Throws("size", () => mmf.CreateViewStream(0, 1 + (long)uint.MaxValue)); - Assert.Throws("size", () => mmf.CreateViewStream(0, 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); + AssertExtensions.Throws("size", () => mmf.CreateViewStream(0, 1 + (long)uint.MaxValue)); + AssertExtensions.Throws("size", () => mmf.CreateViewStream(0, 1 + (long)uint.MaxValue, MemoryMappedFileAccess.ReadWrite)); } else { @@ -50,8 +50,8 @@ public void InvalidArguments() Assert.Throws(() => mmf.CreateViewStream(mapLength, 1, MemoryMappedFileAccess.ReadWrite)); // Access - Assert.Throws("access", () => mmf.CreateViewStream(0, mapLength, (MemoryMappedFileAccess)(-1))); - Assert.Throws("access", () => mmf.CreateViewStream(0, mapLength, (MemoryMappedFileAccess)(42))); + AssertExtensions.Throws("access", () => mmf.CreateViewStream(0, mapLength, (MemoryMappedFileAccess)(-1))); + AssertExtensions.Throws("access", () => mmf.CreateViewStream(0, mapLength, (MemoryMappedFileAccess)(42))); } } } diff --git a/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateClient.cs b/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateClient.cs index 09ba04ae5b3d..8f35e212d49b 100644 --- a/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateClient.cs +++ b/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateClient.cs @@ -15,9 +15,9 @@ public class AnonymousPipeTest_CreateClient : AnonymousPipeTestBase [Fact] public static void NullParameters_Throws_ArgumentNullException() { - Assert.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream((string)null)); - Assert.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(PipeDirection.Out, (string)null)); - Assert.Throws("safePipeHandle", () => new AnonymousPipeClientStream(PipeDirection.In, (SafePipeHandle)null)); + AssertExtensions.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream((string)null)); + AssertExtensions.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(PipeDirection.Out, (string)null)); + AssertExtensions.Throws("safePipeHandle", () => new AnonymousPipeClientStream(PipeDirection.In, (SafePipeHandle)null)); } [Fact] @@ -34,15 +34,15 @@ public static void CreateClientStreamFromStringHandle_Valid() public static void InvalidStringParameters_Throws_ArgumentException(string handle) { // Parameters must be nonnegative numeric characters - Assert.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(handle)); - Assert.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(PipeDirection.Out, handle)); + AssertExtensions.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(handle)); + AssertExtensions.Throws("pipeHandleAsString", () => new AnonymousPipeClientStream(PipeDirection.Out, handle)); } [Fact] public static void InvalidPipeHandle_Throws_ArgumentException() { SafePipeHandle pipeHandle = new SafePipeHandle(new IntPtr(-1), true); - Assert.Throws("safePipeHandle", () => new AnonymousPipeClientStream(PipeDirection.In, pipeHandle)); + AssertExtensions.Throws("safePipeHandle", () => new AnonymousPipeClientStream(PipeDirection.In, pipeHandle)); } [Fact] diff --git a/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateServer.cs b/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateServer.cs index 4310f765ed44..e486fa08ac28 100644 --- a/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateServer.cs +++ b/src/System.IO.Pipes/tests/AnonymousPipeTests/AnonymousPipeTest.CreateServer.cs @@ -35,8 +35,8 @@ public static void InOutPipeDirection_Throws_NotSupportedException() [InlineData(PipeDirection.Out, 999)] public static void ServerBadInheritabilityThrows(PipeDirection direction, HandleInheritability inheritability) { - Assert.Throws("inheritability", () => new AnonymousPipeServerStream(direction, inheritability)); - Assert.Throws("inheritability", () => new AnonymousPipeServerStream(direction, inheritability, 500)); + AssertExtensions.Throws("inheritability", () => new AnonymousPipeServerStream(direction, inheritability)); + AssertExtensions.Throws("inheritability", () => new AnonymousPipeServerStream(direction, inheritability, 500)); } [Theory] @@ -45,15 +45,15 @@ public static void ServerBadInheritabilityThrows(PipeDirection direction, Handle [InlineData(PipeDirection.InOut, -500)] //bufferSize will cause an exception before InOut will public static void InvalidBufferSize_Throws_ArgumentOutOfRangeException(PipeDirection direction, int bufferSize) { - Assert.Throws("bufferSize", () => new AnonymousPipeServerStream(direction, HandleInheritability.None, bufferSize)); + AssertExtensions.Throws("bufferSize", () => new AnonymousPipeServerStream(direction, HandleInheritability.None, bufferSize)); } [Fact] public static void InvalidPipeDirection_Throws_ArgumentOutOfRangeException() { - Assert.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, HandleInheritability.None, 500)); - Assert.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, (HandleInheritability)999, -500)); - Assert.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, HandleInheritability.None, - 500)); + AssertExtensions.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, HandleInheritability.None, 500)); + AssertExtensions.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, (HandleInheritability)999, -500)); + AssertExtensions.Throws("direction", () => new AnonymousPipeServerStream((PipeDirection)123, HandleInheritability.None, - 500)); } [Fact] @@ -61,14 +61,14 @@ public static void InvalidPipeHandle_Throws() { using (AnonymousPipeServerStream dummyserver = new AnonymousPipeServerStream(PipeDirection.Out)) { - Assert.Throws("serverSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, null, dummyserver.ClientSafePipeHandle)); + AssertExtensions.Throws("serverSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, null, dummyserver.ClientSafePipeHandle)); - Assert.Throws("clientSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, dummyserver.SafePipeHandle, null)); + AssertExtensions.Throws("clientSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, dummyserver.SafePipeHandle, null)); SafePipeHandle pipeHandle = new SafePipeHandle(new IntPtr(-1), true); - Assert.Throws("serverSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, pipeHandle, dummyserver.ClientSafePipeHandle)); + AssertExtensions.Throws("serverSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, pipeHandle, dummyserver.ClientSafePipeHandle)); - Assert.Throws("clientSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, dummyserver.SafePipeHandle, pipeHandle)); + AssertExtensions.Throws("clientSafePipeHandle", () => new AnonymousPipeServerStream(PipeDirection.Out, dummyserver.SafePipeHandle, pipeHandle)); } } diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateClient.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateClient.cs index 87b9baad3654..59cd725b9958 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateClient.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateClient.cs @@ -16,8 +16,8 @@ public class NamedPipeTest_CreateClient : NamedPipeTestBase [Fact] public static void NullPipeName_Throws_ArgumentNullException() { - Assert.Throws("pipeName", () => new NamedPipeClientStream(null)); - Assert.Throws("pipeName", () => new NamedPipeClientStream(".", null)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(null)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(".", null)); } [Fact] @@ -33,10 +33,10 @@ public static void EmptyStringPipeName_Throws_ArgumentException() [InlineData(PipeDirection.Out)] public static void NullServerName_Throws_ArgumentNullException(PipeDirection direction) { - Assert.Throws("serverName", () => new NamedPipeClientStream(null, "client1")); - Assert.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction)); - Assert.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction, PipeOptions.None)); - Assert.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction, PipeOptions.None, TokenImpersonationLevel.None)); + AssertExtensions.Throws("serverName", () => new NamedPipeClientStream(null, "client1")); + AssertExtensions.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction)); + AssertExtensions.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction, PipeOptions.None)); + AssertExtensions.Throws("serverName", () => new NamedPipeClientStream(null, "client1", direction, PipeOptions.None, TokenImpersonationLevel.None)); } [Theory] @@ -59,11 +59,11 @@ public static void ReservedPipeName_Throws_ArgumentOutOfRangeException(PipeDirec { const string serverName = "."; const string reservedName = "anonymous"; - Assert.Throws("pipeName", () => new NamedPipeClientStream(reservedName)); - Assert.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName)); - Assert.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction)); - Assert.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction, PipeOptions.None)); - Assert.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction, PipeOptions.None, TokenImpersonationLevel.Impersonation)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(reservedName)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction, PipeOptions.None)); + AssertExtensions.Throws("pipeName", () => new NamedPipeClientStream(serverName, reservedName, direction, PipeOptions.None, TokenImpersonationLevel.Impersonation)); } [Fact] @@ -81,9 +81,9 @@ public static void NotSupportedPipePath_Throws_PlatformNotSupportedException() [InlineData((PipeDirection)123)] public static void InvalidPipeDirection_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction)); - Assert.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None)); - Assert.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None, TokenImpersonationLevel.None)); + AssertExtensions.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction)); + AssertExtensions.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None)); + AssertExtensions.Throws("direction", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None, TokenImpersonationLevel.None)); } [Theory] @@ -92,8 +92,8 @@ public static void InvalidPipeDirection_Throws_ArgumentOutOfRangeException(PipeD [InlineData(PipeDirection.Out)] public static void InvalidPipeOptions_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("options", () => new NamedPipeClientStream(".", "client1", direction, (PipeOptions)255)); - Assert.Throws("options", () => new NamedPipeClientStream(".", "client1", direction, (PipeOptions)255, TokenImpersonationLevel.None)); + AssertExtensions.Throws("options", () => new NamedPipeClientStream(".", "client1", direction, (PipeOptions)255)); + AssertExtensions.Throws("options", () => new NamedPipeClientStream(".", "client1", direction, (PipeOptions)255, TokenImpersonationLevel.None)); } [Theory] @@ -102,7 +102,7 @@ public static void InvalidPipeOptions_Throws_ArgumentOutOfRangeException(PipeDir [InlineData(PipeDirection.Out)] public static void InvalidImpersonationLevel_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("impersonationLevel", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None, (TokenImpersonationLevel)999)); + AssertExtensions.Throws("impersonationLevel", () => new NamedPipeClientStream(".", "client1", direction, PipeOptions.None, (TokenImpersonationLevel)999)); } [Theory] @@ -111,7 +111,7 @@ public static void InvalidImpersonationLevel_Throws_ArgumentOutOfRangeException( [InlineData(PipeDirection.Out)] public static void NullHandle_Throws_ArgumentNullException(PipeDirection direction) { - Assert.Throws("safePipeHandle", () => new NamedPipeClientStream(direction, false, true, null)); + AssertExtensions.Throws("safePipeHandle", () => new NamedPipeClientStream(direction, false, true, null)); } [Theory] @@ -121,7 +121,7 @@ public static void NullHandle_Throws_ArgumentNullException(PipeDirection directi public static void InvalidHandle_Throws_ArgumentException(PipeDirection direction) { SafePipeHandle pipeHandle = new SafePipeHandle(new IntPtr(-1), true); - Assert.Throws("safePipeHandle", () => new NamedPipeClientStream(direction, false, true, pipeHandle)); + AssertExtensions.Throws("safePipeHandle", () => new NamedPipeClientStream(direction, false, true, pipeHandle)); } [Theory] diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateServer.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateServer.cs index db24f0faed0e..d76539e8ce37 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateServer.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.CreateServer.cs @@ -18,12 +18,12 @@ public class NamedPipeTest_CreateServer : NamedPipeTestBase [InlineData(PipeDirection.Out)] public static void NullPipeName_Throws_ArgumentNullException(PipeDirection direction) { - Assert.Throws("pipeName", () => new NamedPipeServerStream(null)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(null, direction)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 2)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte, PipeOptions.None)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null, direction)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 2)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte, PipeOptions.None)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(null, direction, 3, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); } [Theory] @@ -48,12 +48,12 @@ public static void ZeroLengthPipeName_Throws_ArgumentException(PipeDirection dir public static void ReservedPipeName_Throws_ArgumentOutOfRangeException(PipeDirection direction) { const string reservedName = "anonymous"; - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte, PipeOptions.None)); - Assert.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0));} + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte, PipeOptions.None)); + AssertExtensions.Throws("pipeName", () => new NamedPipeServerStream(reservedName, direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0));} [Fact] public static void Create_PipeName() @@ -83,11 +83,11 @@ public static void CreateWithNegativeOneServerInstances_DefaultsToMaxServerInsta [Fact] public static void InvalidPipeDirection_Throws_ArgumentOutOfRangeException() { - Assert.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123)); - Assert.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1)); - Assert.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1, PipeTransmissionMode.Byte)); - Assert.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1, PipeTransmissionMode.Byte, PipeOptions.None)); - Assert.Throws("direction", () => new NamedPipeServerStream("tempx", (PipeDirection)123, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); + AssertExtensions.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123)); + AssertExtensions.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1)); + AssertExtensions.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1, PipeTransmissionMode.Byte)); + AssertExtensions.Throws("direction", () => new NamedPipeServerStream("temp1", (PipeDirection)123, 1, PipeTransmissionMode.Byte, PipeOptions.None)); + AssertExtensions.Throws("direction", () => new NamedPipeServerStream("tempx", (PipeDirection)123, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); } [Theory] @@ -95,10 +95,10 @@ public static void InvalidPipeDirection_Throws_ArgumentOutOfRangeException() [InlineData(-2)] public static void InvalidServerInstances_Throws_ArgumentOutOfRangeException(int numberOfServerInstances) { - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.None)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.None)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", PipeDirection.In, numberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); } [Theory] @@ -107,10 +107,10 @@ public static void InvalidServerInstances_Throws_ArgumentOutOfRangeException(int [InlineData(PipeDirection.Out)] public static void ServerInstancesOver254_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte, PipeOptions.None)); - Assert.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte, PipeOptions.None)); + AssertExtensions.Throws("maxNumberOfServerInstances", () => new NamedPipeServerStream("temp3", direction, 255, PipeTransmissionMode.Byte, PipeOptions.None, 0, 0)); } [Theory] @@ -119,9 +119,9 @@ public static void ServerInstancesOver254_Throws_ArgumentOutOfRangeException(Pip [InlineData(PipeDirection.Out)] public static void InvalidTransmissionMode_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("transmissionMode", () => new NamedPipeServerStream("temp1", direction, 1, (PipeTransmissionMode)123)); - Assert.Throws("transmissionMode", () => new NamedPipeServerStream("temp1", direction, 1, (PipeTransmissionMode)123, PipeOptions.None)); - Assert.Throws("transmissionMode", () => new NamedPipeServerStream("tempx", direction, 1, (PipeTransmissionMode)123, PipeOptions.None, 0, 0)); + AssertExtensions.Throws("transmissionMode", () => new NamedPipeServerStream("temp1", direction, 1, (PipeTransmissionMode)123)); + AssertExtensions.Throws("transmissionMode", () => new NamedPipeServerStream("temp1", direction, 1, (PipeTransmissionMode)123, PipeOptions.None)); + AssertExtensions.Throws("transmissionMode", () => new NamedPipeServerStream("tempx", direction, 1, (PipeTransmissionMode)123, PipeOptions.None, 0, 0)); } [Theory] @@ -130,8 +130,8 @@ public static void InvalidTransmissionMode_Throws_ArgumentOutOfRangeException(Pi [InlineData(PipeDirection.Out)] public static void InvalidPipeOptions_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("options", () => new NamedPipeServerStream("temp1", direction, 1, PipeTransmissionMode.Byte, (PipeOptions)255)); - Assert.Throws("options", () => new NamedPipeServerStream("tempx", direction, 1, PipeTransmissionMode.Byte, (PipeOptions)255, 0, 0)); + AssertExtensions.Throws("options", () => new NamedPipeServerStream("temp1", direction, 1, PipeTransmissionMode.Byte, (PipeOptions)255)); + AssertExtensions.Throws("options", () => new NamedPipeServerStream("tempx", direction, 1, PipeTransmissionMode.Byte, (PipeOptions)255, 0, 0)); } [Theory] @@ -140,8 +140,8 @@ public static void InvalidPipeOptions_Throws_ArgumentOutOfRangeException(PipeDir [InlineData(PipeDirection.Out)] public static void InvalidBufferSize_Throws_ArgumentOutOfRangeException(PipeDirection direction) { - Assert.Throws("inBufferSize", () => new NamedPipeServerStream("temp2", direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, -1, 0)); - Assert.Throws("outBufferSize", () => new NamedPipeServerStream("temp2", direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, -123)); + AssertExtensions.Throws("inBufferSize", () => new NamedPipeServerStream("temp2", direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, -1, 0)); + AssertExtensions.Throws("outBufferSize", () => new NamedPipeServerStream("temp2", direction, 1, PipeTransmissionMode.Byte, PipeOptions.None, 0, -123)); } [Theory] @@ -150,7 +150,7 @@ public static void InvalidBufferSize_Throws_ArgumentOutOfRangeException(PipeDire [InlineData(PipeDirection.Out)] public static void NullPipeHandle_Throws_ArgumentNullException(PipeDirection direction) { - Assert.Throws("safePipeHandle", () => new NamedPipeServerStream(direction, false, true, null)); + AssertExtensions.Throws("safePipeHandle", () => new NamedPipeServerStream(direction, false, true, null)); } [Theory] @@ -160,7 +160,7 @@ public static void NullPipeHandle_Throws_ArgumentNullException(PipeDirection dir public static void InvalidPipeHandle_Throws_ArgumentException(PipeDirection direction) { SafePipeHandle pipeHandle = new SafePipeHandle(new IntPtr(-1), true); - Assert.Throws("safePipeHandle", () => new NamedPipeServerStream(direction, false, true, pipeHandle)); + AssertExtensions.Throws("safePipeHandle", () => new NamedPipeServerStream(direction, false, true, pipeHandle)); } [Theory] diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Specific.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Specific.cs index deb3dee55de6..0041006946ac 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Specific.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Specific.cs @@ -21,8 +21,8 @@ public void InvalidConnectTimeout_Throws_ArgumentOutOfRangeException() { using (NamedPipeClientStream client = new NamedPipeClientStream("client1")) { - Assert.Throws("timeout", () => client.Connect(-111)); - Assert.Throws("timeout", () => { client.ConnectAsync(-111); }); + AssertExtensions.Throws("timeout", () => client.Connect(-111)); + AssertExtensions.Throws("timeout", () => { client.ConnectAsync(-111); }); } } diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.cs index 87740a3dc452..3df84aaff29d 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.cs @@ -12,8 +12,8 @@ public class NamedPipeTest_netstandard17 : NamedPipeTestBase [Fact] public void NamedPipeClientStream_InvalidHandleInerhitability() { - Assert.Throws("inheritability", () => new NamedPipeClientStream("a", "b", PipeDirection.Out, 0, TokenImpersonationLevel.Delegation, HandleInheritability.None - 1)); - Assert.Throws("inheritability", () => new NamedPipeClientStream("a", "b", PipeDirection.Out, 0, TokenImpersonationLevel.Delegation, HandleInheritability.Inheritable + 1)); + AssertExtensions.Throws("inheritability", () => new NamedPipeClientStream("a", "b", PipeDirection.Out, 0, TokenImpersonationLevel.Delegation, HandleInheritability.None - 1)); + AssertExtensions.Throws("inheritability", () => new NamedPipeClientStream("a", "b", PipeDirection.Out, 0, TokenImpersonationLevel.Delegation, HandleInheritability.Inheritable + 1)); } } } diff --git a/src/System.IO.Pipes/tests/PipeTest.Read.cs b/src/System.IO.Pipes/tests/PipeTest.Read.cs index 35a53e42c2eb..3ebc12b141e4 100644 --- a/src/System.IO.Pipes/tests/PipeTest.Read.cs +++ b/src/System.IO.Pipes/tests/PipeTest.Read.cs @@ -26,16 +26,16 @@ public void ReadWithNullBuffer_Throws_ArgumentNullException() Assert.True(pipe.CanRead); // Null is an invalid Buffer - Assert.Throws("buffer", () => pipe.Read(null, 0, 1)); - Assert.Throws("buffer", () => { pipe.ReadAsync(null, 0, 1); }); + AssertExtensions.Throws("buffer", () => pipe.Read(null, 0, 1)); + AssertExtensions.Throws("buffer", () => { pipe.ReadAsync(null, 0, 1); }); // Buffer validity is checked before Offset - Assert.Throws("buffer", () => pipe.Read(null, -1, 1)); - Assert.Throws("buffer", () => { pipe.ReadAsync(null, -1, 1); }); + AssertExtensions.Throws("buffer", () => pipe.Read(null, -1, 1)); + AssertExtensions.Throws("buffer", () => { pipe.ReadAsync(null, -1, 1); }); // Buffer validity is checked before Count - Assert.Throws("buffer", () => pipe.Read(null, -1, -1)); - Assert.Throws("buffer", () => { pipe.ReadAsync(null, -1, -1); }); + AssertExtensions.Throws("buffer", () => pipe.Read(null, -1, -1)); + AssertExtensions.Throws("buffer", () => { pipe.ReadAsync(null, -1, -1); }); } } @@ -49,8 +49,8 @@ public void ReadWithNegativeOffset_Throws_ArgumentOutOfRangeException() Assert.True(pipe.CanRead); // Offset must be nonnegative - Assert.Throws("offset", () => pipe.Read(new byte[6], -1, 1)); - Assert.Throws("offset", () => { pipe.ReadAsync(new byte[4], -1, 1); }); + AssertExtensions.Throws("offset", () => pipe.Read(new byte[6], -1, 1)); + AssertExtensions.Throws("offset", () => { pipe.ReadAsync(new byte[4], -1, 1); }); } } @@ -64,7 +64,7 @@ public void ReadWithNegativeCount_Throws_ArgumentOutOfRangeException() Assert.True(pipe.CanRead); // Count must be nonnegative - Assert.Throws("count", () => pipe.Read(new byte[3], 0, -1)); + AssertExtensions.Throws("count", () => pipe.Read(new byte[3], 0, -1)); Assert.Throws("count", () => { pipe.ReadAsync(new byte[7], 0, -1); }); } } @@ -197,8 +197,8 @@ public void CopyToAsync_InvalidArgs_Throws() { using (ServerClientPair pair = CreateServerClientPair()) { - Assert.Throws("destination", () => { pair.readablePipe.CopyToAsync(null); }); - Assert.Throws("bufferSize", () => { pair.readablePipe.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("destination", () => { pair.readablePipe.CopyToAsync(null); }); + AssertExtensions.Throws("bufferSize", () => { pair.readablePipe.CopyToAsync(new MemoryStream(), 0); }); Assert.Throws(() => { pair.readablePipe.CopyToAsync(new MemoryStream(new byte[1], writable: false)); }); if (!pair.writeablePipe.CanRead) { diff --git a/src/System.IO.Pipes/tests/PipeTest.Write.cs b/src/System.IO.Pipes/tests/PipeTest.Write.cs index 466a94345da5..e9cd1d70f6f5 100644 --- a/src/System.IO.Pipes/tests/PipeTest.Write.cs +++ b/src/System.IO.Pipes/tests/PipeTest.Write.cs @@ -24,16 +24,16 @@ public void WriteWithNullBuffer_Throws_ArgumentNullException() Assert.True(pipe.CanWrite); // Null is an invalid Buffer - Assert.Throws("buffer", () => pipe.Write(null, 0, 1)); - Assert.Throws("buffer", () => { pipe.WriteAsync(null, 0, 1); }); + AssertExtensions.Throws("buffer", () => pipe.Write(null, 0, 1)); + AssertExtensions.Throws("buffer", () => { pipe.WriteAsync(null, 0, 1); }); // Buffer validity is checked before Offset - Assert.Throws("buffer", () => pipe.Write(null, -1, 1)); - Assert.Throws("buffer", () => { pipe.WriteAsync(null, -1, 1); }); + AssertExtensions.Throws("buffer", () => pipe.Write(null, -1, 1)); + AssertExtensions.Throws("buffer", () => { pipe.WriteAsync(null, -1, 1); }); // Buffer validity is checked before Count - Assert.Throws("buffer", () => pipe.Write(null, -1, -1)); - Assert.Throws("buffer", () => { pipe.WriteAsync(null, -1, -1); }); + AssertExtensions.Throws("buffer", () => pipe.Write(null, -1, -1)); + AssertExtensions.Throws("buffer", () => { pipe.WriteAsync(null, -1, -1); }); } } @@ -49,8 +49,8 @@ public void WriteWithNegativeOffset_Throws_ArgumentOutOfRangeException() Assert.False(pipe.CanSeek); // Offset must be nonnegative - Assert.Throws("offset", () => pipe.Write(new byte[5], -1, 1)); - Assert.Throws("offset", () => { pipe.WriteAsync(new byte[5], -1, 1); }); + AssertExtensions.Throws("offset", () => pipe.Write(new byte[5], -1, 1)); + AssertExtensions.Throws("offset", () => { pipe.WriteAsync(new byte[5], -1, 1); }); } } @@ -64,8 +64,8 @@ public void WriteWithNegativeCount_Throws_ArgumentOutOfRangeException() Assert.True(pipe.CanWrite); // Count must be nonnegative - Assert.Throws("count", () => pipe.Write(new byte[5], 0, -1)); - Assert.Throws("count", () => { pipe.WriteAsync(new byte[5], 0, -1); }); + AssertExtensions.Throws("count", () => pipe.Write(new byte[5], 0, -1)); + AssertExtensions.Throws("count", () => { pipe.WriteAsync(new byte[5], 0, -1); }); } } diff --git a/src/System.IO.Pipes/tests/System.IO.Pipes.Tests.csproj b/src/System.IO.Pipes/tests/System.IO.Pipes.Tests.csproj index 7a8fbbf27fbf..ca999baa2f0b 100644 --- a/src/System.IO.Pipes/tests/System.IO.Pipes.Tests.csproj +++ b/src/System.IO.Pipes/tests/System.IO.Pipes.Tests.csproj @@ -36,6 +36,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\RemoteExecutorTestBase.cs diff --git a/src/System.IO.UnmanagedMemoryStream/tests/System.IO.UnmanagedMemoryStream.Tests.csproj b/src/System.IO.UnmanagedMemoryStream/tests/System.IO.UnmanagedMemoryStream.Tests.csproj index 935064fd8bcf..effa092477ad 100644 --- a/src/System.IO.UnmanagedMemoryStream/tests/System.IO.UnmanagedMemoryStream.Tests.csproj +++ b/src/System.IO.UnmanagedMemoryStream/tests/System.IO.UnmanagedMemoryStream.Tests.csproj @@ -26,6 +26,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStruct.cs b/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStruct.cs index a5dcfcf16fb2..aedb6544150d 100644 --- a/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStruct.cs +++ b/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStruct.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.IO.Tests @@ -16,8 +17,8 @@ public static void UmaReadWriteStruct_NegativePosition() using (TestSafeBuffer buffer = new TestSafeBuffer(capacity)) using (UnmanagedMemoryAccessor uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("position", () => uma.Write(-1, ref inStruct)); - Assert.Throws("position", () => uma.Read(-1, out inStruct)); + AssertExtensions.Throws("position", () => uma.Write(-1, ref inStruct)); + AssertExtensions.Throws("position", () => uma.Read(-1, out inStruct)); } } @@ -67,8 +68,8 @@ public static void UmaReadWriteStruct_PositionGreaterThanCapacity() using (TestSafeBuffer buffer = new TestSafeBuffer(capacity)) using (UnmanagedMemoryAccessor uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("position", () => uma.Write(capacity, ref inStruct)); - Assert.Throws("position", () => uma.Read(capacity, out inStruct)); + AssertExtensions.Throws("position", () => uma.Write(capacity, ref inStruct)); + AssertExtensions.Throws("position", () => uma.Read(capacity, out inStruct)); } } @@ -95,8 +96,8 @@ public static void UmaReadWriteStructWithReferenceType_ThrowsArgumentException() using (var buffer = new TestSafeBuffer(capacity)) using (var uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("type", () => uma.Write(0, ref inStruct)); - Assert.Throws("type", () => uma.Read(0, out inStruct)); + AssertExtensions.Throws("type", () => uma.Write(0, ref inStruct)); + AssertExtensions.Throws("type", () => uma.Read(0, out inStruct)); } } @@ -123,8 +124,8 @@ public static void UmaReadWriteGenericStringStruct_ThrowsArgumentException() using (var buffer = new TestSafeBuffer(capacity)) using (var uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("type", () => uma.Write>(0, ref inStruct)); - Assert.Throws("type", () => uma.Read>(0, out inStruct)); + AssertExtensions.Throws("type", () => uma.Write>(0, ref inStruct)); + AssertExtensions.Throws("type", () => uma.Read>(0, out inStruct)); } } diff --git a/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStructArray.cs b/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStructArray.cs index 3927b57c3767..9dcee3841979 100644 --- a/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStructArray.cs +++ b/src/System.IO.UnmanagedMemoryStream/tests/Uma.ReadWriteStructArray.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.IO.Tests @@ -16,20 +17,20 @@ public static void UmaReadWriteStructArray_InvalidParameters() using (TestSafeBuffer buffer = new TestSafeBuffer(capacity)) using (UnmanagedMemoryAccessor uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("array", () => uma.WriteArray(0, null, 0, 1)); - Assert.Throws("array", () => uma.ReadArray(0, null, 0, 1)); - Assert.Throws("offset", () => uma.WriteArray(0, structArr, -1, 1)); - Assert.Throws("offset", () => uma.ReadArray(0, structArr, -1, 1)); - Assert.Throws("count", () => uma.WriteArray(0, structArr, 0, -1)); - Assert.Throws("count", () => uma.ReadArray(0, structArr, 0, -1)); + AssertExtensions.Throws("array", () => uma.WriteArray(0, null, 0, 1)); + AssertExtensions.Throws("array", () => uma.ReadArray(0, null, 0, 1)); + AssertExtensions.Throws("offset", () => uma.WriteArray(0, structArr, -1, 1)); + AssertExtensions.Throws("offset", () => uma.ReadArray(0, structArr, -1, 1)); + AssertExtensions.Throws("count", () => uma.WriteArray(0, structArr, 0, -1)); + AssertExtensions.Throws("count", () => uma.ReadArray(0, structArr, 0, -1)); Assert.Throws(() => uma.WriteArray(0, structArr, 2, 0)); Assert.Throws(() => uma.ReadArray(0, structArr, 2, 0)); Assert.Throws(() => uma.WriteArray(0, structArr, 0, 2)); Assert.Throws(() => uma.ReadArray(0, structArr, 0, 2)); - Assert.Throws("position", () => uma.WriteArray(-1, structArr, 0, 1)); - Assert.Throws("position", () => uma.ReadArray(-1, structArr, 0, 1)); - Assert.Throws("position", () => uma.WriteArray(capacity, structArr, 0, 1)); - Assert.Throws("position", () => uma.ReadArray(capacity, structArr, 0, 1)); + AssertExtensions.Throws("position", () => uma.WriteArray(-1, structArr, 0, 1)); + AssertExtensions.Throws("position", () => uma.ReadArray(-1, structArr, 0, 1)); + AssertExtensions.Throws("position", () => uma.WriteArray(capacity, structArr, 0, 1)); + AssertExtensions.Throws("position", () => uma.ReadArray(capacity, structArr, 0, 1)); } } @@ -94,8 +95,8 @@ public static void UmaReadWriteStructArrayWithReferenceType_ThrowsArgumentExcept using (var buffer = new TestSafeBuffer(capacity)) using (var uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("type", () => uma.WriteArray(0, structArr, 0, 1)); - Assert.Throws("type", () => uma.ReadArray(0, structArr, 0, 1)); + AssertExtensions.Throws("type", () => uma.WriteArray(0, structArr, 0, 1)); + AssertExtensions.Throws("type", () => uma.ReadArray(0, structArr, 0, 1)); } } @@ -122,8 +123,8 @@ public static void UmaReadWriteGenericStringStructArray_ThrowsArgumentException( using (var buffer = new TestSafeBuffer(capacity)) using (var uma = new UnmanagedMemoryAccessor(buffer, 0, capacity, FileAccess.ReadWrite)) { - Assert.Throws("type", () => uma.WriteArray>(0, structArr, 0, 1)); - Assert.Throws("type", () => uma.ReadArray>(0, structArr, 0, 1)); + AssertExtensions.Throws("type", () => uma.WriteArray>(0, structArr, 0, 1)); + AssertExtensions.Throws("type", () => uma.ReadArray>(0, structArr, 0, 1)); } } diff --git a/src/System.IO/tests/BinaryReader/BinaryReaderTests.cs b/src/System.IO/tests/BinaryReader/BinaryReaderTests.cs index 348494cdb1bf..f416b6164099 100644 --- a/src/System.IO/tests/BinaryReader/BinaryReaderTests.cs +++ b/src/System.IO/tests/BinaryReader/BinaryReaderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -125,7 +125,7 @@ public void Read_InvalidEncoding() using (var reader = new BinaryReader(str, new NegEncoding())) { - Assert.Throws("charsRemaining", () => reader.Read(new char[10], 0, 10)); + AssertExtensions.Throws("charsRemaining", () => reader.Read(new char[10], 0, 10)); } } } diff --git a/src/System.IO/tests/BufferedStream/BufferedStream.InvalidParameters.cs b/src/System.IO/tests/BufferedStream/BufferedStream.InvalidParameters.cs index 2ca39b2b7ff6..70e9b552079e 100644 --- a/src/System.IO/tests/BufferedStream/BufferedStream.InvalidParameters.cs +++ b/src/System.IO/tests/BufferedStream/BufferedStream.InvalidParameters.cs @@ -50,7 +50,7 @@ public static void Read_Arguments() using (BufferedStream stream = new BufferedStream(new MemoryStream())) { byte[] array = new byte[10]; - Assert.Throws("array", () => stream.Read(null, 1, 1)); + AssertExtensions.Throws("array", () => stream.Read(null, 1, 1)); Assert.Throws(() => stream.Read(array, -1, 1)); Assert.Throws(() => stream.Read(array, 1, -1)); Assert.Throws(() => stream.Read(array, 9, 2)); @@ -63,7 +63,7 @@ public static void Write_Arguments() using (BufferedStream stream = new BufferedStream(new MemoryStream())) { byte[] array = new byte[10]; - Assert.Throws("array", () => stream.Write(null, 1, 1)); + AssertExtensions.Throws("array", () => stream.Write(null, 1, 1)); Assert.Throws(() => stream.Write(array, -1, 1)); Assert.Throws(() => stream.Write(array, 1, -1)); Assert.Throws(() => stream.Write(array, 9, 2)); @@ -119,11 +119,11 @@ public void CopyToAsync_InvalidArguments_Throws() using (var s = new BufferedStream(new MemoryStream())) { // Null destination - Assert.Throws("destination", () => { s.CopyToAsync(null); }); + AssertExtensions.Throws("destination", () => { s.CopyToAsync(null); }); // Buffer size out-of-range - Assert.Throws("bufferSize", () => { s.CopyToAsync(new MemoryStream(), 0); }); - Assert.Throws("bufferSize", () => { s.CopyToAsync(new MemoryStream(), -1, CancellationToken.None); }); + AssertExtensions.Throws("bufferSize", () => { s.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("bufferSize", () => { s.CopyToAsync(new MemoryStream(), -1, CancellationToken.None); }); // Copying to non-writable stream Assert.Throws(() => { s.CopyToAsync(new WrappedMemoryStream(canRead: true, canWrite: false, canSeek: true)); }); diff --git a/src/System.IO/tests/MemoryStream/MemoryStreamTests.cs b/src/System.IO/tests/MemoryStream/MemoryStreamTests.cs index d76bbf40661b..c9ae996eabb1 100644 --- a/src/System.IO/tests/MemoryStream/MemoryStreamTests.cs +++ b/src/System.IO/tests/MemoryStream/MemoryStreamTests.cs @@ -1,8 +1,9 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Xunit; +using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; @@ -202,20 +203,20 @@ public static void MemoryStream_CopyTo_Invalid() MemoryStream memoryStream; using (memoryStream = new MemoryStream()) { - Assert.Throws("destination", () => memoryStream.CopyTo(destination: null)); + AssertExtensions.Throws("destination", () => memoryStream.CopyTo(destination: null)); // Validate the destination parameter first. - Assert.Throws("destination", () => memoryStream.CopyTo(destination: null, bufferSize: 0)); - Assert.Throws("destination", () => memoryStream.CopyTo(destination: null, bufferSize: -1)); + AssertExtensions.Throws("destination", () => memoryStream.CopyTo(destination: null, bufferSize: 0)); + AssertExtensions.Throws("destination", () => memoryStream.CopyTo(destination: null, bufferSize: -1)); // Then bufferSize. - Assert.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: 0)); // 0-length buffer doesn't make sense. - Assert.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: -1)); + AssertExtensions.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: 0)); // 0-length buffer doesn't make sense. + AssertExtensions.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: -1)); } // After the Stream is disposed, we should fail on all CopyTos. - Assert.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: 0)); // Not before bufferSize is validated. - Assert.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: -1)); + AssertExtensions.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: 0)); // Not before bufferSize is validated. + AssertExtensions.Throws("bufferSize", () => memoryStream.CopyTo(Stream.Null, bufferSize: -1)); MemoryStream disposedStream = memoryStream; diff --git a/src/System.IO/tests/Stream/Stream.Methods.cs b/src/System.IO/tests/Stream/Stream.Methods.cs index 4777ca046a6e..a2929fc4e582 100644 --- a/src/System.IO/tests/Stream/Stream.Methods.cs +++ b/src/System.IO/tests/Stream/Stream.Methods.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -274,14 +275,14 @@ public void ArgumentValidation() Assert.Equal(TaskStatus.Canceled, stream.WriteAsync(new byte[1], 0, 1, new CancellationToken(canceled: true)).Status); Assert.Equal(TaskStatus.Canceled, stream.FlushAsync(new CancellationToken(canceled: true)).Status); - Assert.Throws("buffer", () => { stream.ReadAsync(null, 0, 0); }); - Assert.Throws("buffer", () => { stream.WriteAsync(null, 0, 0); }); + AssertExtensions.Throws("buffer", () => { stream.ReadAsync(null, 0, 0); }); + AssertExtensions.Throws("buffer", () => { stream.WriteAsync(null, 0, 0); }); - Assert.Throws("offset", () => { stream.ReadAsync(new byte[1], -1, 0); }); - Assert.Throws("offset", () => { stream.WriteAsync(new byte[1], -1, 0); }); + AssertExtensions.Throws("offset", () => { stream.ReadAsync(new byte[1], -1, 0); }); + AssertExtensions.Throws("offset", () => { stream.WriteAsync(new byte[1], -1, 0); }); - Assert.Throws("count", () => { stream.ReadAsync(new byte[1], 0, -1); }); - Assert.Throws("count", () => { stream.WriteAsync(new byte[1], 0, -1); }); + AssertExtensions.Throws("count", () => { stream.ReadAsync(new byte[1], 0, -1); }); + AssertExtensions.Throws("count", () => { stream.WriteAsync(new byte[1], 0, -1); }); Assert.Throws(() => { stream.ReadAsync(new byte[1], 0, 2); }); Assert.Throws(() => { stream.WriteAsync(new byte[1], 0, 2); }); diff --git a/src/System.IO/tests/StreamReader/StreamReader.StringCtorTests.cs b/src/System.IO/tests/StreamReader/StreamReader.StringCtorTests.cs index 7c7593cbe266..18f0216f5594 100644 --- a/src/System.IO/tests/StreamReader/StreamReader.StringCtorTests.cs +++ b/src/System.IO/tests/StreamReader/StreamReader.StringCtorTests.cs @@ -14,13 +14,13 @@ public class StreamReader_StringCtorTests [Fact] public static void NullArgs_ThrowsArgumentNullException() { - Assert.Throws("path", () => new StreamReader((string)null)); - Assert.Throws("path", () => new StreamReader((string)null, null)); - Assert.Throws("path", () => new StreamReader((string)null, null, true)); - Assert.Throws("path", () => new StreamReader((string)null, null, true, -1)); - Assert.Throws("encoding", () => new StreamReader("", null)); - Assert.Throws("encoding", () => new StreamReader("", null, true)); - Assert.Throws("encoding", () => new StreamReader("", null, true, -1)); + AssertExtensions.Throws("path", () => new StreamReader((string)null)); + AssertExtensions.Throws("path", () => new StreamReader((string)null, null)); + AssertExtensions.Throws("path", () => new StreamReader((string)null, null, true)); + AssertExtensions.Throws("path", () => new StreamReader((string)null, null, true, -1)); + AssertExtensions.Throws("encoding", () => new StreamReader("", null)); + AssertExtensions.Throws("encoding", () => new StreamReader("", null, true)); + AssertExtensions.Throws("encoding", () => new StreamReader("", null, true, -1)); } [Fact] @@ -36,8 +36,8 @@ public static void EmptyPath_ThrowsArgumentException() [Fact] public static void NegativeBufferSize_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bufferSize", () => new StreamReader("path", Encoding.UTF8, true, -1)); - Assert.Throws("bufferSize", () => new StreamReader("path", Encoding.UTF8, true, 0)); + AssertExtensions.Throws("bufferSize", () => new StreamReader("path", Encoding.UTF8, true, -1)); + AssertExtensions.Throws("bufferSize", () => new StreamReader("path", Encoding.UTF8, true, 0)); } [Theory] diff --git a/src/System.IO/tests/StreamWriter/StreamWriter.StringCtorTests.cs b/src/System.IO/tests/StreamWriter/StreamWriter.StringCtorTests.cs index e352ee4e3dc9..06844e01a6a5 100644 --- a/src/System.IO/tests/StreamWriter/StreamWriter.StringCtorTests.cs +++ b/src/System.IO/tests/StreamWriter/StreamWriter.StringCtorTests.cs @@ -15,14 +15,14 @@ public class StreamWriter_StringCtorTests [Fact] public static void NullArgs_ThrowsArgumentNullException() { - Assert.Throws("path", () => new StreamWriter((string)null)); - Assert.Throws("path", () => new StreamWriter((string)null, true)); - Assert.Throws("path", () => new StreamWriter((string)null, true, null)); - Assert.Throws("path", () => new StreamWriter((string)null, true, null, -1)); - Assert.Throws("encoding", () => new StreamWriter("path", true, null)); - Assert.Throws("encoding", () => new StreamWriter("path", true, null, -1)); - Assert.Throws("encoding", () => new StreamWriter("", true, null)); - Assert.Throws("encoding", () => new StreamWriter("", true, null, -1)); + AssertExtensions.Throws("path", () => new StreamWriter((string)null)); + AssertExtensions.Throws("path", () => new StreamWriter((string)null, true)); + AssertExtensions.Throws("path", () => new StreamWriter((string)null, true, null)); + AssertExtensions.Throws("path", () => new StreamWriter((string)null, true, null, -1)); + AssertExtensions.Throws("encoding", () => new StreamWriter("path", true, null)); + AssertExtensions.Throws("encoding", () => new StreamWriter("path", true, null, -1)); + AssertExtensions.Throws("encoding", () => new StreamWriter("", true, null)); + AssertExtensions.Throws("encoding", () => new StreamWriter("", true, null, -1)); } [Fact] @@ -38,8 +38,8 @@ public static void EmptyPath_ThrowsArgumentException() [Fact] public static void NegativeBufferSize_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bufferSize", () => new StreamWriter("path", false, Encoding.UTF8, -1)); - Assert.Throws("bufferSize", () => new StreamWriter("path", true, Encoding.UTF8, 0)); + AssertExtensions.Throws("bufferSize", () => new StreamWriter("path", false, Encoding.UTF8, -1)); + AssertExtensions.Throws("bufferSize", () => new StreamWriter("path", true, Encoding.UTF8, 0)); } [Fact] diff --git a/src/System.IO/tests/System.IO.Tests.csproj b/src/System.IO/tests/System.IO.Tests.csproj index 3575604eb489..2c72f0b88292 100644 --- a/src/System.IO/tests/System.IO.Tests.csproj +++ b/src/System.IO/tests/System.IO.Tests.csproj @@ -47,6 +47,9 @@ + + Common\System\AssertExtensions.cs + Common\System\IO\CallTrackingStream.cs diff --git a/src/System.Json/tests/JsonArrayTests.cs b/src/System.Json/tests/JsonArrayTests.cs index 6ee269cf1b95..211d3356aff2 100644 --- a/src/System.Json/tests/JsonArrayTests.cs +++ b/src/System.Json/tests/JsonArrayTests.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // See the LICENSE file in the project root for more information. +using System; using System.IO; using System.Text; using Xunit; @@ -64,7 +65,7 @@ public void Ctor_NullArray_Works() [Fact] public void Ctor_NullIEnumerable_ThrowsArgumentNullException() { - Assert.Throws("items", () => new JsonArray((IEnumerable)null)); + AssertExtensions.Throws("items", () => new JsonArray((IEnumerable)null)); } [Fact] @@ -72,8 +73,8 @@ public void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException() { JsonArray array = new JsonArray(new JsonPrimitive(true)); - Assert.Throws("index", () => array[-1]); - Assert.Throws("index", () => array[1]); + AssertExtensions.Throws("index", () => array[-1]); + AssertExtensions.Throws("index", () => array[1]); } [Fact] @@ -90,8 +91,8 @@ public void Item_Set_InvalidIndex_ThrowsArgumentOutOfRangeException() { JsonArray array = new JsonArray(new JsonPrimitive(true)); - Assert.Throws("index", () => array[-1] = false); - Assert.Throws("index", () => array[1] = false); + AssertExtensions.Throws("index", () => array[-1] = false); + AssertExtensions.Throws("index", () => array[1] = false); } [Fact] @@ -120,7 +121,7 @@ public void Add() public void Add_NullItem_ThrowsArgumentNullException() { JsonArray array = new JsonArray(); - Assert.Throws("item", () => array.Add(null)); + AssertExtensions.Throws("item", () => array.Add(null)); } [Fact] @@ -159,7 +160,7 @@ public void AddRange_NullArray_Works() public void AddRange_NullIEnumerable_ThrowsArgumentNullException() { JsonArray array = new JsonArray(); - Assert.Throws("items", () => array.AddRange((IEnumerable)null)); + AssertExtensions.Throws("items", () => array.AddRange((IEnumerable)null)); } [Fact] @@ -178,8 +179,8 @@ public void Insert_InvalidIndex_ThrowsArgumentOutOfRangeException() { JsonArray array = new JsonArray(new JsonPrimitive(true)); - Assert.Throws("index", () => array.Insert(-1, new JsonPrimitive(false))); - Assert.Throws("index", () => array.Insert(2, new JsonPrimitive(false))); + AssertExtensions.Throws("index", () => array.Insert(-1, new JsonPrimitive(false))); + AssertExtensions.Throws("index", () => array.Insert(2, new JsonPrimitive(false))); } [Fact] @@ -249,8 +250,8 @@ public void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException() { JsonArray array = new JsonArray(new JsonPrimitive(true)); - Assert.Throws("index", () => array.RemoveAt(-1)); - Assert.Throws("index", () => array.RemoveAt(1)); + AssertExtensions.Throws("index", () => array.RemoveAt(-1)); + AssertExtensions.Throws("index", () => array.RemoveAt(1)); } [Fact] @@ -291,8 +292,8 @@ public void Save_TextWriter() public void Save_NullStream_ThrowsArgumentNullException() { JsonArray array = new JsonArray(); - Assert.Throws("stream", () => array.Save((Stream)null)); - Assert.Throws("textWriter", () => array.Save((TextWriter)null)); + AssertExtensions.Throws("stream", () => array.Save((Stream)null)); + AssertExtensions.Throws("textWriter", () => array.Save((TextWriter)null)); } [Fact] diff --git a/src/System.Json/tests/JsonObjectTests.cs b/src/System.Json/tests/JsonObjectTests.cs index b2d83528fd67..3849144a0f2e 100644 --- a/src/System.Json/tests/JsonObjectTests.cs +++ b/src/System.Json/tests/JsonObjectTests.cs @@ -65,7 +65,7 @@ public void Ctor_NullArray_Works() [Fact] public void Ctor_NullIEnumerable_ThrowsArgumentNullException() { - Assert.Throws("items", () => new JsonObject((IEnumerable>)null)); + AssertExtensions.Throws("items", () => new JsonObject((IEnumerable>)null)); } [Fact] @@ -127,7 +127,7 @@ public void Add() public void Add_NullKey_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); - Assert.Throws("key", () => obj.Add(null, new JsonPrimitive(true))); + AssertExtensions.Throws("key", () => obj.Add(null, new JsonPrimitive(true))); } [Fact] @@ -135,7 +135,7 @@ public void Add_NullKeyInKeyValuePair_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); KeyValuePair item = new KeyValuePair(null, new JsonPrimitive(true)); - Assert.Throws("key", () => obj.Add(item)); + AssertExtensions.Throws("key", () => obj.Add(item)); } [Fact] @@ -170,8 +170,8 @@ public void AddRange_IEnumerable() public void AddRange_NullItems_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); - Assert.Throws("items", () => obj.AddRange(null)); - Assert.Throws("items", () => obj.AddRange((IEnumerable>)null)); + AssertExtensions.Throws("items", () => obj.AddRange(null)); + AssertExtensions.Throws("items", () => obj.AddRange((IEnumerable>)null)); } [Fact] @@ -203,7 +203,7 @@ public void ContainsKey() public void ContainsKey_NullKey_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); - Assert.Throws("key", () => obj.ContainsKey(null)); + AssertExtensions.Throws("key", () => obj.ContainsKey(null)); } [Theory] @@ -244,7 +244,7 @@ public void Remove() public void Remove_NullKey_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); - Assert.Throws("key", () => obj.Remove(null)); + AssertExtensions.Throws("key", () => obj.Remove(null)); } [Fact] @@ -289,8 +289,8 @@ public void Save_TextWriter() public void Save_NullStream_ThrowsArgumentNullException() { JsonObject obj = new JsonObject(); - Assert.Throws("stream", () => obj.Save((Stream)null)); - Assert.Throws("textWriter", () => obj.Save((TextWriter)null)); + AssertExtensions.Throws("stream", () => obj.Save((Stream)null)); + AssertExtensions.Throws("textWriter", () => obj.Save((TextWriter)null)); } [Fact] diff --git a/src/System.Json/tests/JsonValueTests.cs b/src/System.Json/tests/JsonValueTests.cs index 67d3afe85b67..92c4764ed3b1 100644 --- a/src/System.Json/tests/JsonValueTests.cs +++ b/src/System.Json/tests/JsonValueTests.cs @@ -121,19 +121,19 @@ public void JsonPrimitive_QuoteEscape() [Fact] public void Load_NullStream_ThrowsArgumentNullException() { - Assert.Throws("stream", () => JsonValue.Load((Stream)null)); + AssertExtensions.Throws("stream", () => JsonValue.Load((Stream)null)); } [Fact] public void Load_NullTextReader_ThrowsArgumentNullException() { - Assert.Throws("textReader", () => JsonValue.Load((TextReader)null)); + AssertExtensions.Throws("textReader", () => JsonValue.Load((TextReader)null)); } [Fact] public void Parse_NullJsonString_ThrowArgumentNullException() { - Assert.Throws("jsonString", () => JsonValue.Parse(null)); + AssertExtensions.Throws("jsonString", () => JsonValue.Parse(null)); } [Theory] @@ -438,30 +438,30 @@ public void Save_Stream() public void Save_Null_ThrowsArgumentNullException() { JsonValue value = new JsonSubValue(); - Assert.Throws("stream", () => value.Save((Stream)null)); + AssertExtensions.Throws("stream", () => value.Save((Stream)null)); } [Fact] public void ImplicitConversion_NullJsonValue_ThrowsArgumentNullException() { - Assert.Throws("value", () => { bool i = (JsonValue)null; }); - Assert.Throws("value", () => { byte i = (JsonValue)null; }); - Assert.Throws("value", () => { char i = (JsonValue)null; }); - Assert.Throws("value", () => { decimal i = (JsonValue)null; }); - Assert.Throws("value", () => { double i = (JsonValue)null; }); - Assert.Throws("value", () => { float i = (JsonValue)null; }); - Assert.Throws("value", () => { int i = (JsonValue)null; }); - Assert.Throws("value", () => { long i = (JsonValue)null; }); - Assert.Throws("value", () => { sbyte i = (JsonValue)null; }); - Assert.Throws("value", () => { short i = (JsonValue)null; }); - Assert.Throws("value", () => { uint i = (JsonValue)null; }); - Assert.Throws("value", () => { ulong i = (JsonValue)null; }); - Assert.Throws("value", () => { ushort i = (JsonValue)null; }); - Assert.Throws("value", () => { DateTime i = (JsonValue)null; }); - Assert.Throws("value", () => { DateTimeOffset i = (JsonValue)null; }); - Assert.Throws("value", () => { TimeSpan i = (JsonValue)null; }); - Assert.Throws("value", () => { Guid i = (JsonValue)null; }); - Assert.Throws("value", () => { Uri i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { bool i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { byte i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { char i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { decimal i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { double i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { float i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { int i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { long i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { sbyte i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { short i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { uint i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { ulong i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { ushort i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { DateTime i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { DateTimeOffset i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { TimeSpan i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { Guid i = (JsonValue)null; }); + AssertExtensions.Throws("value", () => { Uri i = (JsonValue)null; }); } [Fact] diff --git a/src/System.Json/tests/System.Json.Tests.csproj b/src/System.Json/tests/System.Json.Tests.csproj index 9656c70c541f..68a2d7653c3b 100644 --- a/src/System.Json/tests/System.Json.Tests.csproj +++ b/src/System.Json/tests/System.Json.Tests.csproj @@ -13,6 +13,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Linq.Expressions/tests/Array/ArrayAccessTests.cs b/src/System.Linq.Expressions/tests/Array/ArrayAccessTests.cs index 8ae11e866090..c07d821bf2d2 100644 --- a/src/System.Linq.Expressions/tests/Array/ArrayAccessTests.cs +++ b/src/System.Linq.Expressions/tests/Array/ArrayAccessTests.cs @@ -50,7 +50,7 @@ public static void InstanceIsNotArray() { ConstantExpression instance = Expression.Constant(46); ConstantExpression index = Expression.Constant(2); - Assert.Throws("array", () => Expression.ArrayAccess(instance, index)); + AssertExtensions.Throws("array", () => Expression.ArrayAccess(instance, index)); } [Fact] @@ -66,7 +66,7 @@ public static void NonInt32Index() { ConstantExpression instance = Expression.Constant(new int[4]); ConstantExpression index = Expression.Constant("2"); - Assert.Throws("indexes", () => Expression.ArrayAccess(instance, index)); + AssertExtensions.Throws("indexes", () => Expression.ArrayAccess(instance, index)); } [Fact] @@ -74,7 +74,7 @@ public static void UnreadableIndex() { ConstantExpression instance = Expression.Constant(new int[4]); MemberExpression index = Expression.Property(null, typeof(Unreadable).GetProperty(nameof(Unreadable.WriteOnly))); - Assert.Throws("indexes", () => Expression.ArrayAccess(instance, index)); + AssertExtensions.Throws("indexes", () => Expression.ArrayAccess(instance, index)); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/Array/ArrayArrayIndexTests.cs b/src/System.Linq.Expressions/tests/Array/ArrayArrayIndexTests.cs index e9dcb59e9d8e..62a64dd640ba 100644 --- a/src/System.Linq.Expressions/tests/Array/ArrayArrayIndexTests.cs +++ b/src/System.Linq.Expressions/tests/Array/ArrayArrayIndexTests.cs @@ -2674,14 +2674,14 @@ private static void CheckExceptionGenericWithSubClassRestrictionArrayArrayIndex< public static void ArrayIndexNotArray() { Expression intExp = Expression.Constant(1); - Assert.Throws("array", () => Expression.ArrayIndex(intExp, intExp, intExp)); - Assert.Throws("array", () => Expression.ArrayIndex(intExp, Enumerable.Repeat(intExp, 1))); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(intExp, intExp, intExp)); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(intExp, Enumerable.Repeat(intExp, 1))); } [Fact] public static void ArrayIndexNullArray() { - Assert.Throws("array", () => Expression.ArrayIndex(null)); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(null)); Assert.Throws( "array", () => Expression.ArrayIndex(null, Enumerable.Empty())); } @@ -2690,8 +2690,8 @@ public static void ArrayIndexNullArray() public static void ArrayIndexNullIndices() { Expression array = Expression.Constant(new[,] { { 1, 2 }, { 2, 1 } }); - Assert.Throws("indexes", () => Expression.ArrayIndex(array, default(Expression[]))); - Assert.Throws("indexes[1]", + AssertExtensions.Throws("indexes", () => Expression.ArrayIndex(array, default(Expression[]))); + AssertExtensions.Throws("indexes[1]", () => Expression.ArrayIndex(array, Expression.Constant(1), null)); } @@ -2708,14 +2708,14 @@ public static void ArrayIndexWrongRank() public static void ArrayIndexWrongType() { Expression array = Expression.Constant(new[,] { { 1, 2 }, { 2, 1 } }); - Assert.Throws("indexes[0]", () => Expression.ArrayIndex(array, Expression.Constant(2L), Expression.Constant(1))); + AssertExtensions.Throws("indexes[0]", () => Expression.ArrayIndex(array, Expression.Constant(2L), Expression.Constant(1))); } [Fact] public static void UnreadableArray() { Expression array = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("array", () => Expression.ArrayIndex(array, Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(array, Expression.Constant(0), Expression.Constant(0))); } [Fact] @@ -2723,7 +2723,7 @@ public static void UnreadableIndex() { Expression array = Expression.Constant(new[,] { { 1, 2 }, { 2, 1 } }); Expression index = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("indexes[0]", () => Expression.ArrayIndex(array, index, index)); + AssertExtensions.Throws("indexes[0]", () => Expression.ArrayIndex(array, index, index)); } } } diff --git a/src/System.Linq.Expressions/tests/Array/ArrayArrayLengthTests.cs b/src/System.Linq.Expressions/tests/Array/ArrayArrayLengthTests.cs index 65a1a3131666..23ca5396baf4 100644 --- a/src/System.Linq.Expressions/tests/Array/ArrayArrayLengthTests.cs +++ b/src/System.Linq.Expressions/tests/Array/ArrayArrayLengthTests.cs @@ -1933,7 +1933,7 @@ public static void ArrayLength_MultiDimensionalOf1() { foreach (var e in new Expression[] { Expression.Parameter(typeof(int).MakeArrayType(1)), Expression.Constant(new int[2, 2]) }) { - Assert.Throws("array", () => Expression.ArrayLength(e)); + AssertExtensions.Throws("array", () => Expression.ArrayLength(e)); } } diff --git a/src/System.Linq.Expressions/tests/Array/ArrayIndexTests.cs b/src/System.Linq.Expressions/tests/Array/ArrayIndexTests.cs index feab3582d628..56f045ea5b76 100644 --- a/src/System.Linq.Expressions/tests/Array/ArrayIndexTests.cs +++ b/src/System.Linq.Expressions/tests/Array/ArrayIndexTests.cs @@ -2725,20 +2725,20 @@ public static void ToStringTest() public static void ArrayIndexNotArray() { Expression intExp = Expression.Constant(1); - Assert.Throws("array", () => Expression.ArrayIndex(intExp, intExp)); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(intExp, intExp)); } [Fact] public static void ArrayIndexNullArray() { - Assert.Throws("array", () => Expression.ArrayIndex(null, Expression.Constant(0))); + AssertExtensions.Throws("array", () => Expression.ArrayIndex(null, Expression.Constant(0))); } [Fact] public static void ArrayIndexNullIndices() { Expression array = Expression.Constant(new[] {1, 2}); - Assert.Throws("index", () => Expression.ArrayIndex(array, default(Expression))); + AssertExtensions.Throws("index", () => Expression.ArrayIndex(array, default(Expression))); } [Fact] @@ -2752,7 +2752,7 @@ public static void ArrayIndexWrongRank() public static void ArrayIndexWrongType() { Expression array = Expression.Constant(new[] {1, 2}); - Assert.Throws("index", () => Expression.ArrayIndex(array, Expression.Constant(2L))); + AssertExtensions.Throws("index", () => Expression.ArrayIndex(array, Expression.Constant(2L))); } [Fact] @@ -2767,7 +2767,7 @@ public static void UnreadableIndex() { Expression array = Expression.Constant(new[] { 1, 2 }); Expression index = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("index", () => Expression.ArrayIndex(array, index)); + AssertExtensions.Throws("index", () => Expression.ArrayIndex(array, index)); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/Array/ArrayLengthTests.cs b/src/System.Linq.Expressions/tests/Array/ArrayLengthTests.cs index 7809bccd333e..86bd79912cf3 100644 --- a/src/System.Linq.Expressions/tests/Array/ArrayLengthTests.cs +++ b/src/System.Linq.Expressions/tests/Array/ArrayLengthTests.cs @@ -1571,14 +1571,14 @@ public static void ToStringTest() [Fact] public static void NullArray() { - Assert.Throws("array", () => Expression.ArrayLength(null)); + AssertExtensions.Throws("array", () => Expression.ArrayLength(null)); } [Fact] public static void IsNotArray() { Expression notArray = Expression.Constant(8); - Assert.Throws("array", () => Expression.ArrayLength(notArray)); + AssertExtensions.Throws("array", () => Expression.ArrayLength(notArray)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -1595,17 +1595,17 @@ public static void ArrayExplicitlyTypeArrayNotAllowed(bool useInterpreter) { Array arr = new[] { 1, 2, 3 }; Expression arrayExpression = Expression.Constant(arr, typeof(Array)); - Assert.Throws("array", () => Expression.ArrayLength(arrayExpression)); + AssertExtensions.Throws("array", () => Expression.ArrayLength(arrayExpression)); } [Fact] public static void ArrayTypeArrayNotAllowedIfNotSZArray() { Array arr = new[,] { { 1, 2, 3 }, { 1, 2, 2 } }; - Assert.Throws("array", () => Expression.ArrayLength(Expression.Constant(arr))); + AssertExtensions.Throws("array", () => Expression.ArrayLength(Expression.Constant(arr))); arr = Array.CreateInstance(typeof(int), new[] { 3 }, new[] { -1 }); - Assert.Throws("array", () => Expression.ArrayLength(Expression.Constant(arr))); + AssertExtensions.Throws("array", () => Expression.ArrayLength(Expression.Constant(arr))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Array/NewArrayBoundsTests.cs b/src/System.Linq.Expressions/tests/Array/NewArrayBoundsTests.cs index ad8f5a68c64c..190366fc6760 100644 --- a/src/System.Linq.Expressions/tests/Array/NewArrayBoundsTests.cs +++ b/src/System.Linq.Expressions/tests/Array/NewArrayBoundsTests.cs @@ -188,64 +188,64 @@ private static void VerifyArrayGenerator(Func func, Type arrayType, long? [Fact] public static void NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => Expression.NewArrayBounds(null, Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(null, Expression.Constant(2))); } [Fact] public static void VoidType_ThrowsArgumentException() { - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(void), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(void), Expression.Constant(2))); } [Fact] public static void NullBounds_ThrowsArgumentnNullException() { - Assert.Throws("bounds", () => Expression.NewArrayBounds(typeof(int), default(Expression[]))); - Assert.Throws("bounds", () => Expression.NewArrayBounds(typeof(int), default(IEnumerable))); + AssertExtensions.Throws("bounds", () => Expression.NewArrayBounds(typeof(int), default(Expression[]))); + AssertExtensions.Throws("bounds", () => Expression.NewArrayBounds(typeof(int), default(IEnumerable))); } [Fact] public static void EmptyBounds_ThrowsArgumentException() { - Assert.Throws("bounds", () => Expression.NewArrayBounds(typeof(int))); + AssertExtensions.Throws("bounds", () => Expression.NewArrayBounds(typeof(int))); } [Fact] public static void NullBoundInBounds_ThrowsArgumentNullException() { - Assert.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), new Expression[] { null, null })); - Assert.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), new List { null, null })); + AssertExtensions.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), new Expression[] { null, null })); + AssertExtensions.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), new List { null, null })); } [Fact] public static void NonIntegralBoundInBounds_ThrowsArgumentException() { - Assert.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), Expression.Constant(2.0))); + AssertExtensions.Throws("bounds[0]", () => Expression.NewArrayBounds(typeof(int), Expression.Constant(2.0))); } [Fact] public static void ByRefType_ThrowsArgumentException() { - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(int).MakeByRefType(), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(int).MakeByRefType(), Expression.Constant(2))); } [Fact] public static void PointerType_ThrowsArgumentException() { - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(int).MakePointerType(), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(int).MakePointerType(), Expression.Constant(2))); } [Fact] public static void OpenGenericType_ThrowsArgumentException() { - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(List<>), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(List<>), Expression.Constant(2))); } [Fact] public static void TypeContainsGenericParameters_ThrowsArgumentException() { - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(List<>.Enumerator), Expression.Constant(2))); - Assert.Throws("type", () => Expression.NewArrayBounds(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(List<>.Enumerator), Expression.Constant(2))); + AssertExtensions.Throws("type", () => Expression.NewArrayBounds(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(2))); } [Fact] @@ -283,7 +283,7 @@ public static void UpdateNullThrows() Expression bound0 = Expression.Constant(2); Expression bound1 = Expression.Constant(3); NewArrayExpression newArrayExpression = Expression.NewArrayBounds(typeof(string), bound0, bound1); - Assert.Throws("expressions", () => newArrayExpression.Update(null)); + AssertExtensions.Throws("expressions", () => newArrayExpression.Update(null)); } } } diff --git a/src/System.Linq.Expressions/tests/Array/NewArrayListTests.cs b/src/System.Linq.Expressions/tests/Array/NewArrayListTests.cs index 6c339c1138ef..53caabeb2228 100644 --- a/src/System.Linq.Expressions/tests/Array/NewArrayListTests.cs +++ b/src/System.Linq.Expressions/tests/Array/NewArrayListTests.cs @@ -1639,7 +1639,7 @@ private static void VerifyGenericWithStructRestrictionArrayList(Ts[] val, Ex [Fact] public static void NullType() { - Assert.Throws("type", () => Expression.NewArrayInit(null)); + AssertExtensions.Throws("type", () => Expression.NewArrayInit(null)); } [Fact] @@ -1651,15 +1651,15 @@ public static void VoidType() [Fact] public static void NullInitializers() { - Assert.Throws("initializers", () => Expression.NewArrayInit(typeof(int), default(Expression[]))); - Assert.Throws("initializers", () => Expression.NewArrayInit(typeof(int), default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.NewArrayInit(typeof(int), default(Expression[]))); + AssertExtensions.Throws("initializers", () => Expression.NewArrayInit(typeof(int), default(IEnumerable))); } [Fact] public static void NullInitializer() { - Assert.Throws("initializers[0]", () => Expression.NewArrayInit(typeof(int), new Expression[] { null, null })); - Assert.Throws("initializers[0]", () => Expression.NewArrayInit(typeof(int), new List { null, null })); + AssertExtensions.Throws("initializers[0]", () => Expression.NewArrayInit(typeof(int), new Expression[] { null, null })); + AssertExtensions.Throws("initializers[0]", () => Expression.NewArrayInit(typeof(int), new List { null, null })); } [Fact] @@ -1671,7 +1671,7 @@ public static void ByRefType() [Fact] public static void PointerType() { - Assert.Throws("type", () => Expression.NewArrayInit(typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.NewArrayInit(typeof(int).MakePointerType())); } [Fact] @@ -1768,7 +1768,7 @@ public static void UpdateNullThrows() Expression element0 = Expression.Constant(2); Expression element1 = Expression.Constant(3); NewArrayExpression newArrayExpression = Expression.NewArrayInit(typeof(int), element0, element1); - Assert.Throws("expressions", () => newArrayExpression.Update(null)); + AssertExtensions.Throws("expressions", () => newArrayExpression.Update(null)); } } } diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryAddTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryAddTests.cs index 9f48e47f41d9..87dcf6a45c0a 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryAddTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryAddTests.cs @@ -502,25 +502,25 @@ public static void CannotReduceChecked() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Add(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Add(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Add(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Add(Expression.Constant(""), null)); } [Fact] public static void CheckedThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.AddChecked(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.AddChecked(null, Expression.Constant(""))); } [Fact] public static void CheckedThrowsOnRightNull() { - Assert.Throws("right", () => Expression.AddChecked(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.AddChecked(Expression.Constant(""), null)); } private static class Unreadable @@ -535,28 +535,28 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Add(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Add(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Add(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Add(Expression.Constant(1), value)); } [Fact] public static void CheckedThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.AddChecked(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.AddChecked(value, Expression.Constant(1))); } [Fact] public static void CheckedThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Add(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Add(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryDivideTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryDivideTests.cs index 51393f7acb2e..3cd93a6f74d3 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryDivideTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryDivideTests.cs @@ -353,13 +353,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Divide(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Divide(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Divide(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Divide(Expression.Constant(""), null)); } private static class Unreadable @@ -374,14 +374,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Divide(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Divide(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Divide(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Divide(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryModuloTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryModuloTests.cs index 7a54cbd56072..5ae1aa585875 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryModuloTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryModuloTests.cs @@ -353,13 +353,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Modulo(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Modulo(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Modulo(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Modulo(Expression.Constant(""), null)); } private static class Unreadable @@ -374,14 +374,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Modulo(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Modulo(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Modulo(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Modulo(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryMultiplyTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryMultiplyTests.cs index 1e2e49818d99..a9f1cde76fc1 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryMultiplyTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryMultiplyTests.cs @@ -510,25 +510,25 @@ public static void CannotReduceChecked() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Multiply(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Multiply(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Multiply(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Multiply(Expression.Constant(""), null)); } [Fact] public static void CheckedThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.MultiplyChecked(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.MultiplyChecked(null, Expression.Constant(""))); } [Fact] public static void CheckedThrowsOnRightNull() { - Assert.Throws("right", () => Expression.MultiplyChecked(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.MultiplyChecked(Expression.Constant(""), null)); } private static class Unreadable @@ -543,28 +543,28 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Multiply(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Multiply(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Multiply(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Multiply(Expression.Constant(1), value)); } [Fact] public static void CheckedThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.MultiplyChecked(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.MultiplyChecked(value, Expression.Constant(1))); } [Fact] public static void CheckedThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.MultiplyChecked(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.MultiplyChecked(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryShiftTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryShiftTests.cs index 3391ff191502..1a2d6e26de91 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryShiftTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinaryShiftTests.cs @@ -1023,25 +1023,25 @@ public static void CannotReduceRight() [Fact] public static void LeftThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.LeftShift(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.LeftShift(null, Expression.Constant(""))); } [Fact] public static void LeftThrowsOnRightNull() { - Assert.Throws("right", () => Expression.LeftShift(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.LeftShift(Expression.Constant(""), null)); } [Fact] public static void RightThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.RightShift(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.RightShift(null, Expression.Constant(""))); } [Fact] public static void RightThrowsOnRightNull() { - Assert.Throws("right", () => Expression.RightShift(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.RightShift(Expression.Constant(""), null)); } private static class Unreadable @@ -1056,28 +1056,28 @@ public static T WriteOnly public static void LeftThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.LeftShift(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.LeftShift(value, Expression.Constant(1))); } [Fact] public static void LeftThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.LeftShift(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.LeftShift(Expression.Constant(1), value)); } [Fact] public static void RightThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.RightShift(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.RightShift(value, Expression.Constant(1))); } [Fact] public static void RightThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.RightShift(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.RightShift(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinarySubtractTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinarySubtractTests.cs index a0a58f3b94b7..a7b4b906eff8 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinarySubtractTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Arithmetic/BinarySubtractTests.cs @@ -531,25 +531,25 @@ public static void CannotReduceChecked() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Subtract(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Subtract(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Subtract(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Subtract(Expression.Constant(""), null)); } [Fact] public static void CheckedThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.SubtractChecked(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.SubtractChecked(null, Expression.Constant(""))); } [Fact] public static void CheckedThrowsOnRightNull() { - Assert.Throws("right", () => Expression.SubtractChecked(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.SubtractChecked(Expression.Constant(""), null)); } private static class Unreadable @@ -564,28 +564,28 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Subtract(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Subtract(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Subtract(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Subtract(Expression.Constant(1), value)); } [Fact] public static void CheckedThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.SubtractChecked(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.SubtractChecked(value, Expression.Constant(1))); } [Fact] public static void CheckedThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.SubtractChecked(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.SubtractChecked(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/Assign.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/Assign.cs index 17cccbbb32c2..a7bdf54c2e76 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/Assign.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/Assign.cs @@ -216,13 +216,13 @@ public void CannotReduce() [Fact] public void LeftNull_ThrowsArgumentNullException() { - Assert.Throws("left", () => Expression.Assign(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Assign(null, Expression.Constant(""))); } [Fact] public void RightNull_ThrowsArgumentNullException() { - Assert.Throws("right", () => Expression.Assign(Expression.Variable(typeof(int)), null)); + AssertExtensions.Throws("right", () => Expression.Assign(Expression.Variable(typeof(int)), null)); } [Theory] @@ -255,7 +255,7 @@ public void ReferenceAssignable(bool useInterpreter) [MemberData(nameof(ReadOnlyExpressions))] public void LeftReadOnly_ThrowsArgumentException(Expression readonlyExp) { - Assert.Throws("left", () => Expression.Assign(readonlyExp, Expression.Default(readonlyExp.Type))); + AssertExtensions.Throws("left", () => Expression.Assign(readonlyExp, Expression.Default(readonlyExp.Type))); } [Theory] @@ -263,7 +263,7 @@ public void LeftReadOnly_ThrowsArgumentException(Expression readonlyExp) public static void Right_WriteOnly_ThrowsArgumentException(Expression writeOnlyExp) { ParameterExpression variable = Expression.Variable(writeOnlyExp.Type); - Assert.Throws("right", () => Expression.Assign(variable, writeOnlyExp)); + AssertExtensions.Throws("right", () => Expression.Assign(variable, writeOnlyExp)); } [Theory] @@ -271,7 +271,7 @@ public static void Right_WriteOnly_ThrowsArgumentException(Expression writeOnlyE public static void Left_InvalidType_ThrowsArgumentException(Type type) { Expression left = new FakeExpression(ExpressionType.Parameter, type); - Assert.Throws("left", () => Expression.Assign(left, Expression.Parameter(typeof(int)))); + AssertExtensions.Throws("left", () => Expression.Assign(left, Expression.Parameter(typeof(int)))); } [Theory] @@ -279,7 +279,7 @@ public static void Left_InvalidType_ThrowsArgumentException(Type type) public static void Right_InvalidType_ThrowsArgumentException(Type type) { Expression right = new FakeExpression(ExpressionType.Parameter, type); - Assert.Throws("right", () => Expression.Assign(Expression.Variable(typeof(object)), right)); + AssertExtensions.Throws("right", () => Expression.Assign(Expression.Variable(typeof(object)), right)); } [Theory] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/OpAssign.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/OpAssign.cs index 55b59812d99d..bba81fbbedda 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/OpAssign.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Assignment/OpAssign.cs @@ -175,7 +175,7 @@ public void CannotAssignToNonWritable(MethodInfo assign, Type type) { Func withAssignment = (Func)assign.CreateDelegate(typeof(Func)); - Assert.Throws("left", () => withAssignment(Expression.Default(type), Expression.Default(type))); + AssertExtensions.Throws("left", () => withAssignment(Expression.Default(type), Expression.Default(type))); } [Theory] @@ -225,7 +225,7 @@ public static void ThrowsOnLeftUnreadable(MethodInfo assign, Type type) Type unreadableType = typeof(Unreadable<>).MakeGenericType(type); Expression property = Expression.Property(null, unreadableType.GetProperty("WriteOnly")); - Assert.Throws("left", () => withAssignment(property, Expression.Default(type))); + AssertExtensions.Throws("left", () => withAssignment(property, Expression.Default(type))); } [Theory] @@ -237,7 +237,7 @@ public static void ThrowsOnRightUnreadable(MethodInfo assign, Type type) Type unreadableType = typeof(Unreadable<>).MakeGenericType(type); Expression property = Expression.Property(null, unreadableType.GetProperty("WriteOnly")); Expression variable = Expression.Variable(type); - Assert.Throws("right", () => withAssignment(variable, property)); + AssertExtensions.Throws("right", () => withAssignment(variable, property)); } [Theory] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryAndTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryAndTests.cs index 96126e7986c7..27bdcabb38c2 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryAndTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryAndTests.cs @@ -236,13 +236,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.And(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.And(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.And(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.And(Expression.Constant(""), null)); } private static class Unreadable @@ -257,14 +257,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.And(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.And(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.And(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.And(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryExclusiveOrTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryExclusiveOrTests.cs index b4265223ee85..62691f561f7a 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryExclusiveOrTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryExclusiveOrTests.cs @@ -236,13 +236,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.ExclusiveOr(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.ExclusiveOr(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.ExclusiveOr(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.ExclusiveOr(Expression.Constant(""), null)); } private static class Unreadable @@ -257,14 +257,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.ExclusiveOr(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.ExclusiveOr(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.ExclusiveOr(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.ExclusiveOr(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryOrTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryOrTests.cs index 5551702e4d0d..246f1f7cff64 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryOrTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Bitwise/BinaryOrTests.cs @@ -236,13 +236,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Or(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Or(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Or(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Or(Expression.Constant(""), null)); } private static class Unreadable @@ -257,14 +257,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Or(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Or(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Or(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Or(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs index 79bf3e4e6730..bbe39e40bb64 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Coalesce/BinaryCoalesceTests.cs @@ -324,13 +324,13 @@ public static void CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Coalesce(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Coalesce(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Coalesce(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Coalesce(Expression.Constant(""), null)); } private static class Unreadable @@ -345,14 +345,14 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Coalesce(value, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Coalesce(value, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Coalesce(Expression.Constant(""), value)); + AssertExtensions.Throws("right", () => Expression.Coalesce(Expression.Constant(""), value)); } [Theory] @@ -403,7 +403,7 @@ public static void Conversion_VoidReturnType_ThrowsArgumentException() { LambdaExpression conversion = Expression.Lambda(typeof(VoidDelegate), Expression.Constant("")); - Assert.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), conversion)); + AssertExtensions.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), conversion)); } [Fact] @@ -412,8 +412,8 @@ public static void Conversion_NumberOfParameters_NotOne_ThrowsArgumentException( Expression> moreThanOne = (x, y) => x * 2; Expression> lessThanOne = () => 2; - Assert.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), moreThanOne)); - Assert.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), lessThanOne)); + AssertExtensions.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), moreThanOne)); + AssertExtensions.Throws("conversion", () => Expression.Coalesce(Expression.Constant(""), Expression.Constant(""), lessThanOne)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/CompareTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/CompareTests.cs index ca899b2e4996..959c46f13a2a 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/CompareTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/CompareTests.cs @@ -148,19 +148,19 @@ public static void LessThan_CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.GreaterThanOrEqual(null, Expression.Constant(0))); - Assert.Throws("left", () => Expression.GreaterThan(null, Expression.Constant(0))); - Assert.Throws("left", () => Expression.LessThanOrEqual(null, Expression.Constant(0))); - Assert.Throws("left", () => Expression.LessThanOrEqual(null, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.GreaterThanOrEqual(null, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.GreaterThan(null, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.LessThanOrEqual(null, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.LessThanOrEqual(null, Expression.Constant(0))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.GreaterThanOrEqual(Expression.Constant(0), null)); - Assert.Throws("right", () => Expression.GreaterThan(Expression.Constant(0), null)); - Assert.Throws("right", () => Expression.LessThanOrEqual(Expression.Constant(0), null)); - Assert.Throws("right", () => Expression.LessThan(Expression.Constant(0), null)); + AssertExtensions.Throws("right", () => Expression.GreaterThanOrEqual(Expression.Constant(0), null)); + AssertExtensions.Throws("right", () => Expression.GreaterThan(Expression.Constant(0), null)); + AssertExtensions.Throws("right", () => Expression.LessThanOrEqual(Expression.Constant(0), null)); + AssertExtensions.Throws("right", () => Expression.LessThan(Expression.Constant(0), null)); } private static class Unreadable @@ -175,20 +175,20 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.GreaterThanOrEqual(value, Expression.Constant(1))); - Assert.Throws("left", () => Expression.GreaterThan(value, Expression.Constant(1))); - Assert.Throws("left", () => Expression.LessThanOrEqual(value, Expression.Constant(1))); - Assert.Throws("left", () => Expression.LessThan(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.GreaterThanOrEqual(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.GreaterThan(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.LessThanOrEqual(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.LessThan(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.GreaterThanOrEqual(Expression.Constant(1), value)); - Assert.Throws("right", () => Expression.GreaterThan(Expression.Constant(1), value)); - Assert.Throws("right", () => Expression.LessThanOrEqual(Expression.Constant(1), value)); - Assert.Throws("right", () => Expression.LessThan(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.GreaterThanOrEqual(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.GreaterThan(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.LessThanOrEqual(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.LessThan(Expression.Constant(1), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/EqualNotEqualTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/EqualNotEqualTests.cs index cd2daee757a2..7678be39622e 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/EqualNotEqualTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Comparison/EqualNotEqualTests.cs @@ -132,15 +132,15 @@ public static void NotEqual_CannotReduce() [Fact] public static void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.Equal(null, Expression.Constant(""))); - Assert.Throws("left", () => Expression.NotEqual(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.Equal(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.NotEqual(null, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.Equal(Expression.Constant(""), null)); - Assert.Throws("right", () => Expression.NotEqual(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.Equal(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.NotEqual(Expression.Constant(""), null)); } private static class Unreadable @@ -155,16 +155,16 @@ public static T WriteOnly public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.Equal(value, Expression.Constant(1))); - Assert.Throws("left", () => Expression.NotEqual(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.Equal(value, Expression.Constant(1))); + AssertExtensions.Throws("left", () => Expression.NotEqual(value, Expression.Constant(1))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.Equal(Expression.Constant(1), value)); - Assert.Throws("right", () => Expression.NotEqual(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.Equal(Expression.Constant(1), value)); + AssertExtensions.Throws("right", () => Expression.NotEqual(Expression.Constant(1), value)); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/GeneralBinaryTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/GeneralBinaryTests.cs index 82c95ac3994e..57af9f0ea1a8 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/GeneralBinaryTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/GeneralBinaryTests.cs @@ -124,9 +124,9 @@ public static IEnumerable NonBinaryTypesIncludingInvalidData() [MemberData(nameof(NonBinaryTypesIncludingInvalidData))] public void MakeBinaryInvalidType(ExpressionType type) { - Assert.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0))); - Assert.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0), false, null)); - Assert.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0), false, null, null)); + AssertExtensions.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0), false, null)); + AssertExtensions.Throws("binaryType", () => Expression.MakeBinary(type, Expression.Constant(0), Expression.Constant(0), false, null, null)); } [Theory] @@ -275,9 +275,9 @@ public static void MethodOfOpenGeneric(ExpressionType type, bool useInterpreter) ConstantExpression right = Expression.Constant(2); var genType = typeof(GenericClassWithNonGenericMethod<>); MethodInfo method = genType.GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); - Assert.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); + AssertExtensions.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); method = genType.MakeGenericType(genType).GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); - Assert.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); + AssertExtensions.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); // Confirm does work when closed. var validType = typeof(GenericClassWithNonGenericMethod); @@ -295,9 +295,9 @@ public static void MethodOfOpenGenericBoolean(ExpressionType type, bool useInter ConstantExpression right = Expression.Constant(new GenericClassWithNonGenericMethod()); var genType = typeof(GenericClassWithNonGenericMethod<>); MethodInfo method = genType.GetMethod(nameof(GenericClassWithNonGenericMethod.DoBooleanStuff)); - Assert.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); + AssertExtensions.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); method = genType.MakeGenericType(genType).GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); - Assert.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); + AssertExtensions.Throws("method", () => Expression.MakeBinary(type, left, right, false, method)); // Confirm does work when closed. var validType = typeof(GenericClassWithNonGenericMethod); diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/Logical/BinaryLogicalTests.cs b/src/System.Linq.Expressions/tests/BinaryOperators/Logical/BinaryLogicalTests.cs index 8c3a158290c0..85a5b4c39f7b 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/Logical/BinaryLogicalTests.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/Logical/BinaryLogicalTests.cs @@ -268,29 +268,29 @@ public static void OrElse_CannotReduce() [Fact] public static void AndAlso_LeftNull_ThrowsArgumentNullException() { - Assert.Throws("left", () => Expression.AndAlso(null, Expression.Constant(true))); - Assert.Throws("left", () => Expression.AndAlso(null, Expression.Constant(true), null)); + AssertExtensions.Throws("left", () => Expression.AndAlso(null, Expression.Constant(true))); + AssertExtensions.Throws("left", () => Expression.AndAlso(null, Expression.Constant(true), null)); } [Fact] public static void OrElse_LeftNull_ThrowsArgumentNullException() { - Assert.Throws("left", () => Expression.OrElse(null, Expression.Constant(true))); - Assert.Throws("left", () => Expression.OrElse(null, Expression.Constant(true), null)); + AssertExtensions.Throws("left", () => Expression.OrElse(null, Expression.Constant(true))); + AssertExtensions.Throws("left", () => Expression.OrElse(null, Expression.Constant(true), null)); } [Fact] public static void AndAlso_RightNull_ThrowsArgumentNullException() { - Assert.Throws("right", () => Expression.AndAlso(Expression.Constant(true), null)); - Assert.Throws("right", () => Expression.AndAlso(Expression.Constant(true), null, null)); + AssertExtensions.Throws("right", () => Expression.AndAlso(Expression.Constant(true), null)); + AssertExtensions.Throws("right", () => Expression.AndAlso(Expression.Constant(true), null, null)); } [Fact] public static void OrElse_RightNull_ThrowsArgumentNullException() { - Assert.Throws("right", () => Expression.OrElse(Expression.Constant(true), null)); - Assert.Throws("right", () => Expression.OrElse(Expression.Constant(true), null, null)); + AssertExtensions.Throws("right", () => Expression.OrElse(Expression.Constant(true), null)); + AssertExtensions.Throws("right", () => Expression.OrElse(Expression.Constant(true), null, null)); } [Fact] @@ -318,8 +318,8 @@ public static IEnumerable InvalidMethod_TestData() [MemberData(nameof(InvalidMethod_TestData))] public static void InvalidMethod_ThrowsArgumentException(MethodInfo method) { - Assert.Throws("method", () => Expression.AndAlso(Expression.Constant(5), Expression.Constant(5), method)); - Assert.Throws("method", () => Expression.OrElse(Expression.Constant(5), Expression.Constant(5), method)); + AssertExtensions.Throws("method", () => Expression.AndAlso(Expression.Constant(5), Expression.Constant(5), method)); + AssertExtensions.Throws("method", () => Expression.OrElse(Expression.Constant(5), Expression.Constant(5), method)); } @@ -330,8 +330,8 @@ public static void InvalidMethod_ThrowsArgumentException(MethodInfo method) public static void Method_DoesntHaveTwoParameters_ThrowsArgumentException(Type type, string methodName) { MethodInfo method = type.GetMethod(methodName); - Assert.Throws("method", () => Expression.AndAlso(Expression.Constant(5), Expression.Constant(5), method)); - Assert.Throws("method", () => Expression.OrElse(Expression.Constant(5), Expression.Constant(5), method)); + AssertExtensions.Throws("method", () => Expression.AndAlso(Expression.Constant(5), Expression.Constant(5), method)); + AssertExtensions.Throws("method", () => Expression.OrElse(Expression.Constant(5), Expression.Constant(5), method)); } [Fact] @@ -412,7 +412,7 @@ public static void AndAlso_NoMethod_VoidReturnType_ThrowsArgumentException() Type createdType = type.CreateTypeInfo(); object obj = Activator.CreateInstance(createdType); - Assert.Throws("method", () => Expression.AndAlso(Expression.Constant(obj), Expression.Constant(obj))); + AssertExtensions.Throws("method", () => Expression.AndAlso(Expression.Constant(obj), Expression.Constant(obj))); } [Fact] @@ -425,7 +425,7 @@ public static void OrElse_NoMethod_VoidReturnType_ThrowsArgumentException() Type createdType = type.CreateTypeInfo(); object obj = Activator.CreateInstance(createdType); - Assert.Throws("method", () => Expression.OrElse(Expression.Constant(obj), Expression.Constant(obj))); + AssertExtensions.Throws("method", () => Expression.OrElse(Expression.Constant(obj), Expression.Constant(obj))); } [Theory] @@ -744,28 +744,28 @@ public static void ImplicitConversionToBool_ThrowsArgumentException() [ClassData(typeof(UnreadableExpressionsData))] public static void AndAlso_LeftIsWriteOnly_ThrowsArgumentException(Expression unreadableExpression) { - Assert.Throws("left", () => Expression.AndAlso(unreadableExpression, Expression.Constant(true))); + AssertExtensions.Throws("left", () => Expression.AndAlso(unreadableExpression, Expression.Constant(true))); } [Theory] [ClassData(typeof(UnreadableExpressionsData))] public static void AndAlso_RightIsWriteOnly_ThrowsArgumentException(Expression unreadableExpression) { - Assert.Throws("right", () => Expression.AndAlso(Expression.Constant(true), unreadableExpression)); + AssertExtensions.Throws("right", () => Expression.AndAlso(Expression.Constant(true), unreadableExpression)); } [Theory] [ClassData(typeof(UnreadableExpressionsData))] public static void OrElse_LeftIsWriteOnly_ThrowsArgumentException(Expression unreadableExpression) { - Assert.Throws("left", () => Expression.OrElse(unreadableExpression, Expression.Constant(true))); + AssertExtensions.Throws("left", () => Expression.OrElse(unreadableExpression, Expression.Constant(true))); } [Theory] [ClassData(typeof(UnreadableExpressionsData))] public static void OrElse_RightIsWriteOnly_ThrowsArgumentException(Expression unreadableExpression) { - Assert.Throws("right", () => Expression.OrElse(Expression.Constant(false), unreadableExpression)); + AssertExtensions.Throws("right", () => Expression.OrElse(Expression.Constant(false), unreadableExpression)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceEqual.cs b/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceEqual.cs index 65ca4ed75c65..bf504e1857a3 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceEqual.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceEqual.cs @@ -150,27 +150,27 @@ public void CannotReduce() [Fact] public void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.ReferenceEqual(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.ReferenceEqual(null, Expression.Constant(""))); } [Fact] public void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.ReferenceEqual(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.ReferenceEqual(Expression.Constant(""), null)); } [Fact] public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.ReferenceEqual(value, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.ReferenceEqual(value, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.ReferenceEqual(Expression.Constant(""), value)); + AssertExtensions.Throws("right", () => Expression.ReferenceEqual(Expression.Constant(""), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceNotEqual.cs b/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceNotEqual.cs index 08767aa4e6ae..2e6a4e125e88 100644 --- a/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceNotEqual.cs +++ b/src/System.Linq.Expressions/tests/BinaryOperators/ReferenceComparison/ReferenceNotEqual.cs @@ -150,27 +150,27 @@ public void CannotReduce() [Fact] public void ThrowsOnLeftNull() { - Assert.Throws("left", () => Expression.ReferenceNotEqual(null, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.ReferenceNotEqual(null, Expression.Constant(""))); } [Fact] public void ThrowsOnRightNull() { - Assert.Throws("right", () => Expression.ReferenceNotEqual(Expression.Constant(""), null)); + AssertExtensions.Throws("right", () => Expression.ReferenceNotEqual(Expression.Constant(""), null)); } [Fact] public static void ThrowsOnLeftUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("left", () => Expression.ReferenceNotEqual(value, Expression.Constant(""))); + AssertExtensions.Throws("left", () => Expression.ReferenceNotEqual(value, Expression.Constant(""))); } [Fact] public static void ThrowsOnRightUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("right", () => Expression.ReferenceNotEqual(Expression.Constant(""), value)); + AssertExtensions.Throws("right", () => Expression.ReferenceNotEqual(Expression.Constant(""), value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Block/BlockTests.cs b/src/System.Linq.Expressions/tests/Block/BlockTests.cs index 8ef94db4bbf6..0d4788bad528 100644 --- a/src/System.Linq.Expressions/tests/Block/BlockTests.cs +++ b/src/System.Linq.Expressions/tests/Block/BlockTests.cs @@ -160,7 +160,7 @@ public static void EmptyBlock(bool useInterpreter) { BlockExpression block = Expression.Block(); Assert.Equal(typeof(void), block.Type); - Assert.Throws("index", () => block.Result); + AssertExtensions.Throws("index", () => block.Result); Action nop = Expression.Lambda(block).Compile(useInterpreter); nop(); } @@ -171,7 +171,7 @@ public static void EmptyBlockExplicitType(bool useInterpreter) { BlockExpression block = Expression.Block(typeof(void)); Assert.Equal(typeof(void), block.Type); - Assert.Throws("index", () => block.Result); + AssertExtensions.Throws("index", () => block.Result); Action nop = Expression.Lambda(block).Compile(useInterpreter); nop(); } @@ -188,7 +188,7 @@ public static void EmptyScope(bool useInterpreter) { BlockExpression scope = Expression.Block(new[] { Expression.Parameter(typeof(int), "x") }, new Expression[0]); Assert.Equal(typeof(void), scope.Type); - Assert.Throws("index", () => scope.Result); + AssertExtensions.Throws("index", () => scope.Result); Action nop = Expression.Lambda(scope).Compile(useInterpreter); nop(); } @@ -199,7 +199,7 @@ public static void EmptyScopeExplicitType(bool useInterpreter) { BlockExpression scope = Expression.Block(typeof(void), new[] { Expression.Parameter(typeof(int), "x") }, new Expression[0]); Assert.Equal(typeof(void), scope.Type); - Assert.Throws("index", () => scope.Result); + AssertExtensions.Throws("index", () => scope.Result); Action nop = Expression.Lambda(scope).Compile(useInterpreter); nop(); } diff --git a/src/System.Linq.Expressions/tests/Block/NoParameterBlockTests.cs b/src/System.Linq.Expressions/tests/Block/NoParameterBlockTests.cs index fea884561f16..6b43d23223b4 100644 --- a/src/System.Linq.Expressions/tests/Block/NoParameterBlockTests.cs +++ b/src/System.Linq.Expressions/tests/Block/NoParameterBlockTests.cs @@ -47,15 +47,15 @@ public void DoubleElementBlock(object value, bool useInterpreter) [Fact] public void DoubleElementBlockNullArgument() { - Assert.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression))); + AssertExtensions.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression))); } [Fact] public void DoubleElementBlockUnreadable() { - Assert.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression)); + AssertExtensions.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression)); } [Theory] @@ -79,17 +79,17 @@ public void TripleElementBlock(object value, bool useInterpreter) [Fact] public void TripleElementBlockNullArgument() { - Assert.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression))); + AssertExtensions.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression))); } [Fact] public void TripleElementBlockUnreadable() { - Assert.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); + AssertExtensions.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); } [Theory] @@ -114,19 +114,19 @@ public void QuadrupleElementBlock(object value, bool useInterpreter) [Fact] public void QuadrupleElementBlockNullArgument() { - Assert.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1))); - Assert.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression))); + AssertExtensions.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1))); + AssertExtensions.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression))); } [Fact] public void QuadrupleElementBlockUnreadable() { - Assert.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); - Assert.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); + AssertExtensions.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); + AssertExtensions.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); } [Theory] @@ -152,21 +152,21 @@ public void QuintupleElementBlock(object value, bool useInterpreter) [Fact] public void QuintupleElementBlockNullArgument() { - Assert.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1))); - Assert.Throws("arg4", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression))); + AssertExtensions.Throws("arg0", () => Expression.Block(default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression), Expression.Constant(1))); + AssertExtensions.Throws("arg4", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), default(Expression))); } [Fact] public void QuintupleElementBlockUnreadable() { - Assert.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); - Assert.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); - Assert.Throws("arg4", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); + AssertExtensions.Throws("arg0", () => Expression.Block(UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Block(Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg2", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1), Expression.Constant(1))); + AssertExtensions.Throws("arg3", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression, Expression.Constant(1))); + AssertExtensions.Throws("arg4", () => Expression.Block(Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), Expression.Constant(1), UnreadableExpression)); } [Theory] @@ -193,15 +193,15 @@ public void SextupleElementBlock(object value, bool useInterpreter) [Fact] public void NullExpicitType() { - Assert.Throws("type", () => Expression.Block(default(Type), default(IEnumerable), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Block(default(Type), null, Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("type", () => Expression.Block(default(Type), default(IEnumerable), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Block(default(Type), null, Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void NullExpressionList() { - Assert.Throws("expressions", () => Expression.Block(default(Expression[]))); - Assert.Throws("expressions", () => Expression.Block(default(IEnumerable))); + AssertExtensions.Throws("expressions", () => Expression.Block(default(Expression[]))); + AssertExtensions.Throws("expressions", () => Expression.Block(default(IEnumerable))); } [Theory] @@ -268,8 +268,8 @@ public void BlockInvalidExplicitType(int blockSize) public void InvalidExpressionIndex(object value, int blockSize) { BlockExpression block = Expression.Block(PadBlock(blockSize - 1, Expression.Constant(value, value.GetType()))); - Assert.Throws("index", () => block.Expressions[-1]); - Assert.Throws("index", () => block.Expressions[blockSize]); + AssertExtensions.Throws("index", () => block.Expressions[-1]); + AssertExtensions.Throws("index", () => block.Expressions[blockSize]); } [Fact] @@ -380,8 +380,8 @@ public void ExpressionListBehavior(int parCount) Assert.All(copyToTest, Assert.Null); children.CopyTo(copyToTest, 1); Assert.Equal(copyToTest, exps.Prepend(null)); - Assert.Throws("index", () => children[-1]); - Assert.Throws("index", () => children[parCount]); + AssertExtensions.Throws("index", () => children[-1]); + AssertExtensions.Throws("index", () => children[parCount]); Assert.Equal(-1, children.IndexOf(Expression.Parameter(typeof(int)))); Assert.False(children.Contains(Expression.Parameter(typeof(int)))); } @@ -460,7 +460,7 @@ public void UpdateToNullArguments(int blockSize) BlockExpression block = Expression.Block(expressions); - Assert.Throws("expressions", () => block.Update(null, null)); + AssertExtensions.Throws("expressions", () => block.Update(null, null)); } [Theory, MemberData(nameof(BlockSizes))] diff --git a/src/System.Linq.Expressions/tests/Block/ParameterBlockTests.cs b/src/System.Linq.Expressions/tests/Block/ParameterBlockTests.cs index 282ff79f47bc..8bd710fd3e8f 100644 --- a/src/System.Linq.Expressions/tests/Block/ParameterBlockTests.cs +++ b/src/System.Linq.Expressions/tests/Block/ParameterBlockTests.cs @@ -53,17 +53,17 @@ public void DoubleElementBlock(object value, bool useInterpreter) [Fact] public void NullExpicitType() { - Assert.Throws("type", () => Expression.Block(null, SingleParameter, Expression.Constant(0))); - Assert.Throws("type", () => Expression.Block(null, SingleParameter, Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("type", () => Expression.Block(null, SingleParameter, Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Block(null, SingleParameter, Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void NullExpressionList() { - Assert.Throws("expressions", () => Expression.Block(SingleParameter, default(Expression[]))); - Assert.Throws("expressions", () => Expression.Block(SingleParameter, default(IEnumerable))); - Assert.Throws("expressions", () => Expression.Block(typeof(int), SingleParameter, default(Expression[]))); - Assert.Throws("expressions", () => Expression.Block(typeof(int), SingleParameter, default(IEnumerable))); + AssertExtensions.Throws("expressions", () => Expression.Block(SingleParameter, default(Expression[]))); + AssertExtensions.Throws("expressions", () => Expression.Block(SingleParameter, default(IEnumerable))); + AssertExtensions.Throws("expressions", () => Expression.Block(typeof(int), SingleParameter, default(Expression[]))); + AssertExtensions.Throws("expressions", () => Expression.Block(typeof(int), SingleParameter, default(IEnumerable))); } [Theory] @@ -142,8 +142,8 @@ public void BlockFromEmptyParametersSameAsFromParams(object value, int blockSize public void InvalidExpressionIndex(object value, int blockSize) { BlockExpression block = Expression.Block(SingleParameter, PadBlock(blockSize - 1, Expression.Constant(value, value.GetType()))); - Assert.Throws("index", () => block.Expressions[-1]); - Assert.Throws("index", () => block.Expressions[blockSize]); + AssertExtensions.Throws("index", () => block.Expressions[-1]); + AssertExtensions.Throws("index", () => block.Expressions[blockSize]); } [Fact] @@ -289,10 +289,10 @@ public void NullVariables(int blockSize) IEnumerable expressions = PadBlock(blockSize - 1, Expression.Constant(0)); IEnumerable vars = Enumerable.Repeat(default(ParameterExpression), 1); - Assert.Throws("variables[0]", () => Expression.Block(vars, expressions)); - Assert.Throws("variables[0]", () => Expression.Block(vars, expressions.ToArray())); - Assert.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions)); - Assert.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); + AssertExtensions.Throws("variables[0]", () => Expression.Block(vars, expressions)); + AssertExtensions.Throws("variables[0]", () => Expression.Block(vars, expressions.ToArray())); + AssertExtensions.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions)); + AssertExtensions.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); } [Theory] @@ -302,10 +302,10 @@ public void ByRefVariables(int blockSize) IEnumerable expressions = PadBlock(blockSize - 1, Expression.Constant(0)); IEnumerable vars = Enumerable.Repeat(Expression.Parameter(typeof(int).MakeByRefType()), 1); - Assert.Throws("variables[0]", () => Expression.Block(vars, expressions)); - Assert.Throws("variables[0]", () => Expression.Block(vars, expressions.ToArray())); - Assert.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions)); - Assert.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); + AssertExtensions.Throws("variables[0]", () => Expression.Block(vars, expressions)); + AssertExtensions.Throws("variables[0]", () => Expression.Block(vars, expressions.ToArray())); + AssertExtensions.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions)); + AssertExtensions.Throws("variables[0]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); } [Theory] @@ -316,10 +316,10 @@ public void RepeatedVariables(int blockSize) ParameterExpression variable = Expression.Variable(typeof(int)); IEnumerable vars = Enumerable.Repeat(variable, 2); - Assert.Throws("variables[1]", () => Expression.Block(vars, expressions)); - Assert.Throws("variables[1]", () => Expression.Block(vars, expressions.ToArray())); - Assert.Throws("variables[1]", () => Expression.Block(typeof(object), vars, expressions)); - Assert.Throws("variables[1]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); + AssertExtensions.Throws("variables[1]", () => Expression.Block(vars, expressions)); + AssertExtensions.Throws("variables[1]", () => Expression.Block(vars, expressions.ToArray())); + AssertExtensions.Throws("variables[1]", () => Expression.Block(typeof(object), vars, expressions)); + AssertExtensions.Throws("variables[1]", () => Expression.Block(typeof(object), vars, expressions.ToArray())); } [Theory, MemberData(nameof(BlockSizes))] diff --git a/src/System.Linq.Expressions/tests/Call/CallFactoryTests.cs b/src/System.Linq.Expressions/tests/Call/CallFactoryTests.cs index bbdb232ac429..96b3a38704ec 100644 --- a/src/System.Linq.Expressions/tests/Call/CallFactoryTests.cs +++ b/src/System.Linq.Expressions/tests/Call/CallFactoryTests.cs @@ -346,7 +346,7 @@ public static void UpdateStaticNull() expr = Expression.Call(typeof(MS).GetMethod("S" + argNum), args); // Should attempt to create new expression, and fail due to incorrect arguments. - Assert.Throws("method", () => expr.Update(null, null)); + AssertExtensions.Throws("method", () => expr.Update(null, null)); } } @@ -364,7 +364,7 @@ public static void UpdateInstanceNull() expr = Expression.Call(instance, typeof(MS).GetMethod("I" + argNum), args); // Should attempt to create new expression, and fail due to incorrect arguments. - Assert.Throws("method", () => expr.Update(instance, null)); + AssertExtensions.Throws("method", () => expr.Update(instance, null)); } } @@ -378,7 +378,7 @@ public static void UpdateStaticExtraArguments() MethodCallExpression expr = Expression.Call(typeof(MS).GetMethod("S" + argNum), args); // Should attempt to create new expression, and fail due to incorrect arguments. - Assert.Throws("method", () => expr.Update(null, args.Append(Expression.Constant(-1)))); + AssertExtensions.Throws("method", () => expr.Update(null, args.Append(Expression.Constant(-1)))); } } @@ -393,7 +393,7 @@ public static void UpdateInstanceExtraArguments() MethodCallExpression expr = Expression.Call(instance, typeof(MS).GetMethod("I" + argNum), args); // Should attempt to create new expression, and fail due to incorrect arguments. - Assert.Throws("method", () => expr.Update(instance, args.Append(Expression.Constant(-1)))); + AssertExtensions.Throws("method", () => expr.Update(instance, args.Append(Expression.Constant(-1)))); } } diff --git a/src/System.Linq.Expressions/tests/Call/CallTests.cs b/src/System.Linq.Expressions/tests/Call/CallTests.cs index 466ff75cb686..08622241f3bb 100644 --- a/src/System.Linq.Expressions/tests/Call/CallTests.cs +++ b/src/System.Linq.Expressions/tests/Call/CallTests.cs @@ -312,8 +312,8 @@ public static void Method_Invalid_ThrowsArgumentException(MethodInfo method, Typ [Fact] public static void Method_Invalid_Via_Name() { - Assert.Throws("method", () => Expression.Call(typeof(GenericClass<>), nameof(GenericClass.NonGenericMethod), Type.EmptyTypes)); - Assert.Throws("method", () => Expression.Call(typeof(GenericClass<>).MakeGenericType(typeof(GenericClass<>)), nameof(GenericClass.NonGenericMethod), Type.EmptyTypes)); + AssertExtensions.Throws("method", () => Expression.Call(typeof(GenericClass<>), nameof(GenericClass.NonGenericMethod), Type.EmptyTypes)); + AssertExtensions.Throws("method", () => Expression.Call(typeof(GenericClass<>).MakeGenericType(typeof(GenericClass<>)), nameof(GenericClass.NonGenericMethod), Type.EmptyTypes)); } public static IEnumerable Method_DoesntBelongToInstance_TestData() @@ -449,56 +449,56 @@ public static void InvalidArgumentCount_ThrowsArgumentException(Type type, strin Expression arg = Expression.Constant("abc"); if (count != 0) { - Assert.Throws("method", () => Expression.Call(method)); - Assert.Throws("method", () => Expression.Call(null, method)); + AssertExtensions.Throws("method", () => Expression.Call(method)); + AssertExtensions.Throws("method", () => Expression.Call(null, method)); } if (count != 1) { - Assert.Throws("method", () => Expression.Call(method, arg)); - Assert.Throws("method", () => Expression.Call(null, method, arg)); + AssertExtensions.Throws("method", () => Expression.Call(method, arg)); + AssertExtensions.Throws("method", () => Expression.Call(null, method, arg)); } if (count != 2) { - Assert.Throws("method", () => Expression.Call(method, arg, arg)); - Assert.Throws("method", () => Expression.Call(null, method, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(method, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(null, method, arg, arg)); } if (count != 3) { - Assert.Throws("method", () => Expression.Call(method, arg, arg, arg)); - Assert.Throws("method", () => Expression.Call(null, method, arg, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(method, arg, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(null, method, arg, arg, arg)); } if (count != 4) { - Assert.Throws("method", () => Expression.Call(method, arg, arg, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(method, arg, arg, arg, arg)); } if (count != 5) { - Assert.Throws("method", () => Expression.Call(method, arg, arg, arg, arg, arg)); + AssertExtensions.Throws("method", () => Expression.Call(method, arg, arg, arg, arg, arg)); } - Assert.Throws("method", () => Expression.Call(method, Enumerable.Repeat(arg, count + 1).ToArray())); - Assert.Throws("method", () => Expression.Call(method, Enumerable.Repeat(arg, count + 1))); + AssertExtensions.Throws("method", () => Expression.Call(method, Enumerable.Repeat(arg, count + 1).ToArray())); + AssertExtensions.Throws("method", () => Expression.Call(method, Enumerable.Repeat(arg, count + 1))); - Assert.Throws("method", () => Expression.Call(null, method, Enumerable.Repeat(arg, count + 1).ToArray())); - Assert.Throws("method", () => Expression.Call(null, method, Enumerable.Repeat(arg, count + 1))); + AssertExtensions.Throws("method", () => Expression.Call(null, method, Enumerable.Repeat(arg, count + 1).ToArray())); + AssertExtensions.Throws("method", () => Expression.Call(null, method, Enumerable.Repeat(arg, count + 1))); } [Fact] public static void MethodName_NullInstance_ThrowsArgumentNullException() { - Assert.Throws("instance", () => Expression.Call((Expression)null, "methodName", new Type[0], new Expression[0])); + AssertExtensions.Throws("instance", () => Expression.Call((Expression)null, "methodName", new Type[0], new Expression[0])); } [Fact] public static void MethodName_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => Expression.Call((Type)null, "methodName", new Type[0], new Expression[0])); + AssertExtensions.Throws("type", () => Expression.Call((Type)null, "methodName", new Type[0], new Expression[0])); } [Fact] public static void NullMethodName_ThrowsArgumentNullException() { - Assert.Throws("methodName", () => Expression.Call(Expression.Constant(new NonGenericClass()), null, new Type[0], new Expression[0])); - Assert.Throws("methodName", () => Expression.Call(typeof(NonGenericClass), null, new Type[0], new Expression[0])); + AssertExtensions.Throws("methodName", () => Expression.Call(Expression.Constant(new NonGenericClass()), null, new Type[0], new Expression[0])); + AssertExtensions.Throws("methodName", () => Expression.Call(typeof(NonGenericClass), null, new Type[0], new Expression[0])); } [Fact] @@ -547,8 +547,8 @@ public static void MethodName_TypeArgsHasNullValue_ThrowsArgumentNullException() [Fact] public static void MethodName_ArgumentsHasNullValue_ThrowsArgumentNullException() { - Assert.Throws("arguments", () => Expression.Call(Expression.Constant(new NonGenericClass()), nameof(NonGenericClass.InstanceMethod1), new Type[0], new Expression[] { null })); - Assert.Throws("arguments", () => Expression.Call(typeof(NonGenericClass), nameof(NonGenericClass.StaticMethod1), new Type[0], new Expression[] { null })); + AssertExtensions.Throws("arguments", () => Expression.Call(Expression.Constant(new NonGenericClass()), nameof(NonGenericClass.InstanceMethod1), new Type[0], new Expression[] { null })); + AssertExtensions.Throws("arguments", () => Expression.Call(typeof(NonGenericClass), nameof(NonGenericClass.StaticMethod1), new Type[0], new Expression[] { null })); } [Fact] @@ -630,8 +630,8 @@ private static void VerifyGetArguments(MethodCallExpression call) { var args = call.Arguments; Assert.Equal(args.Count, call.ArgumentCount); - Assert.Throws("index", () => call.GetArgument(-1)); - Assert.Throws("index", () => call.GetArgument(args.Count)); + AssertExtensions.Throws("index", () => call.GetArgument(-1)); + AssertExtensions.Throws("index", () => call.GetArgument(args.Count)); for (int i = 0; i != args.Count; ++i) { Assert.Same(args[i], call.GetArgument(i)); diff --git a/src/System.Linq.Expressions/tests/Cast/AsTests.cs b/src/System.Linq.Expressions/tests/Cast/AsTests.cs index 2e4fa65e4e69..0fba5bca41a5 100644 --- a/src/System.Linq.Expressions/tests/Cast/AsTests.cs +++ b/src/System.Linq.Expressions/tests/Cast/AsTests.cs @@ -849,24 +849,24 @@ public static void ToStringTest() [Fact] public static void NonNullableValueType() { - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(0), typeof(int))); - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(null), typeof(DateTime))); - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(DateTime.MinValue), typeof(DateTime))); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(0), typeof(int))); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(null), typeof(DateTime))); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(DateTime.MinValue), typeof(DateTime))); } [Fact] public static void NullType() => - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(""), null)); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(""), null)); [Fact] public static void NullExpression() => - Assert.Throws("expression", () => Expression.TypeAs(null, typeof(string))); + AssertExtensions.Throws("expression", () => Expression.TypeAs(null, typeof(string))); [Fact] public static void AsOpenGeneric() { - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(""), typeof(List<>))); - Assert.Throws("type", () => Expression.TypeAs(Expression.Constant(""), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(""), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.TypeAs(Expression.Constant(""), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] @@ -888,7 +888,7 @@ public static void UnreadableTypeAs() { MemberExpression unreadable = Expression.Property( null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.TypeAs(unreadable, typeof(string))); + AssertExtensions.Throws("expression", () => Expression.TypeAs(unreadable, typeof(string))); } #endregion diff --git a/src/System.Linq.Expressions/tests/Conditional/ConditionalTests.cs b/src/System.Linq.Expressions/tests/Conditional/ConditionalTests.cs index 935cc231c5f9..6ec8982e63a1 100644 --- a/src/System.Linq.Expressions/tests/Conditional/ConditionalTests.cs +++ b/src/System.Linq.Expressions/tests/Conditional/ConditionalTests.cs @@ -34,88 +34,88 @@ public void Conditional(bool useInterpreter) [Fact] public void NullTest() { - Assert.Throws("test", () => Expression.IfThen(null, Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(null, Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(null, Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(null, Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(null, Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(null, Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(null, Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(null, Expression.Empty(), Expression.Empty(), typeof(void))); } [Fact] public void UnreadableTest() { Expression test = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("test", () => Expression.IfThen(test, Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(test, Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(test, Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(test, Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(test, Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(test, Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(test, Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(test, Expression.Empty(), Expression.Empty(), typeof(void))); } [Fact] public void NullIfTrue() { - Assert.Throws("ifTrue", () => Expression.IfThen(Expression.Constant(true), null)); - Assert.Throws("ifTrue", () => Expression.IfThenElse(Expression.Constant(true), null, Expression.Empty())); - Assert.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), null, Expression.Empty())); - Assert.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), null, Expression.Empty(), typeof(void))); + AssertExtensions.Throws("ifTrue", () => Expression.IfThen(Expression.Constant(true), null)); + AssertExtensions.Throws("ifTrue", () => Expression.IfThenElse(Expression.Constant(true), null, Expression.Empty())); + AssertExtensions.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), null, Expression.Empty())); + AssertExtensions.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), null, Expression.Empty(), typeof(void))); } [Fact] public void UnreadableIfTrue() { Expression ifTrue = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("ifTrue", () => Expression.IfThen(Expression.Constant(true), ifTrue)); - Assert.Throws("ifTrue", () => Expression.IfThenElse(Expression.Constant(true), ifTrue, Expression.Empty())); - Assert.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), ifTrue, Expression.Constant(0))); - Assert.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), ifTrue, Expression.Empty(), typeof(void))); + AssertExtensions.Throws("ifTrue", () => Expression.IfThen(Expression.Constant(true), ifTrue)); + AssertExtensions.Throws("ifTrue", () => Expression.IfThenElse(Expression.Constant(true), ifTrue, Expression.Empty())); + AssertExtensions.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), ifTrue, Expression.Constant(0))); + AssertExtensions.Throws("ifTrue", () => Expression.Condition(Expression.Constant(true), ifTrue, Expression.Empty(), typeof(void))); } [Fact] public void NullIfFalse() { - Assert.Throws("ifFalse", () => Expression.IfThenElse(Expression.Constant(true), Expression.Empty(), null)); - Assert.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), null)); - Assert.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), null, typeof(void))); + AssertExtensions.Throws("ifFalse", () => Expression.IfThenElse(Expression.Constant(true), Expression.Empty(), null)); + AssertExtensions.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), null)); + AssertExtensions.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), null, typeof(void))); } [Fact] public void UnreadbleIfFalse() { Expression ifFalse = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("ifFalse", () => Expression.IfThenElse(Expression.Constant(true), Expression.Empty(), ifFalse)); - Assert.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Constant(0), ifFalse)); - Assert.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), ifFalse, typeof(void))); + AssertExtensions.Throws("ifFalse", () => Expression.IfThenElse(Expression.Constant(true), Expression.Empty(), ifFalse)); + AssertExtensions.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Constant(0), ifFalse)); + AssertExtensions.Throws("ifFalse", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), ifFalse, typeof(void))); } [Fact] public void NullType() { - Assert.Throws("type", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), Expression.Empty(), null)); + AssertExtensions.Throws("type", () => Expression.Condition(Expression.Constant(true), Expression.Empty(), Expression.Empty(), null)); } [Fact] public void NonBooleanTest() { - Assert.Throws("test", () => Expression.IfThen(Expression.Constant(0), Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(Expression.Constant(0), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(0), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(0), Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(Expression.Constant(0), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(Expression.Constant(0), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(0), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(0), Expression.Empty(), Expression.Empty(), typeof(void))); - Assert.Throws("test", () => Expression.IfThen(Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(Expression.Empty(), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Empty(), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Empty(), Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(Expression.Empty(), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Empty(), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Empty(), Expression.Empty(), Expression.Empty(), typeof(void))); - Assert.Throws("test", () => Expression.IfThen(Expression.Constant(true, typeof(bool?)), Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(Expression.Constant(true, typeof(bool?)), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(true, typeof(bool?)), Expression.Empty(), Expression.Empty(), typeof(void))); ConstantExpression truthyConstant = Expression.Constant(new Truthiness(true)); - Assert.Throws("test", () => Expression.IfThen(Expression.Constant(truthyConstant), Expression.Empty())); - Assert.Throws("test", () => Expression.IfThenElse(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty())); - Assert.Throws("test", () => Expression.Condition(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty(), typeof(void))); + AssertExtensions.Throws("test", () => Expression.IfThen(Expression.Constant(truthyConstant), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.IfThenElse(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("test", () => Expression.Condition(Expression.Constant(truthyConstant), Expression.Empty(), Expression.Empty(), typeof(void))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Constant/ConstantTests.cs b/src/System.Linq.Expressions/tests/Constant/ConstantTests.cs index 5c67a549d890..3d13a1e7a31a 100644 --- a/src/System.Linq.Expressions/tests/Constant/ConstantTests.cs +++ b/src/System.Linq.Expressions/tests/Constant/ConstantTests.cs @@ -968,7 +968,7 @@ public static void InvalidTypeReferenceType() [Fact] public static void NullType() { - Assert.Throws("type", () => Expression.Constant("foo", null)); + AssertExtensions.Throws("type", () => Expression.Constant("foo", null)); } [Fact] @@ -980,7 +980,7 @@ public static void ByRefType() [Fact] public static void PointerType() { - Assert.Throws("type", () => Expression.Constant(null, typeof(string).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Constant(null, typeof(string).MakePointerType())); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs b/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs index 6831698ef578..51026b5c74cc 100644 --- a/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs +++ b/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs @@ -18402,26 +18402,26 @@ private static void VerifyCheckedNullableUShortToNullableUShort(ushort? value, b [Fact] public static void OpenGenericnType() { - Assert.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>))); } [Fact] public static void TypeContainingGenericParameters() { - Assert.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public static void ByRefType() { - Assert.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(object).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(object).MakeByRefType())); } [Fact] public static void PointerType() { - Assert.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(int*))); + AssertExtensions.Throws("type", () => Expression.ConvertChecked(Expression.Constant(null), typeof(int*))); } public static IEnumerable Conversions() diff --git a/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs b/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs index 0ac21cdd7582..dcee10ecd4c1 100644 --- a/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs +++ b/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs @@ -16689,26 +16689,26 @@ public static void ExplicitOpImplicit() [Fact] public static void OpenGenericnType() { - Assert.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>))); } [Fact] public static void TypeContainingGenericParameters() { - Assert.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public static void ByRefType() { - Assert.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(object).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(object).MakeByRefType())); } [Fact] public static void PointerType() { - Assert.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(int*))); + AssertExtensions.Throws("type", () => Expression.Convert(Expression.Constant(null), typeof(int*))); } public static IEnumerable Conversions() @@ -16790,7 +16790,7 @@ public static void CustomConversionNotStandardNameToVoidReturn() { Expression operand = Expression.Constant(new CustomConversions { Value = 9 }); MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.DoNothing)); - Assert.Throws("method", () => Expression.Convert(operand, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.Convert(operand, typeof(int), method)); } [Fact] @@ -16798,7 +16798,7 @@ public static void CustomConversionNotStandardNameToNullary() { Expression operand = Expression.Constant(new CustomConversions { Value = 9 }); MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.Create)); - Assert.Throws("method", () => Expression.Convert(operand, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.Convert(operand, typeof(int), method)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/DebugInfo/DebugInfoExpressionTests.cs b/src/System.Linq.Expressions/tests/DebugInfo/DebugInfoExpressionTests.cs index 7380de179399..ee7aa356615b 100644 --- a/src/System.Linq.Expressions/tests/DebugInfo/DebugInfoExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/DebugInfo/DebugInfoExpressionTests.cs @@ -25,13 +25,13 @@ public static void DebugInfo(int startLine, int startColumn, int endLine, int en [Fact] public static void DebugInfo_Invalid() { - Assert.Throws("document", () => Expression.DebugInfo(null, 1, 1, 1, 1)); + AssertExtensions.Throws("document", () => Expression.DebugInfo(null, 1, 1, 1, 1)); SymbolDocumentInfo document = Expression.SymbolDocument("AFile"); - Assert.Throws("startLine", () => Expression.DebugInfo(document, 0, 1, 1, 1)); - Assert.Throws("startColumn", () => Expression.DebugInfo(document, 1, 0, 1, 1)); - Assert.Throws("endLine", () => Expression.DebugInfo(document, 1, 1, 0, 1)); - Assert.Throws("endColumn", () => Expression.DebugInfo(document, 1, 1, 1, 0)); + AssertExtensions.Throws("startLine", () => Expression.DebugInfo(document, 0, 1, 1, 1)); + AssertExtensions.Throws("startColumn", () => Expression.DebugInfo(document, 1, 0, 1, 1)); + AssertExtensions.Throws("endLine", () => Expression.DebugInfo(document, 1, 1, 0, 1)); + AssertExtensions.Throws("endColumn", () => Expression.DebugInfo(document, 1, 1, 1, 0)); Assert.Throws(null, () => Expression.DebugInfo(document, 10, 1, 1, 1)); Assert.Throws(null, () => Expression.DebugInfo(document, 1, 10, 1, 1)); diff --git a/src/System.Linq.Expressions/tests/DebugInfo/SymbolDocumentInfoTests.cs b/src/System.Linq.Expressions/tests/DebugInfo/SymbolDocumentInfoTests.cs index f46290865924..87fc0852f71c 100644 --- a/src/System.Linq.Expressions/tests/DebugInfo/SymbolDocumentInfoTests.cs +++ b/src/System.Linq.Expressions/tests/DebugInfo/SymbolDocumentInfoTests.cs @@ -48,10 +48,10 @@ public static void SymbolDocument(string fileName, Guid language, Guid languageV [Fact] public static void SymbolDocument_NullFileName_ThrowsArgumentNullException() { - Assert.Throws("fileName", () => Expression.SymbolDocument(null)); - Assert.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty)); - Assert.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty)); - Assert.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty, Guid.Empty)); + AssertExtensions.Throws("fileName", () => Expression.SymbolDocument(null)); + AssertExtensions.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty)); + AssertExtensions.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty)); + AssertExtensions.Throws("fileName", () => Expression.SymbolDocument(null, Guid.Empty, Guid.Empty, Guid.Empty)); } private static void VerifySymbolDocumentInfo(SymbolDocumentInfo document, string fileName, Guid language, Guid languageVendor, Guid documentType) diff --git a/src/System.Linq.Expressions/tests/Default/DefaultTests.cs b/src/System.Linq.Expressions/tests/Default/DefaultTests.cs index 5dcca880c9be..2606f000aefe 100644 --- a/src/System.Linq.Expressions/tests/Default/DefaultTests.cs +++ b/src/System.Linq.Expressions/tests/Default/DefaultTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -48,32 +48,32 @@ public void DefaultNotSingleton() [Fact] public void NullType() { - Assert.Throws("type", () => Expression.Default(null)); + AssertExtensions.Throws("type", () => Expression.Default(null)); } [Fact] public void ByRefType() { - Assert.Throws("type", () => Expression.Default(typeof(int).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Default(typeof(int).MakeByRefType())); } [Fact] public void PointerType() { - Assert.Throws("type", () => Expression.Default(typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Default(typeof(int).MakePointerType())); } [Fact] public void GenericType() { - Assert.Throws("type", () => Expression.Default(typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Default(typeof(List<>))); } [Fact] public void TypeContainsGenericParameters() { - Assert.Throws("type", () => Expression.Default(typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Default(typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Default(typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Default(typeof(List<>).MakeGenericType(typeof(List<>)))); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/DelegateType/ActionTypeTests.cs b/src/System.Linq.Expressions/tests/DelegateType/ActionTypeTests.cs index b9724300af3f..41cf68f7897d 100644 --- a/src/System.Linq.Expressions/tests/DelegateType/ActionTypeTests.cs +++ b/src/System.Linq.Expressions/tests/DelegateType/ActionTypeTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -11,13 +11,13 @@ public class ActionTypeTests : DelegateCreationTests [Fact] public void NullTypeList() { - Assert.Throws("typeArgs", () => Expression.GetActionType(default(Type[]))); + AssertExtensions.Throws("typeArgs", () => Expression.GetActionType(default(Type[]))); } [Fact] public void NullInTypeList() { - Assert.Throws("typeArgs", () => Expression.GetActionType(typeof(int), null)); + AssertExtensions.Throws("typeArgs", () => Expression.GetActionType(typeof(int), null)); } [Theory] diff --git a/src/System.Linq.Expressions/tests/DelegateType/FuncTypeTests.cs b/src/System.Linq.Expressions/tests/DelegateType/FuncTypeTests.cs index 0c3b350cf389..08088d6728db 100644 --- a/src/System.Linq.Expressions/tests/DelegateType/FuncTypeTests.cs +++ b/src/System.Linq.Expressions/tests/DelegateType/FuncTypeTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -11,13 +11,13 @@ public class FuncTypeTests : DelegateCreationTests [Fact] public void NullTypeList() { - Assert.Throws("typeArgs", () => Expression.GetFuncType(default(Type[]))); + AssertExtensions.Throws("typeArgs", () => Expression.GetFuncType(default(Type[]))); } [Fact] public void NullInTypeList() { - Assert.Throws("typeArgs", () => Expression.GetFuncType(typeof(int), null)); + AssertExtensions.Throws("typeArgs", () => Expression.GetFuncType(typeof(int), null)); } [Theory, MemberData(nameof(ValidTypeArgs), true)] diff --git a/src/System.Linq.Expressions/tests/DelegateType/GetDelegateTypeTests.cs b/src/System.Linq.Expressions/tests/DelegateType/GetDelegateTypeTests.cs index cc2440b24e7f..d7c560de60e5 100644 --- a/src/System.Linq.Expressions/tests/DelegateType/GetDelegateTypeTests.cs +++ b/src/System.Linq.Expressions/tests/DelegateType/GetDelegateTypeTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -12,19 +12,19 @@ public class GetDelegateTypeTests : DelegateCreationTests [Fact] public void NullTypeList() { - Assert.Throws("typeArgs", () => Expression.GetDelegateType(default(Type[]))); + AssertExtensions.Throws("typeArgs", () => Expression.GetDelegateType(default(Type[]))); } [Fact] public void NullInTypeList() { - Assert.Throws("typeArgs[1]", () => Expression.GetDelegateType(typeof(int), null)); + AssertExtensions.Throws("typeArgs[1]", () => Expression.GetDelegateType(typeof(int), null)); } [Fact] public void EmptyArgs() { - Assert.Throws("typeArgs", () => Expression.GetDelegateType()); + AssertExtensions.Throws("typeArgs", () => Expression.GetDelegateType()); } [Theory, MemberData(nameof(ValidTypeArgs), true)] diff --git a/src/System.Linq.Expressions/tests/Dynamic/BinaryOperationTests.cs b/src/System.Linq.Expressions/tests/Dynamic/BinaryOperationTests.cs index c0b365e9b067..72db72f867c0 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/BinaryOperationTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/BinaryOperationTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -644,7 +644,7 @@ public void SubtractDoubleAssign(double x, double y) [Theory, MemberData(nameof(NonBinaryExpressionTypes))] public void NonBinaryOperations(ExpressionType type) { - Assert.Throws("operation", () => new MinimumOverrideBinaryOperationBinder(type)); + AssertExtensions.Throws("operation", () => new MinimumOverrideBinaryOperationBinder(type)); } [Theory, MemberData(nameof(BinaryExpressionTypes))] @@ -664,7 +664,7 @@ public void NullTarget() { var binder = new MinimumOverrideBinaryOperationBinder(ExpressionType.Add); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("target", () => binder.Bind(null, new[] {arg})); + AssertExtensions.Throws("target", () => binder.Bind(null, new[] {arg})); } [Fact] @@ -672,7 +672,7 @@ public void NullArgumentArrayPassed() { var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var binder = new MinimumOverrideBinaryOperationBinder(ExpressionType.Add); - Assert.Throws("args", () => binder.Bind(target, null)); + AssertExtensions.Throws("args", () => binder.Bind(target, null)); } [Fact] @@ -680,7 +680,7 @@ public void NoArgumentsPassed() { var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var binder = new MinimumOverrideBinaryOperationBinder(ExpressionType.Add); - Assert.Throws("args", () => binder.Bind(target, Array.Empty())); + AssertExtensions.Throws("args", () => binder.Bind(target, Array.Empty())); } [Fact] @@ -690,7 +690,7 @@ public void TooManyArgumentArrayPassed() var binder = new MinimumOverrideBinaryOperationBinder(ExpressionType.Add); var arg0 = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg1 = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args", () => binder.Bind(target, new[] {arg0, arg1})); + AssertExtensions.Throws("args", () => binder.Bind(target, new[] {arg0, arg1})); } [Fact] @@ -698,7 +698,7 @@ public void SingleNullArgumentPassed() { var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var binder = new MinimumOverrideBinaryOperationBinder(ExpressionType.Add); - Assert.Throws("args", () => binder.Bind(target, new DynamicMetaObject[1])); + AssertExtensions.Throws("args", () => binder.Bind(target, new DynamicMetaObject[1])); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Dynamic/BindingRestrictionsTests.cs b/src/System.Linq.Expressions/tests/Dynamic/BindingRestrictionsTests.cs index 1d05076c9339..cb4c2d963fa6 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/BindingRestrictionsTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/BindingRestrictionsTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -63,13 +63,13 @@ public void MergeWithSelfHasSameExpression() [Fact] public void MergeNull() { - Assert.Throws("restrictions", () => BindingRestrictions.Empty.Merge(null)); + AssertExtensions.Throws("restrictions", () => BindingRestrictions.Empty.Merge(null)); } [Fact] public void ExpressionRestrictionFromNull() { - Assert.Throws("expression", () => BindingRestrictions.GetExpressionRestriction(null)); + AssertExtensions.Throws("expression", () => BindingRestrictions.GetExpressionRestriction(null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Dynamic/CallInfoTests.cs b/src/System.Linq.Expressions/tests/Dynamic/CallInfoTests.cs index a1d11d076fa8..177de05226f6 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/CallInfoTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/CallInfoTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -14,8 +14,8 @@ public class CallInfoTests [Fact] public void Ctor_NullNames_ThrowsArgumentNullException() { - Assert.Throws("argNames", () => new CallInfo(0, default(IEnumerable))); - Assert.Throws("argNames", () => new CallInfo(0, default(string[]))); + AssertExtensions.Throws("argNames", () => new CallInfo(0, default(IEnumerable))); + AssertExtensions.Throws("argNames", () => new CallInfo(0, default(string[]))); } [Theory] @@ -29,7 +29,7 @@ public void Ctor_CountLessThanArgNamesCount_ThrowsArgumentException(int argCount [Fact] public void Ctor_NullItemInArgNames_ThrowsArgumentNullException() { - Assert.Throws("argNames[1]", () => new CallInfo(3, "foo", null, "bar")); + AssertExtensions.Throws("argNames[1]", () => new CallInfo(3, "foo", null, "bar")); Assert.Throws( "argNames[0]", () => new CallInfo(3, Enumerable.Repeat(default(string), 2))); } diff --git a/src/System.Linq.Expressions/tests/Dynamic/CallSiteTests.cs b/src/System.Linq.Expressions/tests/Dynamic/CallSiteTests.cs index 9f4fd788e59e..9a6bca4d13d6 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/CallSiteTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/CallSiteTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -22,19 +22,19 @@ public void CannotCreateForNonDelegate() public void NonGenericCreateNullType() { CallSiteBinder binder = new CallSiteBinderDefaultBehaviourTests.NopCallSiteBinder(); - Assert.Throws("delegateType", () => CallSite.Create(null, binder)); + AssertExtensions.Throws("delegateType", () => CallSite.Create(null, binder)); } [Fact] public void NonGenericCreateNullBinder() { - Assert.Throws("binder", () => CallSite.Create(typeof(Func), null)); + AssertExtensions.Throws("binder", () => CallSite.Create(typeof(Func), null)); } [Fact] public void NullBinder() { - Assert.Throws("binder", () => CallSite>.Create(null)); + AssertExtensions.Throws("binder", () => CallSite>.Create(null)); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/ConvertBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/ConvertBinderTests.cs index b9a92ca3b3be..0453046d0b4f 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/ConvertBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/ConvertBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -79,8 +79,8 @@ public void ImpossibleConversion() [Fact] public void NullType() { - Assert.Throws("type", () => new MinimumOverrideConvertBinder(null, true)); - Assert.Throws("type", () => new MinimumOverrideConvertBinder(null, false)); + AssertExtensions.Throws("type", () => new MinimumOverrideConvertBinder(null, true)); + AssertExtensions.Throws("type", () => new MinimumOverrideConvertBinder(null, false)); } [Theory, MemberData(nameof(TypesAndBools))] @@ -96,7 +96,7 @@ public void Properties(Type type, bool @explicit) public void NullTarget() { var binder = new MinimumOverrideConvertBinder(typeof(int), false); - Assert.Throws("target", () => binder.Bind(null, null)); + AssertExtensions.Throws("target", () => binder.Bind(null, null)); } [Fact] @@ -105,7 +105,7 @@ public void ArgumentPassed() var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var binder = new MinimumOverrideConvertBinder(typeof(int), false); - Assert.Throws("args", () => binder.Bind(target, new[] { arg })); + AssertExtensions.Throws("args", () => binder.Bind(target, new[] { arg })); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectDefaultBehaviorTests.cs b/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectDefaultBehaviorTests.cs index 643fdc4f16bf..0fb66411dde9 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectDefaultBehaviorTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectDefaultBehaviorTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -157,7 +157,7 @@ public void MetaObjectNullExpression() // but the only way to change this without making other calls incorrect and without // a breaking change to names would be to catch and rethrow, which is more expensive // than it's worth. - Assert.Throws("expression", () => nop.GetMetaObject(null)); + AssertExtensions.Throws("expression", () => nop.GetMetaObject(null)); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectTests.cs b/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectTests.cs index c77acfaa781c..a27d81aca25f 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/DynamicObjectTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -504,7 +504,7 @@ public void SetDynamicProperty() { dynamic d = new TestDynamicNameReflective(); d.DynProp = nameof(d.DynProp); - Assert.Throws("value", () => d.DynProp = "I wandered lonely as a cloud."); + AssertExtensions.Throws("value", () => d.DynProp = "I wandered lonely as a cloud."); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Dynamic/ExpandoObjectTests.cs b/src/System.Linq.Expressions/tests/Dynamic/ExpandoObjectTests.cs index c13297a9b5b8..851ae6ef16f7 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/ExpandoObjectTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/ExpandoObjectTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -38,7 +38,7 @@ public void Indexer() Assert.Contains("A string that's a key", knfe.Message); Assert.Throws(() => eo[null]); - Assert.Throws("key", () => eo[null] = 0); + AssertExtensions.Throws("key", () => eo[null] = 0); // Can overwrite eo["1"] = 1; } @@ -48,7 +48,7 @@ public void AddDup() { IDictionary eo = new ExpandoObject(); eo.Add("The test key to add.", "value"); - var ae = Assert.Throws("key", () => eo.Add("The test key to add.", "value")); + var ae = AssertExtensions.Throws("key", () => eo.Add("The test key to add.", "value")); Assert.Contains("The test key to add.", ae.Message); } diff --git a/src/System.Linq.Expressions/tests/Dynamic/GetIndexBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/GetIndexBinderTests.cs index 6f843c903a04..5d51ac6b4cb3 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/GetIndexBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/GetIndexBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -85,13 +85,13 @@ public void IndexErrorIsNotBindingError() dynamic d = new[] {0, 1, 2, 3}; Assert.Throws(() => d[9]); d = new List {0, 1, 2, 3}; - Assert.Throws("index", () => d[9]); + AssertExtensions.Throws("index", () => d[9]); } [Fact] public void NullCallInfo() { - Assert.Throws("callInfo", () => new MinimumOverrideGetIndexBinder(null)); + AssertExtensions.Throws("callInfo", () => new MinimumOverrideGetIndexBinder(null)); } [Fact] @@ -112,7 +112,7 @@ public void NullTarget() { var binder = new MinimumOverrideGetIndexBinder(new CallInfo(0)); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("target", () => binder.Bind(null, new[] {arg})); + AssertExtensions.Throws("target", () => binder.Bind(null, new[] {arg})); } [Fact] @@ -120,7 +120,7 @@ public void NullArgs() { var binder = new MinimumOverrideGetIndexBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args", () => binder.Bind(target, null)); + AssertExtensions.Throws("args", () => binder.Bind(target, null)); } [Fact] @@ -129,7 +129,7 @@ public void NullArg() var binder = new MinimumOverrideGetIndexBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args[1]", () => binder.Bind(target, new [] {arg, null, arg})); + AssertExtensions.Throws("args[1]", () => binder.Bind(target, new [] {arg, null, arg})); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/GetMemberBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/GetMemberBinderTests.cs index 8b5cea30102c..672094bc4712 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/GetMemberBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/GetMemberBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -73,8 +73,8 @@ public void MemberHiding() [Fact] public void NullName() { - Assert.Throws("name", () => new MinimumOverrideGetMemberBinder(null, false)); - Assert.Throws("name", () => new MinimumOverrideGetMemberBinder(null, true)); + AssertExtensions.Throws("name", () => new MinimumOverrideGetMemberBinder(null, false)); + AssertExtensions.Throws("name", () => new MinimumOverrideGetMemberBinder(null, true)); } [Theory, MemberData(nameof(NamesAndBools))] diff --git a/src/System.Linq.Expressions/tests/Dynamic/InvokeBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/InvokeBinderTests.cs index b0051d4fb492..f9732f4e3fe2 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/InvokeBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/InvokeBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -71,7 +71,7 @@ public void DynamicIsArgumentToDynamicFunc() [Fact] public void NullCallInfo() { - Assert.Throws("callInfo", () => new MinimumOverrideInvokeBinder(null)); + AssertExtensions.Throws("callInfo", () => new MinimumOverrideInvokeBinder(null)); } [Fact] @@ -92,7 +92,7 @@ public void NullTarget() { var binder = new MinimumOverrideInvokeBinder(new CallInfo(0)); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("target", () => binder.Bind(null, new[] { arg })); + AssertExtensions.Throws("target", () => binder.Bind(null, new[] { arg })); } [Fact] @@ -100,7 +100,7 @@ public void NullArgs() { var binder = new MinimumOverrideInvokeBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args", () => binder.Bind(target, null)); + AssertExtensions.Throws("args", () => binder.Bind(target, null)); } [Fact] @@ -109,7 +109,7 @@ public void NullArg() var binder = new MinimumOverrideInvokeBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args[1]", () => binder.Bind(target, new[] { arg, null, arg })); + AssertExtensions.Throws("args[1]", () => binder.Bind(target, new[] { arg, null, arg })); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/SetIndexBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/SetIndexBinderTests.cs index 75a508b72181..1acb16e78360 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/SetIndexBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/SetIndexBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -94,13 +94,13 @@ public void IndexErrorIsNotBindingError() dynamic d = new[] { 0, 1, 2, 3 }; Assert.Throws(() => d[9] = 8); d = new List { 0, 1, 2, 3 }; - Assert.Throws("index", () => d[9] = 8); + AssertExtensions.Throws("index", () => d[9] = 8); } [Fact] public void NullCallInfo() { - Assert.Throws("callInfo", () => new MinimumOverrideSetIndexBinder(null)); + AssertExtensions.Throws("callInfo", () => new MinimumOverrideSetIndexBinder(null)); } [Fact] @@ -121,7 +121,7 @@ public void NullTarget() { var binder = new MinimumOverrideSetIndexBinder(new CallInfo(0)); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("target", () => binder.Bind(null, new[] { arg })); + AssertExtensions.Throws("target", () => binder.Bind(null, new[] { arg })); } [Fact] @@ -129,7 +129,7 @@ public void NullArgs() { var binder = new MinimumOverrideSetIndexBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args", () => binder.Bind(target, null)); + AssertExtensions.Throws("args", () => binder.Bind(target, null)); } [Fact] @@ -138,7 +138,7 @@ public void NullArg() var binder = new MinimumOverrideSetIndexBinder(new CallInfo(0)); var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); - Assert.Throws("args[1]", () => binder.Bind(target, new[] { arg, null, arg })); + AssertExtensions.Throws("args[1]", () => binder.Bind(target, new[] { arg, null, arg })); } } } diff --git a/src/System.Linq.Expressions/tests/Dynamic/SetMemberBinderTests.cs b/src/System.Linq.Expressions/tests/Dynamic/SetMemberBinderTests.cs index cedc53192c29..9dc00815e8d1 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/SetMemberBinderTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/SetMemberBinderTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -74,8 +74,8 @@ public void MemberHiding() [Fact] public void NullName() { - Assert.Throws("name", () => new MinimumOverrideSetMemberBinder(null, false)); - Assert.Throws("name", () => new MinimumOverrideSetMemberBinder(null, true)); + AssertExtensions.Throws("name", () => new MinimumOverrideSetMemberBinder(null, false)); + AssertExtensions.Throws("name", () => new MinimumOverrideSetMemberBinder(null, true)); } [Theory, MemberData(nameof(NamesAndBools))] diff --git a/src/System.Linq.Expressions/tests/Dynamic/UnaryOperationTests.cs b/src/System.Linq.Expressions/tests/Dynamic/UnaryOperationTests.cs index ac69ade19588..06531628221f 100644 --- a/src/System.Linq.Expressions/tests/Dynamic/UnaryOperationTests.cs +++ b/src/System.Linq.Expressions/tests/Dynamic/UnaryOperationTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -307,7 +307,7 @@ public void IsFalse(bool x) [Theory, MemberData(nameof(NonUnaryExpressionTypes))] public void NonUnaryOperation(ExpressionType type) { - Assert.Throws("operation", () => new MinimumOverrideUnaryOperationBinder(type)); + AssertExtensions.Throws("operation", () => new MinimumOverrideUnaryOperationBinder(type)); } [Theory, MemberData(nameof(UnaryExpressionTypes))] @@ -328,7 +328,7 @@ public void ExpressionTypeMatches(ExpressionType type) public void NullTarget() { var binder = new MinimumOverrideUnaryOperationBinder(ExpressionType.Negate); - Assert.Throws("target", () => binder.Bind(null, null)); + AssertExtensions.Throws("target", () => binder.Bind(null, null)); } [Fact] @@ -337,7 +337,7 @@ public void ArgumentPassed() var target = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var arg = new DynamicMetaObject(Expression.Parameter(typeof(object), null), BindingRestrictions.Empty); var binder = new MinimumOverrideUnaryOperationBinder(ExpressionType.Negate); - Assert.Throws("args", () => binder.Bind(target, new[] {arg})); + AssertExtensions.Throws("args", () => binder.Bind(target, new[] {arg})); } [Fact] diff --git a/src/System.Linq.Expressions/tests/DynamicExpression/DynamicExpressionTests.cs b/src/System.Linq.Expressions/tests/DynamicExpression/DynamicExpressionTests.cs index f6a189ff4985..dfe6a2c37d61 100644 --- a/src/System.Linq.Expressions/tests/DynamicExpression/DynamicExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/DynamicExpression/DynamicExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -113,8 +113,8 @@ public void ArgumentProvider(int size, Type type) Assert.Same(arguments[i], ap.GetArgument(i)); } - Assert.Throws("index", () => ap.GetArgument(-1)); - Assert.Throws("index", () => ap.GetArgument(size)); + AssertExtensions.Throws("index", () => ap.GetArgument(-1)); + AssertExtensions.Throws("index", () => ap.GetArgument(size)); } [Fact] @@ -303,7 +303,7 @@ public void UpdateToDifferentReturnsDifferent0() new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) }); DynamicExpression exp = Expression.MakeDynamic(typeof(Func), binder); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(new [] {Expression.Constant(null)})); + AssertExtensions.Throws("method", () => exp.Update(new [] {Expression.Constant(null)})); } [Fact] @@ -316,8 +316,8 @@ public void UpdateToDifferentReturnsDifferent1() DynamicExpression exp = Expression.MakeDynamic(typeof(Func), binder, arg); Assert.NotSame(exp, exp.Update(new[] { Expression.Constant(null) })); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(null)); - Assert.Throws("method", () => exp.Update(new[] { arg, arg })); + AssertExtensions.Throws("method", () => exp.Update(null)); + AssertExtensions.Throws("method", () => exp.Update(new[] { arg, arg })); } [Fact] @@ -333,8 +333,8 @@ public void UpdateToDifferentReturnsDifferent2() Assert.NotSame(exp, exp.Update(new[] { arg0, arg0 })); Assert.NotSame(exp, exp.Update(new[] { arg1, arg0 })); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(null)); - Assert.Throws("method", () => exp.Update(new Expression[0])); + AssertExtensions.Throws("method", () => exp.Update(null)); + AssertExtensions.Throws("method", () => exp.Update(new Expression[0])); } [Fact] @@ -352,8 +352,8 @@ public void UpdateToDifferentReturnsDifferent3() Assert.NotSame(exp, exp.Update(new[] { arg0, arg0, arg2 })); Assert.NotSame(exp, exp.Update(new[] { arg0, arg1, arg0 })); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(null)); - Assert.Throws("method", () => exp.Update(new Expression[0])); + AssertExtensions.Throws("method", () => exp.Update(null)); + AssertExtensions.Throws("method", () => exp.Update(new Expression[0])); } [Fact] @@ -373,8 +373,8 @@ public void UpdateToDifferentReturnsDifferent4() Assert.NotSame(exp, exp.Update(new[] { arg0, arg1, arg0, arg3 })); Assert.NotSame(exp, exp.Update(new[] { arg0, arg1, arg2, arg0 })); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(null)); - Assert.Throws("method", () => exp.Update(new Expression[0])); + AssertExtensions.Throws("method", () => exp.Update(null)); + AssertExtensions.Throws("method", () => exp.Update(new Expression[0])); } [Fact] @@ -397,8 +397,8 @@ public void UpdateToDifferentReturnsDifferent5() Assert.NotSame(exp, exp.Update(new[] { arg0, arg1, arg2, arg0, arg4 })); Assert.NotSame(exp, exp.Update(new[] { arg0, arg1, arg2, arg3, arg0 })); // Wrong number of arguments continues to attempt to create new expression, which fails. - Assert.Throws("method", () => exp.Update(null)); - Assert.Throws("method", () => exp.Update(new Expression[0])); + AssertExtensions.Throws("method", () => exp.Update(null)); + AssertExtensions.Throws("method", () => exp.Update(new Expression[0])); } } } diff --git a/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs b/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs index 3b1687e4928c..7834803031f4 100644 --- a/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs +++ b/src/System.Linq.Expressions/tests/ExceptionHandling/ExceptionHandlingExpressions.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -74,7 +74,7 @@ public void DefaultThrowTypeIsVoid() public void ExceptionMustBeReadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("value", () => Expression.Throw(value)); + AssertExtensions.Throws("value", () => Expression.Throw(value)); } [Fact] @@ -83,7 +83,7 @@ public void GenericThrowType() Type listType = typeof(List<>); Assert.Throws( "type", () => Expression.Throw(Expression.Constant(new TestException()), listType)); - Assert.Throws("type", () => Expression.Rethrow(listType)); + AssertExtensions.Throws("type", () => Expression.Rethrow(listType)); } [Fact] @@ -93,7 +93,7 @@ public void ThrowTypeWithGenericParamters() Type listListListType = listType.MakeGenericType(listType.MakeGenericType(listType)); Assert.Throws( "type", () => Expression.Throw(Expression.Constant(new TestException()), listListListType)); - Assert.Throws("type", () => Expression.Rethrow(listListListType)); + AssertExtensions.Throws("type", () => Expression.Rethrow(listListListType)); } [Fact] @@ -102,7 +102,7 @@ public void PointerThrowType() Type pointer = typeof(int).MakeByRefType(); Assert.Throws( "type", () => Expression.Throw(Expression.Constant(new TestException()), pointer)); - Assert.Throws("type", () => Expression.Rethrow(pointer)); + AssertExtensions.Throws("type", () => Expression.Rethrow(pointer)); } [Fact] @@ -111,7 +111,7 @@ public void ByRefThrowType() Type byRefType = typeof(int).MakeByRefType(); Assert.Throws( "type", () => Expression.Throw(Expression.Constant(new TestException()), byRefType)); - Assert.Throws("type", () => Expression.Rethrow(byRefType)); + AssertExtensions.Throws("type", () => Expression.Rethrow(byRefType)); } [Theory] @@ -381,7 +381,7 @@ public void CannotReduceTry() [Fact] public void CannotThrowValueType() { - Assert.Throws("value", () => Expression.Throw(Expression.Constant(1))); + AssertExtensions.Throws("value", () => Expression.Throw(Expression.Constant(1))); } [Fact] @@ -404,47 +404,47 @@ public void MustHaveCatchFinallyOrFault() [Fact] public void FaultMustNotBeWithCatch() { - Assert.Throws("fault", () => Expression.MakeTry(typeof(int), Expression.Constant(1), null, Expression.Constant(2), new[] { Expression.Catch(typeof(object), Expression.Constant(3)) })); + AssertExtensions.Throws("fault", () => Expression.MakeTry(typeof(int), Expression.Constant(1), null, Expression.Constant(2), new[] { Expression.Catch(typeof(object), Expression.Constant(3)) })); } [Fact] public void FaultMustNotBeWithFinally() { - Assert.Throws("fault", () => Expression.MakeTry(typeof(int), Expression.Constant(1), Expression.Constant(2), Expression.Constant(3), null)); + AssertExtensions.Throws("fault", () => Expression.MakeTry(typeof(int), Expression.Constant(1), Expression.Constant(2), Expression.Constant(3), null)); } [Fact] public void TryMustNotHaveNullBody() { - Assert.Throws("body", () => Expression.TryCatch(null, Expression.Catch(typeof(object), Expression.Constant(1)))); - Assert.Throws("body", () => Expression.TryCatchFinally(null, Expression.Constant(1), Expression.Catch(typeof(object), Expression.Constant(1)))); - Assert.Throws("body", () => Expression.TryFault(null, Expression.Constant(1))); - Assert.Throws("body", () => Expression.TryFinally(null, Expression.Constant(1))); + AssertExtensions.Throws("body", () => Expression.TryCatch(null, Expression.Catch(typeof(object), Expression.Constant(1)))); + AssertExtensions.Throws("body", () => Expression.TryCatchFinally(null, Expression.Constant(1), Expression.Catch(typeof(object), Expression.Constant(1)))); + AssertExtensions.Throws("body", () => Expression.TryFault(null, Expression.Constant(1))); + AssertExtensions.Throws("body", () => Expression.TryFinally(null, Expression.Constant(1))); } [Fact] public void TryMustHaveReadableBody() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("body", () => Expression.TryCatch(value, Expression.Catch(typeof(object), Expression.Constant(1)))); - Assert.Throws("body", () => Expression.TryCatchFinally(value, Expression.Constant(1), Expression.Catch(typeof(object), Expression.Constant(1)))); - Assert.Throws("body", () => Expression.TryFault(value, Expression.Constant(1))); - Assert.Throws("body", () => Expression.TryFinally(value, Expression.Constant(1))); + AssertExtensions.Throws("body", () => Expression.TryCatch(value, Expression.Catch(typeof(object), Expression.Constant(1)))); + AssertExtensions.Throws("body", () => Expression.TryCatchFinally(value, Expression.Constant(1), Expression.Catch(typeof(object), Expression.Constant(1)))); + AssertExtensions.Throws("body", () => Expression.TryFault(value, Expression.Constant(1))); + AssertExtensions.Throws("body", () => Expression.TryFinally(value, Expression.Constant(1))); } [Fact] public void FaultMustBeReadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("fault", () => Expression.TryFault(Expression.Constant(1), value)); + AssertExtensions.Throws("fault", () => Expression.TryFault(Expression.Constant(1), value)); } [Fact] public void FinallyMustBeReadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("finally", () => Expression.TryFinally(Expression.Constant(1), value)); - Assert.Throws("finally", () => Expression.TryCatchFinally(Expression.Constant(1), value, Expression.Catch(typeof(object), Expression.Constant(1)))); + AssertExtensions.Throws("finally", () => Expression.TryFinally(Expression.Constant(1), value)); + AssertExtensions.Throws("finally", () => Expression.TryCatchFinally(Expression.Constant(1), value, Expression.Catch(typeof(object), Expression.Constant(1)))); } [Theory] @@ -743,56 +743,56 @@ public void ExplicitType(bool useInterpreter) public void ByRefExceptionType() { ParameterExpression variable = Expression.Parameter(typeof(Exception).MakeByRefType()); - Assert.Throws("variable", () => Expression.Catch(variable, Expression.Empty())); - Assert.Throws("variable", () => Expression.Catch(variable, Expression.Empty(), Expression.Constant(true))); + AssertExtensions.Throws("variable", () => Expression.Catch(variable, Expression.Empty())); + AssertExtensions.Throws("variable", () => Expression.Catch(variable, Expression.Empty(), Expression.Constant(true))); } [Fact] public void NullTypeOnCatch() { - Assert.Throws("type", () => Expression.Catch(default(Type), Expression.Empty())); - Assert.Throws("type", () => Expression.Catch(default(Type), Expression.Empty(), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.Catch(default(Type), Expression.Empty())); + AssertExtensions.Throws("type", () => Expression.Catch(default(Type), Expression.Empty(), Expression.Constant(true))); } [Fact] public void NullExceptionVariableOnCatch() { - Assert.Throws("variable", () => Expression.Catch(default(ParameterExpression), Expression.Empty())); - Assert.Throws("variable", () => Expression.Catch(default(ParameterExpression), Expression.Empty(), Expression.Constant(true))); + AssertExtensions.Throws("variable", () => Expression.Catch(default(ParameterExpression), Expression.Empty())); + AssertExtensions.Throws("variable", () => Expression.Catch(default(ParameterExpression), Expression.Empty(), Expression.Constant(true))); } [Fact] public void CatchBodyMustBeNotBeNull() { - Assert.Throws("body", () => Expression.Catch(typeof(Exception), null)); - Assert.Throws("body", () => Expression.Catch(typeof(Exception), null, Expression.Constant(true))); - Assert.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), null)); - Assert.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), null, Expression.Constant(true))); + AssertExtensions.Throws("body", () => Expression.Catch(typeof(Exception), null)); + AssertExtensions.Throws("body", () => Expression.Catch(typeof(Exception), null, Expression.Constant(true))); + AssertExtensions.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), null)); + AssertExtensions.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), null, Expression.Constant(true))); } [Fact] public void CatchBodyMustBeReadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("body", () => Expression.Catch(typeof(Exception), value)); - Assert.Throws("body", () => Expression.Catch(typeof(Exception), value, Expression.Constant(true))); - Assert.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), value)); - Assert.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), value, Expression.Constant(true))); + AssertExtensions.Throws("body", () => Expression.Catch(typeof(Exception), value)); + AssertExtensions.Throws("body", () => Expression.Catch(typeof(Exception), value, Expression.Constant(true))); + AssertExtensions.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), value)); + AssertExtensions.Throws("body", () => Expression.Catch(Expression.Parameter(typeof(Exception)), value, Expression.Constant(true))); } [Fact] public void FilterMustBeReadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("filter", () => Expression.Catch(typeof(Exception), Expression.Empty(), value)); - Assert.Throws("filter", () => Expression.Catch(Expression.Parameter(typeof(Exception)), Expression.Empty(), value)); + AssertExtensions.Throws("filter", () => Expression.Catch(typeof(Exception), Expression.Empty(), value)); + AssertExtensions.Throws("filter", () => Expression.Catch(Expression.Parameter(typeof(Exception)), Expression.Empty(), value)); } [Fact] public void FilterMustBeBoolean() { - Assert.Throws("filter", () => Expression.Catch(typeof(Exception), Expression.Empty(), Expression.Constant(42))); - Assert.Throws("filter", () => Expression.Catch(Expression.Parameter(typeof(Exception)), Expression.Empty(), Expression.Constant(42))); + AssertExtensions.Throws("filter", () => Expression.Catch(typeof(Exception), Expression.Empty(), Expression.Constant(42))); + AssertExtensions.Throws("filter", () => Expression.Catch(Expression.Parameter(typeof(Exception)), Expression.Empty(), Expression.Constant(42))); } [Theory, ClassData(typeof(CompilationTypes))] @@ -1434,36 +1434,36 @@ public void UpdateTryDiffFaultDiffNode() [Fact] public void OpenGenericExceptionType() { - Assert.Throws("type", () => Expression.Catch(typeof(List<>), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Catch(typeof(List<>), Expression.Constant(0), Expression.Constant(true))); - Assert.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>), null, Expression.Constant(0), null)); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>), Expression.Constant(0), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>), null, Expression.Constant(0), null)); } [Fact] public void ExceptionTypeContainingGenericParameters() { - Assert.Throws("type", () => Expression.Catch(typeof(List<>.Enumerator), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Catch(typeof(List<>.Enumerator), Expression.Constant(0), Expression.Constant(true))); - Assert.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>.Enumerator), null, Expression.Constant(0), null)); - Assert.Throws("type", () => Expression.Catch(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Catch(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(0), Expression.Constant(true))); - Assert.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>).MakeGenericType(typeof(List<>)), null, Expression.Constant(0), null)); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>.Enumerator), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>.Enumerator), Expression.Constant(0), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>.Enumerator), null, Expression.Constant(0), null)); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(List<>).MakeGenericType(typeof(List<>)), Expression.Constant(0), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.MakeCatchBlock(typeof(List<>).MakeGenericType(typeof(List<>)), null, Expression.Constant(0), null)); } [Fact] public void PointerExceptionType() { - Assert.Throws("type", () => Expression.Catch(typeof(int*), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Catch(typeof(int*), Expression.Constant(0), Expression.Constant(true))); - Assert.Throws("type", () => Expression.MakeCatchBlock(typeof(int*), null, Expression.Constant(0), null)); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(int*), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(int*), Expression.Constant(0), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.MakeCatchBlock(typeof(int*), null, Expression.Constant(0), null)); } [Fact] public void TypedByRefExceptionType() { - Assert.Throws("type", () => Expression.Catch(typeof(int).MakeByRefType(), Expression.Constant(0))); - Assert.Throws("type", () => Expression.Catch(typeof(int).MakeByRefType(), Expression.Constant(0), Expression.Constant(true))); - Assert.Throws("type", () => Expression.MakeCatchBlock(typeof(int).MakeByRefType(), null, Expression.Constant(0), null)); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(int).MakeByRefType(), Expression.Constant(0))); + AssertExtensions.Throws("type", () => Expression.Catch(typeof(int).MakeByRefType(), Expression.Constant(0), Expression.Constant(true))); + AssertExtensions.Throws("type", () => Expression.MakeCatchBlock(typeof(int).MakeByRefType(), null, Expression.Constant(0), null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/ExpressionTests.cs b/src/System.Linq.Expressions/tests/ExpressionTests.cs index 564349c8006e..a137d5b1d03a 100644 --- a/src/System.Linq.Expressions/tests/ExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/ExpressionTests.cs @@ -345,24 +345,24 @@ public static IEnumerable UnwritableExpressions public void ConfirmCannotRead(Expression unreadableExpression) { if (unreadableExpression == null) - Assert.Throws("expression", () => Expression.Increment(unreadableExpression)); + AssertExtensions.Throws("expression", () => Expression.Increment(unreadableExpression)); else - Assert.Throws("expression", () => Expression.Increment(unreadableExpression)); + AssertExtensions.Throws("expression", () => Expression.Increment(unreadableExpression)); } [Fact] public void ConfirmCannotReadSequence() { - Assert.Throws("expressions[0]", () => Expression.Block(typeof(void), UnreadableExpressions)); + AssertExtensions.Throws("expressions[0]", () => Expression.Block(typeof(void), UnreadableExpressions)); } [Theory, MemberData(nameof(UnwritableExpressionData))] public void ConfirmCannotWrite(Expression unwritableExpression) { if (unwritableExpression == null) - Assert.Throws("left", () => Expression.Assign(unwritableExpression, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.Assign(unwritableExpression, Expression.Constant(0))); else - Assert.Throws("left", () => Expression.Assign(unwritableExpression, Expression.Constant(0))); + AssertExtensions.Throws("left", () => Expression.Assign(unwritableExpression, Expression.Constant(0))); } [Theory, MemberData(nameof(WritableExpressionData))] diff --git a/src/System.Linq.Expressions/tests/Goto/Break.cs b/src/System.Linq.Expressions/tests/Goto/Break.cs index 6bf80992530d..e0c2ded692cf 100644 --- a/src/System.Linq.Expressions/tests/Goto/Break.cs +++ b/src/System.Linq.Expressions/tests/Goto/Break.cs @@ -56,7 +56,7 @@ public void BreakJumps(object value, bool useInterpreter) public void NonVoidTargetBreakHasNoValue(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Break(target)); + AssertExtensions.Throws("target", () => Expression.Break(target)); } [Theory] @@ -64,7 +64,7 @@ public void NonVoidTargetBreakHasNoValue(Type type) public void NonVoidTargetBreakHasNoValueTypeExplicit(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Break(target, type)); + AssertExtensions.Throws("target", () => Expression.Break(target, type)); } [Theory] @@ -97,16 +97,16 @@ public void BreakExplicitVoidNoValue(bool useInterpreter) [MemberData(nameof(TypesData))] public void NullValueOnNonVoidBreak(Type type) { - Assert.Throws("target", () => Expression.Break(Expression.Label(type))); - Assert.Throws("target", () => Expression.Break(Expression.Label(type), default(Expression))); - Assert.Throws("target", () => Expression.Break(Expression.Label(type), null, type)); + AssertExtensions.Throws("target", () => Expression.Break(Expression.Label(type))); + AssertExtensions.Throws("target", () => Expression.Break(Expression.Label(type), default(Expression))); + AssertExtensions.Throws("target", () => Expression.Break(Expression.Label(type), null, type)); } [Theory] [MemberData(nameof(ConstantValueData))] public void ExplicitNullTypeWithValue(object value) { - Assert.Throws("target", () => Expression.Break(Expression.Label(value.GetType()), default(Type))); + AssertExtensions.Throws("target", () => Expression.Break(Expression.Label(value.GetType()), default(Type))); } [Fact] @@ -114,8 +114,8 @@ public void UnreadableLabel() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); LabelTarget target = Expression.Label(typeof(string)); - Assert.Throws("value", () => Expression.Break(target, value)); - Assert.Throws("value", () => Expression.Break(target, value, typeof(string))); + AssertExtensions.Throws("value", () => Expression.Break(target, value)); + AssertExtensions.Throws("value", () => Expression.Break(target, value, typeof(string))); } [Theory] @@ -191,26 +191,26 @@ public void UpdateDifferentTargetIsDifferent() [Fact] public void OpenGenericType() { - Assert.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>))); } [Fact] public static void TypeContainsGenericParameters() { - Assert.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public void PointerType() { - Assert.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(int).MakePointerType())); } [Fact] public void ByRefType() { - Assert.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Break(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/Goto/Continue.cs b/src/System.Linq.Expressions/tests/Goto/Continue.cs index 0cc25f9e9711..c6156ba27e81 100644 --- a/src/System.Linq.Expressions/tests/Goto/Continue.cs +++ b/src/System.Linq.Expressions/tests/Goto/Continue.cs @@ -14,7 +14,7 @@ public class Continue : GotoExpressionTests public void NonVoidTargetContinueHasNoValue(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Continue(target)); + AssertExtensions.Throws("target", () => Expression.Continue(target)); } [Theory] @@ -22,7 +22,7 @@ public void NonVoidTargetContinueHasNoValue(Type type) public void NonVoidTargetContinueHasNoValueTypeExplicit(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Continue(target, type)); + AssertExtensions.Throws("target", () => Expression.Continue(target, type)); } [Theory] @@ -55,39 +55,39 @@ public void ContinueExplicitVoidNoValue(bool useInterpreter) [MemberData(nameof(TypesData))] public void NullValueOnNonVoidContinue(Type type) { - Assert.Throws("target", () => Expression.Continue(Expression.Label(type))); + AssertExtensions.Throws("target", () => Expression.Continue(Expression.Label(type))); } [Theory] [MemberData(nameof(ConstantValueData))] public void ExplicitNullTypeWithValue(object value) { - Assert.Throws("target", () => Expression.Continue(Expression.Label(value.GetType()), default(Type))); + AssertExtensions.Throws("target", () => Expression.Continue(Expression.Label(value.GetType()), default(Type))); } [Fact] public void OpenGenericType() { - Assert.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>))); } [Fact] public static void TypeContainsGenericParameters() { - Assert.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public void PointerType() { - Assert.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(int).MakePointerType())); } [Fact] public void ByRefType() { - Assert.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Continue(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/Goto/Goto.cs b/src/System.Linq.Expressions/tests/Goto/Goto.cs index 1f1bca074ab6..37af02bf7cca 100644 --- a/src/System.Linq.Expressions/tests/Goto/Goto.cs +++ b/src/System.Linq.Expressions/tests/Goto/Goto.cs @@ -56,7 +56,7 @@ public void GotoJumps(object value, bool useInterpreter) public void NonVoidTargetGotoHasNoValue(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Goto(target)); + AssertExtensions.Throws("target", () => Expression.Goto(target)); } [Theory] @@ -64,7 +64,7 @@ public void NonVoidTargetGotoHasNoValue(Type type) public void NonVoidTargetGotoHasNoValueTypeExplicit(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Goto(target, type)); + AssertExtensions.Throws("target", () => Expression.Goto(target, type)); } [Theory] @@ -97,16 +97,16 @@ public void GotoExplicitVoidNoValue(bool useInterpreter) [MemberData(nameof(TypesData))] public void NullValueOnNonVoidGoto(Type type) { - Assert.Throws("target", () => Expression.Goto(Expression.Label(type))); - Assert.Throws("target", () => Expression.Goto(Expression.Label(type), default(Expression))); - Assert.Throws("target", () => Expression.Goto(Expression.Label(type), null, type)); + AssertExtensions.Throws("target", () => Expression.Goto(Expression.Label(type))); + AssertExtensions.Throws("target", () => Expression.Goto(Expression.Label(type), default(Expression))); + AssertExtensions.Throws("target", () => Expression.Goto(Expression.Label(type), null, type)); } [Theory] [MemberData(nameof(ConstantValueData))] public void ExplicitNullTypeWithValue(object value) { - Assert.Throws("target", () => Expression.Goto(Expression.Label(value.GetType()), default(Type))); + AssertExtensions.Throws("target", () => Expression.Goto(Expression.Label(value.GetType()), default(Type))); } [Fact] @@ -114,8 +114,8 @@ public void UnreadableLabel() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); LabelTarget target = Expression.Label(typeof(string)); - Assert.Throws("value", () => Expression.Goto(target, value)); - Assert.Throws("value", () => Expression.Goto(target, value, typeof(string))); + AssertExtensions.Throws("value", () => Expression.Goto(target, value)); + AssertExtensions.Throws("value", () => Expression.Goto(target, value, typeof(string))); } [Theory] @@ -191,26 +191,26 @@ public void UpdateDifferentTargetIsDifferent() [Fact] public void OpenGenericType() { - Assert.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>))); } [Fact] public static void TypeContainsGenericParameters() { - Assert.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public void PointerType() { - Assert.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(int).MakePointerType())); } [Fact] public void ByRefType() { - Assert.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Goto(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/Goto/Return.cs b/src/System.Linq.Expressions/tests/Goto/Return.cs index 2e3a42073e5f..d0e01b8b22de 100644 --- a/src/System.Linq.Expressions/tests/Goto/Return.cs +++ b/src/System.Linq.Expressions/tests/Goto/Return.cs @@ -56,7 +56,7 @@ public void ReturnJumps(object value, bool useInterpreter) public void NonVoidTargetReturnHasNoValue(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Return(target)); + AssertExtensions.Throws("target", () => Expression.Return(target)); } [Theory] @@ -64,7 +64,7 @@ public void NonVoidTargetReturnHasNoValue(Type type) public void NonVoidTargetReturnHasNoValueTypeExplicit(Type type) { LabelTarget target = Expression.Label(type); - Assert.Throws("target", () => Expression.Return(target, type)); + AssertExtensions.Throws("target", () => Expression.Return(target, type)); } [Theory] @@ -97,16 +97,16 @@ public void ReturnExplicitVoidNoValue(bool useInterpreter) [MemberData(nameof(TypesData))] public void NullValueOnNonVoidReturn(Type type) { - Assert.Throws("target", () => Expression.Return(Expression.Label(type))); - Assert.Throws("target", () => Expression.Return(Expression.Label(type), default(Expression))); - Assert.Throws("target", () => Expression.Return(Expression.Label(type), null, type)); + AssertExtensions.Throws("target", () => Expression.Return(Expression.Label(type))); + AssertExtensions.Throws("target", () => Expression.Return(Expression.Label(type), default(Expression))); + AssertExtensions.Throws("target", () => Expression.Return(Expression.Label(type), null, type)); } [Theory] [MemberData(nameof(ConstantValueData))] public void ExplicitNullTypeWithValue(object value) { - Assert.Throws("target", () => Expression.Return(Expression.Label(value.GetType()), default(Type))); + AssertExtensions.Throws("target", () => Expression.Return(Expression.Label(value.GetType()), default(Type))); } [Fact] @@ -114,8 +114,8 @@ public void UnreadableLabel() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); LabelTarget target = Expression.Label(typeof(string)); - Assert.Throws("value", () => Expression.Return(target, value)); - Assert.Throws("value", () => Expression.Return(target, value, typeof(string))); + AssertExtensions.Throws("value", () => Expression.Return(target, value)); + AssertExtensions.Throws("value", () => Expression.Return(target, value, typeof(string))); } [Theory] @@ -191,26 +191,26 @@ public void UpdateDifferentTargetIsDifferent() [Fact] public void OpenGenericType() { - Assert.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>))); } [Fact] public static void TypeContainsGenericParameters() { - Assert.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); - Assert.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); + AssertExtensions.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>.Enumerator))); + AssertExtensions.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(List<>).MakeGenericType(typeof(List<>)))); } [Fact] public void PointerType() { - Assert.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(int).MakePointerType())); + AssertExtensions.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(int).MakePointerType())); } [Fact] public void ByRefType() { - Assert.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); + AssertExtensions.Throws("type", () => Expression.Return(Expression.Label(typeof(void)), typeof(int).MakeByRefType())); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs b/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs index 9abf9f644d2d..37bfc0d09e65 100644 --- a/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/IndexExpression/IndexExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -110,8 +110,8 @@ public void NoAccessorIndexedProperty() Type type = info; PropertyInfo prop = info.DeclaredProperties.First(); Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -141,8 +141,8 @@ public void ByRefIndexedProperty() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -169,8 +169,8 @@ public void VoidIndexedProperty() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -197,8 +197,8 @@ public void IndexedPropertyGetReturnsWrongType() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -225,8 +225,8 @@ public void IndexedPropertySetterNoParams() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -253,8 +253,8 @@ public void IndexedPropertySetterByrefValueType() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -281,8 +281,8 @@ public void IndexedPropertySetterNotReturnVoid() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -321,8 +321,8 @@ public void IndexedPropertyGetterInstanceSetterStatic() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -349,8 +349,8 @@ public void IndexedPropertySetterValueTypeNotMatchPropertyType() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -389,8 +389,8 @@ public void IndexedPropertyGetterSetterArgCountMismatch() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0))); } [Fact] @@ -429,8 +429,8 @@ public void IndexedPropertyGetterSetterArgumentTypeMismatch() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); } [Fact] @@ -459,8 +459,8 @@ public void IndexedPropertyVarArgs() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); - Assert.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); + AssertExtensions.Throws("propertyName", () => Expression.Property(instance, "Item", Expression.Constant(0), Expression.Constant(0), Expression.Constant(0))); } [Fact] @@ -468,7 +468,7 @@ public void NullInstanceInstanceProperty() { PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); ConstantExpression index = Expression.Constant(0); - Assert.Throws("instance", () => Expression.Property(null, prop, index)); + AssertExtensions.Throws("instance", () => Expression.Property(null, prop, index)); } [Fact] @@ -524,7 +524,7 @@ public void ByRefIndexer() Type type = info; PropertyInfo prop = type.GetProperties()[0]; Expression instance = Expression.Default(type); - Assert.Throws("indexes[0]", () => Expression.Property(instance, prop, Expression.Constant(0))); + AssertExtensions.Throws("indexes[0]", () => Expression.Property(instance, prop, Expression.Constant(0))); } // FEATURE_COMPILE @@ -535,7 +535,7 @@ public void CallWithoutIndices() { PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); DefaultExpression dict = Expression.Default(typeof(Dictionary)); - Assert.Throws("indexer", () => Expression.Property(dict, prop, Array.Empty())); + AssertExtensions.Throws("indexer", () => Expression.Property(dict, prop, Array.Empty())); } [Fact] @@ -544,7 +544,7 @@ public void CallWithExcessiveIndices() PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); DefaultExpression dict = Expression.Default(typeof(Dictionary)); ConstantExpression index = Expression.Constant(0); - Assert.Throws("indexer", () => Expression.Property(dict, prop, index, index)); + AssertExtensions.Throws("indexer", () => Expression.Property(dict, prop, index, index)); } [Fact] @@ -553,7 +553,7 @@ public void CallWithUnassignableIndex() PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); DefaultExpression dict = Expression.Default(typeof(Dictionary)); ConstantExpression index = Expression.Constant(0L); - Assert.Throws("arguments[0]", () => Expression.Property(dict, prop, index)); + AssertExtensions.Throws("arguments[0]", () => Expression.Property(dict, prop, index)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -585,7 +585,7 @@ public void TryIndexedAccessNonIndexedProperty() ConstantExpression instance = Expression.Constant(""); PropertyInfo prop = typeof(string).GetProperty(nameof(string.Length)); ConstantExpression index = Expression.Constant(0); - Assert.Throws("indexer", () => Expression.Property(instance, prop, index)); + AssertExtensions.Throws("indexer", () => Expression.Property(instance, prop, index)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -637,7 +637,7 @@ public void NullArgument() ConstantExpression instance = Expression.Constant(new Dictionary()); PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); Assert.Throws(() => Expression.Property(instance, "Item", new Expression[] {null})); - Assert.Throws("arguments[0]", () => Expression.Property(instance, prop, new Expression[] {null})); + AssertExtensions.Throws("arguments[0]", () => Expression.Property(instance, prop, new Expression[] {null})); } [Fact] @@ -646,8 +646,8 @@ public void UnreadableIndex() ConstantExpression instance = Expression.Constant(new Dictionary()); PropertyInfo prop = typeof(Dictionary).GetProperty("Item"); MemberExpression index = Expression.Property(null, typeof(Unreadable).GetProperty(nameof(Unreadable.WriteOnly))); - Assert.Throws("arguments[0]", () => Expression.Property(instance, "Item", index)); - Assert.Throws("arguments[0]", () => Expression.Property(instance, prop, index)); + AssertExtensions.Throws("arguments[0]", () => Expression.Property(instance, "Item", index)); + AssertExtensions.Throws("arguments[0]", () => Expression.Property(instance, prop, index)); } diff --git a/src/System.Linq.Expressions/tests/Invoke/InvocationTests.cs b/src/System.Linq.Expressions/tests/Invoke/InvocationTests.cs index 5858930d2ee8..3e7187571e73 100644 --- a/src/System.Linq.Expressions/tests/Invoke/InvocationTests.cs +++ b/src/System.Linq.Expressions/tests/Invoke/InvocationTests.cs @@ -136,8 +136,8 @@ private static void VerifyGetArguments(InvocationExpression invoke) { var args = invoke.Arguments; Assert.Equal(args.Count, invoke.ArgumentCount); - Assert.Throws("index", () => invoke.GetArgument(-1)); - Assert.Throws("index", () => invoke.GetArgument(args.Count)); + AssertExtensions.Throws("index", () => invoke.GetArgument(-1)); + AssertExtensions.Throws("index", () => invoke.GetArgument(args.Count)); for (int i = 0; i != args.Count; ++i) { Assert.Same(args[i], invoke.GetArgument(i)); @@ -157,8 +157,8 @@ public static void ArgumentCountMismatchLambda() public static void ArgumentTypeMismatchLambda() { Expression> adder = (x, y) => x + y; - Assert.Throws("arg1", () => Expression.Invoke(adder, Expression.Constant(1), Expression.Constant(1L))); - Assert.Throws("arg0", () => Expression.Invoke(adder, Expression.Constant(1L), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Invoke(adder, Expression.Constant(1), Expression.Constant(1L))); + AssertExtensions.Throws("arg0", () => Expression.Invoke(adder, Expression.Constant(1L), Expression.Constant(1))); } [Fact] @@ -173,8 +173,8 @@ public static void ArgumentCountMismatchDelegate() public static void ArgumentTypeMismatchDelegate() { Func adder = (x, y) => x + y; - Assert.Throws("arg1", () => Expression.Invoke(Expression.Constant(adder), Expression.Constant(1), Expression.Constant(1L))); - Assert.Throws("arg0", () => Expression.Invoke(Expression.Constant(adder), Expression.Constant(1L), Expression.Constant(1))); + AssertExtensions.Throws("arg1", () => Expression.Invoke(Expression.Constant(adder), Expression.Constant(1), Expression.Constant(1L))); + AssertExtensions.Throws("arg0", () => Expression.Invoke(Expression.Constant(adder), Expression.Constant(1L), Expression.Constant(1))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Label/LabelTargetTests.cs b/src/System.Linq.Expressions/tests/Label/LabelTargetTests.cs index 26fabee9c3fc..464377444410 100644 --- a/src/System.Linq.Expressions/tests/Label/LabelTargetTests.cs +++ b/src/System.Linq.Expressions/tests/Label/LabelTargetTests.cs @@ -62,15 +62,15 @@ public void ExplicitNullName() [Fact] public void NullType() { - Assert.Throws("type", () => Expression.Label(default(Type))); - Assert.Throws("type", () => Expression.Label(null, "name")); + AssertExtensions.Throws("type", () => Expression.Label(default(Type))); + AssertExtensions.Throws("type", () => Expression.Label(null, "name")); } [Fact] public void GenericType() { - Assert.Throws("type", () => Expression.Label(typeof(List<>))); - Assert.Throws("type", () => Expression.Label(typeof(List<>), null)); + AssertExtensions.Throws("type", () => Expression.Label(typeof(List<>))); + AssertExtensions.Throws("type", () => Expression.Label(typeof(List<>), null)); } [Fact] @@ -78,24 +78,24 @@ public void TypeWithGenericParamters() { Type listType = typeof(List<>); Type listListListType = listType.MakeGenericType(listType.MakeGenericType(listType)); - Assert.Throws("type", () => Expression.Label(listListListType)); - Assert.Throws("type", () => Expression.Label(listListListType, null)); + AssertExtensions.Throws("type", () => Expression.Label(listListListType)); + AssertExtensions.Throws("type", () => Expression.Label(listListListType, null)); } [Fact] public void PointerType() { Type pointerType = typeof(int).MakePointerType(); - Assert.Throws("type", () => Expression.Label(pointerType)); - Assert.Throws("type", () => Expression.Label(pointerType, null)); + AssertExtensions.Throws("type", () => Expression.Label(pointerType)); + AssertExtensions.Throws("type", () => Expression.Label(pointerType, null)); } [Fact] public void ByRefType() { Type byRefType = typeof(int).MakeByRefType(); - Assert.Throws("type", () => Expression.Label(byRefType)); - Assert.Throws("type", () => Expression.Label(byRefType, null)); + AssertExtensions.Throws("type", () => Expression.Label(byRefType)); + AssertExtensions.Throws("type", () => Expression.Label(byRefType, null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Label/LabelTests.cs b/src/System.Linq.Expressions/tests/Label/LabelTests.cs index c8c33e428f5a..3960e49e58fe 100644 --- a/src/System.Linq.Expressions/tests/Label/LabelTests.cs +++ b/src/System.Linq.Expressions/tests/Label/LabelTests.cs @@ -25,8 +25,8 @@ public void FactoryProducesUniqueLabels() [Fact] public void NullTarget() { - Assert.Throws("target", () => Expression.Label(default(LabelTarget))); - Assert.Throws("target", () => Expression.Label(null, Expression.Default(typeof(int)))); + AssertExtensions.Throws("target", () => Expression.Label(default(LabelTarget))); + AssertExtensions.Throws("target", () => Expression.Label(null, Expression.Default(typeof(int)))); } [Fact] @@ -39,7 +39,7 @@ public void NullDefaultValueAllowedWithVoidTarget() [Fact] public void NullDefaultValueNotAllowedWithTypedTarget() { - Assert.Throws("target", () => Expression.Label(Expression.Label(typeof(int)), null)); + AssertExtensions.Throws("target", () => Expression.Label(Expression.Label(typeof(int)), null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Lambda/LambdaTests.cs b/src/System.Linq.Expressions/tests/Lambda/LambdaTests.cs index 0c15eb44a5e6..664ea677e7dd 100644 --- a/src/System.Linq.Expressions/tests/Lambda/LambdaTests.cs +++ b/src/System.Linq.Expressions/tests/Lambda/LambdaTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -151,40 +151,40 @@ public void HighArityDelegate(bool useInterpreter) [Fact] public void LambdaTypeMustBeDelegate() { - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0))); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0))); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true)); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0))); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(int), Expression.Constant(0))); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), true)); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), true, Enumerable.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), "foo", Enumerable.Empty())); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0))); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0))); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true)); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0))); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(int), Expression.Constant(0))); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), true)); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), true, Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(object), Expression.Constant(0), "foo", Enumerable.Empty())); // Note, be derived from MulticastDelegate, not merely actually MulticastDelegate or Delegate. - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Delegate), Expression.Constant(0))); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Delegate), Expression.Constant(0), true)); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Delegate), Expression.Constant(0))); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Delegate), Expression.Constant(0), true)); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); - Assert.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(MulticastDelegate), Expression.Constant(0))); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(MulticastDelegate), Expression.Constant(0), true)); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), true, Enumerable.Empty())); + AssertExtensions.Throws("TDelegate", () => Expression.Lambda(Expression.Constant(0), "foo", Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(MulticastDelegate), Expression.Constant(0))); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(MulticastDelegate), Expression.Constant(0), true)); } [Fact] public void NullLambdaBody() { - Assert.Throws("body", () => Expression.Lambda>(null)); - Assert.Throws("body", () => Expression.Lambda>(null, true)); - Assert.Throws("body", () => Expression.Lambda>(null, true, Enumerable.Empty())); - Assert.Throws("body", () => Expression.Lambda>(null, "foo", Enumerable.Empty())); - Assert.Throws("body", () => Expression.Lambda(typeof(Func), null)); - Assert.Throws("body", () => Expression.Lambda(typeof(Func), null, true)); - Assert.Throws("body", () => Expression.Lambda(typeof(Func), null, true, Enumerable.Empty())); - Assert.Throws("body", () => Expression.Lambda(typeof(Func), null, "foo", Enumerable.Empty())); + AssertExtensions.Throws("body", () => Expression.Lambda>(null)); + AssertExtensions.Throws("body", () => Expression.Lambda>(null, true)); + AssertExtensions.Throws("body", () => Expression.Lambda>(null, true, Enumerable.Empty())); + AssertExtensions.Throws("body", () => Expression.Lambda>(null, "foo", Enumerable.Empty())); + AssertExtensions.Throws("body", () => Expression.Lambda(typeof(Func), null)); + AssertExtensions.Throws("body", () => Expression.Lambda(typeof(Func), null, true)); + AssertExtensions.Throws("body", () => Expression.Lambda(typeof(Func), null, true, Enumerable.Empty())); + AssertExtensions.Throws("body", () => Expression.Lambda(typeof(Func), null, "foo", Enumerable.Empty())); } [Fact] @@ -203,14 +203,14 @@ public void NullParameters() [Fact] public void NullParameter() { - Assert.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), default(ParameterExpression))); - Assert.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), true, default(ParameterExpression))); - Assert.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), true, Enumerable.Repeat(default(ParameterExpression), 1))); - Assert.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), "foo", Enumerable.Repeat(default(ParameterExpression), 1))); - Assert.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), default(ParameterExpression))); - Assert.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), true, default(ParameterExpression))); - Assert.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), true, Enumerable.Repeat(default(ParameterExpression), 1))); - Assert.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), "foo", Enumerable.Repeat(default(ParameterExpression), 1))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), default(ParameterExpression))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), true, default(ParameterExpression))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), true, Enumerable.Repeat(default(ParameterExpression), 1))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda>(Expression.Constant(0), "foo", Enumerable.Repeat(default(ParameterExpression), 1))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), default(ParameterExpression))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), true, default(ParameterExpression))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), true, Enumerable.Repeat(default(ParameterExpression), 1))); + AssertExtensions.Throws("parameters[0]", () => Expression.Lambda(typeof(Func), Expression.Constant(0), "foo", Enumerable.Repeat(default(ParameterExpression), 1))); } [Fact] @@ -325,8 +325,8 @@ public void NoPreferenceCompile() public void DuplicateParameters() { ParameterExpression param = Expression.Parameter(typeof(int)); - Assert.Throws("parameters[1]", () => Expression.Lambda(Expression.Empty(), false, param, param)); - Assert.Throws("parameters[1]", + AssertExtensions.Throws("parameters[1]", () => Expression.Lambda(Expression.Empty(), false, param, param)); + AssertExtensions.Throws("parameters[1]", () => Expression.Lambda>(Expression.Constant(0), false, param, param)); } @@ -775,8 +775,8 @@ public void ParameterListBehavior(int parCount, string name, bool tailCall) Assert.All(copyToTest, Assert.Null); parameters.CopyTo(copyToTest, 1); Assert.Equal(copyToTest, pars.Prepend(null)); - Assert.Throws("index", () => parameters[-1]); - Assert.Throws("index", () => parameters[parCount]); + AssertExtensions.Throws("index", () => parameters[-1]); + AssertExtensions.Throws("index", () => parameters[parCount]); Assert.Equal(-1, parameters.IndexOf(Expression.Parameter(typeof(int)))); Assert.False(parameters.Contains(Expression.Parameter(typeof(int)))); } @@ -789,10 +789,10 @@ private static int Add(ref int var, int val) [Fact] public void OpenGenericDelegate() { - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), Enumerable.Empty())); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), false)); - Assert.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), false, Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), Enumerable.Empty())); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), false)); + AssertExtensions.Throws("delegateType", () => Expression.Lambda(typeof(Action<>), Expression.Empty(), false, Enumerable.Empty())); } } } diff --git a/src/System.Linq.Expressions/tests/ListInit/ElementInitTests.cs b/src/System.Linq.Expressions/tests/ListInit/ElementInitTests.cs index c9f8d93cf58a..ef7146bb4202 100644 --- a/src/System.Linq.Expressions/tests/ListInit/ElementInitTests.cs +++ b/src/System.Linq.Expressions/tests/ListInit/ElementInitTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -48,86 +49,86 @@ public static void Add(T value) [Fact] public void NullAddMethod() { - Assert.Throws("addMethod", () => Expression.ElementInit(null, Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(null, Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(null, Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(null, Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void NullArguments() { - Assert.Throws("arguments", () => Expression.ElementInit(typeof(List).GetMethod("Add"), default(Expression[]))); - Assert.Throws("arguments", () => Expression.ElementInit(typeof(List).GetMethod("Add"), default(Expression[]))); + AssertExtensions.Throws("arguments", () => Expression.ElementInit(typeof(List).GetMethod("Add"), default(Expression[]))); + AssertExtensions.Throws("arguments", () => Expression.ElementInit(typeof(List).GetMethod("Add"), default(Expression[]))); } [Fact] public void NoArguments() { - Assert.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"))); - Assert.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Empty())); + AssertExtensions.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"))); + AssertExtensions.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Empty())); } [Fact] public void ArgumentCountWrong() { - Assert.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant(0), Expression.Constant(1))); - Assert.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 2))); + AssertExtensions.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant(0), Expression.Constant(1))); + AssertExtensions.Throws("method", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 2))); } [Fact] public void ArgumentTypeMisMatch() { - Assert.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant("Hello"))); - Assert.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(Expression.Constant("Hello"), 1))); + AssertExtensions.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant("Hello"))); + AssertExtensions.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(Expression.Constant("Hello"), 1))); } [Fact] public void UnreadableArgument() { Expression argument = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), argument)); - Assert.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(argument, 1))); + AssertExtensions.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), argument)); + AssertExtensions.Throws("arguments[0]", () => Expression.ElementInit(typeof(List).GetMethod("Add"), Enumerable.Repeat(argument, 1))); } [Fact] public void ParameterlessAddProhibited() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(ParameterlessAdd).GetMethod("Add"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(ParameterlessAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(ParameterlessAdd).GetMethod("Add"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(ParameterlessAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void StaticAddProhibited() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(StaticAdd).GetMethod("Add"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(StaticAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(StaticAdd).GetMethod("Add"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(StaticAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void ByRefAddProhibited() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(ByRefAdd).GetMethod("Add"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(ByRefAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(ByRefAdd).GetMethod("Add"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(ByRefAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void GenericAddProhibited() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(GenericAdd).GetMethod("Add"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(GenericAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(GenericAdd).GetMethod("Add"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(GenericAdd).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void GenericParameterAddProhibited() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(List<>).GetMethod("Add"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(List<>).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(List<>).GetMethod("Add"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(List<>).GetMethod("Add"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] public void AddMethodNotCalledAdd() { - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(List).GetMethod("Remove"), Expression.Constant(0))); - Assert.Throws("addMethod", () => Expression.ElementInit(typeof(List).GetMethod("Remove"), Enumerable.Repeat(Expression.Constant(0), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(List).GetMethod("Remove"), Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(typeof(List).GetMethod("Remove"), Enumerable.Repeat(Expression.Constant(0), 1))); } [Fact] @@ -177,10 +178,10 @@ public void InvalidArgumentIndex() Expression key = Expression.Constant("Key"); Expression value = Expression.Constant(42); ElementInit init = Expression.ElementInit(typeof(Dictionary).GetMethod("Add"), key, value); - Assert.Throws("index", () => init.GetArgument(-1)); - Assert.Throws("index", () => init.GetArgument(2)); - Assert.Throws("index", () => init.GetArgument(3)); - Assert.Throws("index", () => init.GetArgument(int.MaxValue)); + AssertExtensions.Throws("index", () => init.GetArgument(-1)); + AssertExtensions.Throws("index", () => init.GetArgument(2)); + AssertExtensions.Throws("index", () => init.GetArgument(3)); + AssertExtensions.Throws("index", () => init.GetArgument(int.MaxValue)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs b/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs index 133d072d0b12..f58338a3fb16 100644 --- a/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs +++ b/src/System.Linq.Expressions/tests/ListInit/ListInitExpressionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -69,36 +69,36 @@ public int Add(int value) public void NullNewMethod() { ConstantExpression validExpression = Expression.Constant(1); - Assert.Throws("newExpression", () => Expression.ListInit(null, validExpression)); - Assert.Throws("newExpression", () => Expression.ListInit(null, Enumerable.Repeat(validExpression, 1))); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, validExpression)); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, Enumerable.Repeat(validExpression, 1))); MethodInfo validMethod = typeof(List).GetMethod("Add"); - Assert.Throws("newExpression", () => Expression.ListInit(null, validMethod, validExpression)); - Assert.Throws("newExpression", () => Expression.ListInit(null, validMethod, Enumerable.Repeat(validExpression, 1))); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, validMethod, validExpression)); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, validMethod, Enumerable.Repeat(validExpression, 1))); - Assert.Throws("newExpression", () => Expression.ListInit(null, default(MethodInfo), validExpression)); - Assert.Throws("newExpression", () => Expression.ListInit(null, null, Enumerable.Repeat(validExpression, 1))); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, default(MethodInfo), validExpression)); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, null, Enumerable.Repeat(validExpression, 1))); ElementInit validElementInit = Expression.ElementInit(validMethod, validExpression); - Assert.Throws("newExpression", () => Expression.ListInit(null, validElementInit)); - Assert.Throws("newExpression", () => Expression.ListInit(null, Enumerable.Repeat(validElementInit, 1))); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, validElementInit)); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(null, Enumerable.Repeat(validElementInit, 1))); } [Fact] public void NullInitializers() { NewExpression validNew = Expression.New(typeof(List)); - Assert.Throws("initializers", () => Expression.ListInit(validNew, default(Expression[]))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, default(IEnumerable))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, default(ElementInit[]))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, default(Expression[]))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, default(ElementInit[]))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, default(IEnumerable))); MethodInfo validMethod = typeof(List).GetMethod("Add"); - Assert.Throws("initializers", () => Expression.ListInit(validNew, validMethod, default(Expression[]))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, validMethod, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, validMethod, default(Expression[]))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, validMethod, default(IEnumerable))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, null, default(Expression[]))); - Assert.Throws("initializers", () => Expression.ListInit(validNew, null, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, null, default(Expression[]))); + AssertExtensions.Throws("initializers", () => Expression.ListInit(validNew, null, default(IEnumerable))); } private static IEnumerable ZeroInitializerInits() @@ -140,7 +140,7 @@ public void InitializeNonEnumerable() { // () => new NonEnumerableAddable { 1, 2, 4, 16, 42 } isn't allowed because list initialization // is allowed only with enumerable types. - Assert.Throws("newExpression", () => Expression.ListInit(Expression.New(typeof(NonEnumerableAddable)), Expression.Constant(1))); + AssertExtensions.Throws("newExpression", () => Expression.ListInit(Expression.New(typeof(NonEnumerableAddable)), Expression.Constant(1))); } [Fact] @@ -152,9 +152,9 @@ public void StaticAddMethodOnType() // this exception behavior (rather than ArgumentException) is compatible with the .NET Framework Assert.Throws(() => Expression.ListInit(newExp, Expression.Constant(""))); - Assert.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(""))); - Assert.Throws("addMethod", () => Expression.ElementInit(adder, Expression.Constant(""))); - Assert.Throws("addMethod", () => Expression.ElementInit(adder, Enumerable.Repeat(Expression.Constant(""), 1))); + AssertExtensions.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(""))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(adder, Expression.Constant(""))); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(adder, Enumerable.Repeat(Expression.Constant(""), 1))); } [Fact] @@ -175,9 +175,9 @@ public void OpenGenericAddMethod() adder = typeof(AnyTypeList).GetMethod(nameof(AnyTypeList.Add)).MakeGenericMethod(typeof(List)); Assert.Throws(() => Expression.ListInit(newExp, adder, Expression.Constant(0))); adder = typeof(AnyTypeList).GetMethod(nameof(AnyTypeList.AddIntRegardless)); - Assert.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(0))); adder = typeof(AnyTypeList).GetMethod(nameof(AnyTypeList.AddIntRegardless)).MakeGenericMethod(typeof(List<>)); - Assert.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(0))); + AssertExtensions.Throws("addMethod", () => Expression.ListInit(newExp, adder, Expression.Constant(0))); } [Theory, ClassData(typeof(CompilationTypes))] @@ -266,8 +266,8 @@ public void UpdateNullThrows() Expression.Constant(1), Expression.Constant(2), Expression.Constant(3)); - Assert.Throws("newExpression", () => init.Update(null, init.Initializers)); - Assert.Throws("initializers", () => init.Update(init.NewExpression, null)); + AssertExtensions.Throws("newExpression", () => init.Update(null, init.Initializers)); + AssertExtensions.Throws("initializers", () => init.Update(init.NewExpression, null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Loop/LoopTests.cs b/src/System.Linq.Expressions/tests/Loop/LoopTests.cs index cc92cd178b56..f3eb6b2cbe44 100644 --- a/src/System.Linq.Expressions/tests/Loop/LoopTests.cs +++ b/src/System.Linq.Expressions/tests/Loop/LoopTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -30,24 +30,24 @@ public IntegralException(int number) [Fact] public void NullBody() { - Assert.Throws("body", () => Expression.Loop(null)); - Assert.Throws("body", () => Expression.Loop(null, null)); - Assert.Throws("body", () => Expression.Loop(null, null, null)); + AssertExtensions.Throws("body", () => Expression.Loop(null)); + AssertExtensions.Throws("body", () => Expression.Loop(null, null)); + AssertExtensions.Throws("body", () => Expression.Loop(null, null, null)); } [Fact] public void UnreadableBody() { Expression body = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("body", () => Expression.Loop(body)); - Assert.Throws("body", () => Expression.Loop(body, null)); - Assert.Throws("body", () => Expression.Loop(body, null, null)); + AssertExtensions.Throws("body", () => Expression.Loop(body)); + AssertExtensions.Throws("body", () => Expression.Loop(body, null)); + AssertExtensions.Throws("body", () => Expression.Loop(body, null, null)); } [Fact] public void NonVoidContinue() { - Assert.Throws("continue", () => Expression.Loop(Expression.Empty(), null, Expression.Label(typeof(int)))); + AssertExtensions.Throws("continue", () => Expression.Loop(Expression.Empty(), null, Expression.Label(typeof(int)))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Member/MemberAccessTests.cs b/src/System.Linq.Expressions/tests/Member/MemberAccessTests.cs index 103d05e13ad4..99992ee57319 100644 --- a/src/System.Linq.Expressions/tests/Member/MemberAccessTests.cs +++ b/src/System.Linq.Expressions/tests/Member/MemberAccessTests.cs @@ -222,24 +222,24 @@ public static void CheckMemberAccessClassStaticReadOnlyFieldTest(bool useInterpr [Fact] public static void Field_NullField_ThrowsArgumentNullException() { - Assert.Throws("field", () => Expression.Field(null, (FieldInfo)null)); - Assert.Throws("fieldName", () => Expression.Field(Expression.Constant(new FC()), (string)null)); + AssertExtensions.Throws("field", () => Expression.Field(null, (FieldInfo)null)); + AssertExtensions.Throws("fieldName", () => Expression.Field(Expression.Constant(new FC()), (string)null)); } [Fact] public static void Field_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => Expression.Field(Expression.Constant(new FC()), null, "AField")); + AssertExtensions.Throws("type", () => Expression.Field(Expression.Constant(new FC()), null, "AField")); } [Fact] public static void Field_StaticField_NonNullExpression_ThrowsArgumentException() { Expression expression = Expression.Constant(new FC()); - Assert.Throws("expression", () => Expression.Field(expression, typeof(FC), nameof(FC.SI))); - Assert.Throws("expression", () => Expression.Field(expression, typeof(FC).GetField(nameof(FC.SI)))); + AssertExtensions.Throws("expression", () => Expression.Field(expression, typeof(FC), nameof(FC.SI))); + AssertExtensions.Throws("expression", () => Expression.Field(expression, typeof(FC).GetField(nameof(FC.SI)))); - Assert.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(FC).GetField(nameof(FC.SI)))); + AssertExtensions.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(FC).GetField(nameof(FC.SI)))); } [Fact] @@ -257,11 +257,11 @@ public static void Field_GenericFieldAccessor_ThrowsArgumentException() [Fact] public static void Field_InstanceField_NullExpression_ThrowsArgumentException() { - Assert.Throws("expression", () => Expression.Field(null, "fieldName")); - Assert.Throws("field", () => Expression.Field(null, typeof(FC), nameof(FC.II))); - Assert.Throws("field", () => Expression.Field(null, typeof(FC).GetField(nameof(FC.II)))); + AssertExtensions.Throws("expression", () => Expression.Field(null, "fieldName")); + AssertExtensions.Throws("field", () => Expression.Field(null, typeof(FC), nameof(FC.II))); + AssertExtensions.Throws("field", () => Expression.Field(null, typeof(FC).GetField(nameof(FC.II)))); - Assert.Throws("field", () => Expression.MakeMemberAccess(null, typeof(FC).GetField(nameof(FC.II)))); + AssertExtensions.Throws("field", () => Expression.MakeMemberAccess(null, typeof(FC).GetField(nameof(FC.II)))); } [Fact] @@ -269,11 +269,11 @@ public static void Field_ExpressionNotReadable_ThrowsArgumentException() { Expression expression = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.Field(expression, "fieldName")); - Assert.Throws("expression", () => Expression.Field(expression, typeof(FC), nameof(FC.SI))); - Assert.Throws("expression", () => Expression.Field(expression, typeof(FC).GetField(nameof(FC.SI)))); + AssertExtensions.Throws("expression", () => Expression.Field(expression, "fieldName")); + AssertExtensions.Throws("expression", () => Expression.Field(expression, typeof(FC), nameof(FC.SI))); + AssertExtensions.Throws("expression", () => Expression.Field(expression, typeof(FC).GetField(nameof(FC.SI)))); - Assert.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(FC).GetField(nameof(FC.SI)))); + AssertExtensions.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(FC).GetField(nameof(FC.SI)))); } [Fact] @@ -417,48 +417,48 @@ public static void CheckMemberAccessClassInstanceIndexerAssignNullReferenceTest( [Fact] public static void AccessIndexedPropertyWithoutIndex() { - Assert.Throws("property", () => Expression.Property(Expression.Default(typeof(List)), typeof(List).GetProperty("Item"))); + AssertExtensions.Throws("property", () => Expression.Property(Expression.Default(typeof(List)), typeof(List).GetProperty("Item"))); } [Fact] public static void AccessIndexedPropertyWithoutIndexWriteOnly() { - Assert.Throws("property", () => Expression.Property(Expression.Default(typeof(UnreadableIndexableClass)), typeof(UnreadableIndexableClass).GetProperty("Item"))); + AssertExtensions.Throws("property", () => Expression.Property(Expression.Default(typeof(UnreadableIndexableClass)), typeof(UnreadableIndexableClass).GetProperty("Item"))); } [Fact] public static void Property_NullProperty_ThrowsArgumentNullException() { - Assert.Throws("property", () => Expression.Property(null, (PropertyInfo)null)); - Assert.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), (string)null)); + AssertExtensions.Throws("property", () => Expression.Property(null, (PropertyInfo)null)); + AssertExtensions.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), (string)null)); } [Fact] public static void Property_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => Expression.Property(Expression.Constant(new PC()), null, "AProperty")); + AssertExtensions.Throws("type", () => Expression.Property(Expression.Constant(new PC()), null, "AProperty")); } [Fact] public static void Property_StaticProperty_NonNullExpression_ThrowsArgumentException() { Expression expression = Expression.Constant(new PC()); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC), nameof(PC.SI))); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)))); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)).GetGetMethod())); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC), nameof(PC.SI))); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)))); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)).GetGetMethod())); - Assert.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(PC).GetProperty(nameof(PC.SI)))); + AssertExtensions.Throws("expression", () => Expression.MakeMemberAccess(expression, typeof(PC).GetProperty(nameof(PC.SI)))); } [Fact] public static void Property_InstanceProperty_NullExpression_ThrowsArgumentException() { - Assert.Throws("expression", () => Expression.Property(null, "propertyName")); - Assert.Throws("property", () => Expression.Property(null, typeof(PC), nameof(PC.II))); - Assert.Throws("property", () => Expression.Property(null, typeof(PC).GetProperty(nameof(PC.II)))); - Assert.Throws("property", () => Expression.Property(null, typeof(PC).GetProperty(nameof(PC.II)).GetGetMethod())); + AssertExtensions.Throws("expression", () => Expression.Property(null, "propertyName")); + AssertExtensions.Throws("property", () => Expression.Property(null, typeof(PC), nameof(PC.II))); + AssertExtensions.Throws("property", () => Expression.Property(null, typeof(PC).GetProperty(nameof(PC.II)))); + AssertExtensions.Throws("property", () => Expression.Property(null, typeof(PC).GetProperty(nameof(PC.II)).GetGetMethod())); - Assert.Throws("property", () => Expression.MakeMemberAccess(null, typeof(PC).GetProperty(nameof(PC.II)))); + AssertExtensions.Throws("property", () => Expression.MakeMemberAccess(null, typeof(PC).GetProperty(nameof(PC.II)))); } [Fact] @@ -466,10 +466,10 @@ public static void Property_ExpressionNotReadable_ThrowsArgumentException() { Expression expression = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.Property(expression, "fieldName")); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC), nameof(PC.SI))); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)))); - Assert.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)).GetGetMethod())); + AssertExtensions.Throws("expression", () => Expression.Property(expression, "fieldName")); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC), nameof(PC.SI))); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)))); + AssertExtensions.Throws("expression", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.SI)).GetGetMethod())); } [Fact] @@ -477,38 +477,38 @@ public static void Property_ExpressionNotTypeOfDeclaringType_ThrowsArgumentExcep { Expression expression = Expression.Constant(new FC()); - Assert.Throws("property", () => Expression.Property(expression, typeof(PC), nameof(PC.II))); - Assert.Throws("property", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.II)))); - Assert.Throws("property", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.II)).GetGetMethod())); + AssertExtensions.Throws("property", () => Expression.Property(expression, typeof(PC), nameof(PC.II))); + AssertExtensions.Throws("property", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.II)))); + AssertExtensions.Throws("property", () => Expression.Property(expression, typeof(PC).GetProperty(nameof(PC.II)).GetGetMethod())); - Assert.Throws("property", () => Expression.MakeMemberAccess(expression, typeof(PC).GetProperty(nameof(PC.II)))); + AssertExtensions.Throws("property", () => Expression.MakeMemberAccess(expression, typeof(PC).GetProperty(nameof(PC.II)))); } [Fact] public static void Property_NoSuchPropertyName_ThrowsArgumentException() { - Assert.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), "NoSuchProperty")); - Assert.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), typeof(PC), "NoSuchProperty")); + AssertExtensions.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), "NoSuchProperty")); + AssertExtensions.Throws("propertyName", () => Expression.Property(Expression.Constant(new PC()), typeof(PC), "NoSuchProperty")); } [Fact] public static void Property_NullPropertyAccessor_ThrowsArgumentNullException() { - Assert.Throws("propertyAccessor", () => Expression.Property(Expression.Constant(new PC()), (MethodInfo)null)); + AssertExtensions.Throws("propertyAccessor", () => Expression.Property(Expression.Constant(new PC()), (MethodInfo)null)); } [Fact] public static void Property_GenericPropertyAccessor_ThrowsArgumentException() { - Assert.Throws("propertyAccessor", () => Expression.Property(null, typeof(GenericClass<>).GetProperty(nameof(GenericClass.Property)).GetGetMethod())); - Assert.Throws("propertyAccessor", () => Expression.Property(null, typeof(NonGenericClass).GetMethod(nameof(NonGenericClass.GenericMethod)))); - Assert.Throws("property", () => Expression.Property(null, typeof(GenericClass<>).GetProperty(nameof(GenericClass.Property)))); + AssertExtensions.Throws("propertyAccessor", () => Expression.Property(null, typeof(GenericClass<>).GetProperty(nameof(GenericClass.Property)).GetGetMethod())); + AssertExtensions.Throws("propertyAccessor", () => Expression.Property(null, typeof(NonGenericClass).GetMethod(nameof(NonGenericClass.GenericMethod)))); + AssertExtensions.Throws("property", () => Expression.Property(null, typeof(GenericClass<>).GetProperty(nameof(GenericClass.Property)))); } [Fact] public static void Property_PropertyAccessorNotFromProperty_ThrowsArgumentException() { - Assert.Throws("propertyAccessor", () => Expression.Property(null, typeof(NonGenericClass).GetMethod(nameof(NonGenericClass.StaticMethod)))); + AssertExtensions.Throws("propertyAccessor", () => Expression.Property(null, typeof(NonGenericClass).GetMethod(nameof(NonGenericClass.StaticMethod)))); } [Fact] @@ -520,7 +520,7 @@ public static void Property_ByRefStaticAccess_ThrowsArgumentException() [Fact] public static void PropertyOrField_NullExpression_ThrowsArgumentNullException() { - Assert.Throws("expression", () => Expression.PropertyOrField(null, "APropertyOrField")); + AssertExtensions.Throws("expression", () => Expression.PropertyOrField(null, "APropertyOrField")); } [Fact] @@ -528,20 +528,20 @@ public static void PropertyOrField_ExpressionNotReadable_ThrowsArgumentNullExcep { Expression expression = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.PropertyOrField(expression, "APropertyOrField")); + AssertExtensions.Throws("expression", () => Expression.PropertyOrField(expression, "APropertyOrField")); } [Fact] public static void PropertyOrField_NoSuchPropertyOrField_ThrowsArgumentException() { Expression expression = Expression.Constant(new PC()); - Assert.Throws("propertyOrFieldName", () => Expression.PropertyOrField(expression, "NoSuchPropertyOrField")); + AssertExtensions.Throws("propertyOrFieldName", () => Expression.PropertyOrField(expression, "NoSuchPropertyOrField")); } [Fact] public static void MakeMemberAccess_NullMember_ThrowsArgumentNullExeption() { - Assert.Throws("member", () => Expression.MakeMemberAccess(Expression.Constant(new PC()), null)); + AssertExtensions.Throws("member", () => Expression.MakeMemberAccess(Expression.Constant(new PC()), null)); } [Fact] @@ -549,7 +549,7 @@ public static void MakeMemberAccess_MemberNotFieldOrProperty_ThrowsArgumentExept { MemberInfo member = typeof(NonGenericClass).GetEvent("Event"); - Assert.Throws("member", () => Expression.MakeMemberAccess(Expression.Constant(new PC()), member)); + AssertExtensions.Throws("member", () => Expression.MakeMemberAccess(Expression.Constant(new PC()), member)); } #if FEATURE_COMPILE @@ -567,12 +567,12 @@ public static void Property_NoGetOrSetAccessors_ThrowsArgumentException() Expression expression = Expression.Constant(Activator.CreateInstance(createdType)); - Assert.Throws("property", () => Expression.Property(expression, createdProperty)); - Assert.Throws("property", () => Expression.Property(expression, createdProperty.Name)); + AssertExtensions.Throws("property", () => Expression.Property(expression, createdProperty)); + AssertExtensions.Throws("property", () => Expression.Property(expression, createdProperty.Name)); - Assert.Throws("property", () => Expression.PropertyOrField(expression, createdProperty.Name)); + AssertExtensions.Throws("property", () => Expression.PropertyOrField(expression, createdProperty.Name)); - Assert.Throws("property", () => Expression.MakeMemberAccess(expression, createdProperty)); + AssertExtensions.Throws("property", () => Expression.MakeMemberAccess(expression, createdProperty)); } #endif diff --git a/src/System.Linq.Expressions/tests/MemberInit/BindTests.cs b/src/System.Linq.Expressions/tests/MemberInit/BindTests.cs index ff853815b4f0..fd3d0b4e6165 100644 --- a/src/System.Linq.Expressions/tests/MemberInit/BindTests.cs +++ b/src/System.Linq.Expressions/tests/MemberInit/BindTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -36,13 +36,13 @@ public T WriteOnly [Fact] public void NullPropertyAccessor() { - Assert.Throws("propertyAccessor", () => Expression.Bind(default(MethodInfo), Expression.Constant(0))); + AssertExtensions.Throws("propertyAccessor", () => Expression.Bind(default(MethodInfo), Expression.Constant(0))); } [Fact] public void NullMember() { - Assert.Throws("member", () => Expression.Bind(default(MemberInfo), Expression.Constant(0))); + AssertExtensions.Throws("member", () => Expression.Bind(default(MemberInfo), Expression.Constant(0))); } [Fact] @@ -50,15 +50,15 @@ public void NullExpression() { MemberInfo member = typeof(PropertyAndFields).GetMember(nameof(PropertyAndFields.StringProperty))[0]; PropertyInfo property = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StringProperty)); - Assert.Throws("expression", () => Expression.Bind(member, null)); - Assert.Throws("expression", () => Expression.Bind(property, null)); + AssertExtensions.Throws("expression", () => Expression.Bind(member, null)); + AssertExtensions.Throws("expression", () => Expression.Bind(property, null)); } [Fact] public void ReadOnlyMember() { - Assert.Throws("member", () => Expression.Bind(typeof(string).GetProperty(nameof(string.Length)), Expression.Constant(0))); - Assert.Throws("member", () => Expression.Bind(typeof(string).GetMember(nameof(string.Length))[0], Expression.Constant(0))); + AssertExtensions.Throws("member", () => Expression.Bind(typeof(string).GetProperty(nameof(string.Length)), Expression.Constant(0))); + AssertExtensions.Throws("member", () => Expression.Bind(typeof(string).GetMember(nameof(string.Length))[0], Expression.Constant(0))); } [Fact] @@ -67,8 +67,8 @@ public void WriteOnlyExpression() MemberInfo member = typeof(PropertyAndFields).GetMember(nameof(PropertyAndFields.StringProperty))[0]; PropertyInfo property = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StringProperty)); Expression expression = Expression.Property(Expression.Constant(new Unreadable()), typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.Bind(member, expression)); - Assert.Throws("expression", () => Expression.Bind(property, expression)); + AssertExtensions.Throws("expression", () => Expression.Bind(member, expression)); + AssertExtensions.Throws("expression", () => Expression.Bind(property, expression)); } [Fact] @@ -76,8 +76,8 @@ public void MethodForMember() { MemberInfo member = typeof(PropertyAndFields).GetMember(nameof(object.ToString))[0]; MethodInfo method = typeof(PropertyAndFields).GetMethod(nameof(object.ToString)); - Assert.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); - Assert.Throws("propertyAccessor", () => Expression.Bind(method, Expression.Constant(""))); + AssertExtensions.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); + AssertExtensions.Throws("propertyAccessor", () => Expression.Bind(method, Expression.Constant(""))); } [Fact] @@ -106,7 +106,7 @@ public void MustBeMemberOfType() typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StringProperty)), Expression.Constant("value") ); - Assert.Throws("bindings[0]", () => Expression.MemberInit(newExp, bind)); + AssertExtensions.Throws("bindings[0]", () => Expression.MemberInit(newExp, bind)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -179,8 +179,8 @@ public void ReadonlyProperty() { MemberInfo member = typeof(PropertyAndFields).GetMember(nameof(PropertyAndFields.ReadonlyStringProperty))[0]; PropertyInfo property = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.ReadonlyStringProperty)); - Assert.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); - Assert.Throws("member", () => Expression.Bind(property, Expression.Constant(""))); + AssertExtensions.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); + AssertExtensions.Throws("member", () => Expression.Bind(property, Expression.Constant(""))); } [Fact] @@ -188,8 +188,8 @@ public void StaticReadonlyProperty() { MemberInfo member = typeof(PropertyAndFields).GetMember(nameof(PropertyAndFields.StaticReadonlyStringProperty))[0]; PropertyInfo property = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StaticReadonlyStringProperty)); - Assert.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); - Assert.Throws("member", () => Expression.Bind(property, Expression.Constant(""))); + AssertExtensions.Throws("member", () => Expression.Bind(member, Expression.Constant(""))); + AssertExtensions.Throws("member", () => Expression.Bind(property, Expression.Constant(""))); } [Theory, ClassData(typeof(CompilationTypes))] @@ -266,7 +266,7 @@ public void GlobalMethod() globalMethod.GetILGenerator().Emit(OpCodes.Ret); module.CreateGlobalFunctions(); MethodInfo globalMethodInfo = module.GetMethod(globalMethod.Name); - Assert.Throws("propertyAccessor", () => Expression.Bind(globalMethodInfo, Expression.Constant(2))); + AssertExtensions.Throws("propertyAccessor", () => Expression.Bind(globalMethodInfo, Expression.Constant(2))); } [Fact] @@ -276,7 +276,7 @@ public void GlobalField() FieldBuilder fieldBuilder = module.DefineInitializedData("GlobalField", new byte[4], FieldAttributes.Public); module.CreateGlobalFunctions(); FieldInfo globalField = module.GetField(fieldBuilder.Name); - Assert.Throws("member", () => Expression.Bind(globalField, Expression.Default(globalField.FieldType))); + AssertExtensions.Throws("member", () => Expression.Bind(globalField, Expression.Default(globalField.FieldType))); } #endif } diff --git a/src/System.Linq.Expressions/tests/MemberInit/ListBindTests.cs b/src/System.Linq.Expressions/tests/MemberInit/ListBindTests.cs index 51ea32f26376..6f64554b5c12 100644 --- a/src/System.Linq.Expressions/tests/MemberInit/ListBindTests.cs +++ b/src/System.Linq.Expressions/tests/MemberInit/ListBindTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -44,16 +44,16 @@ public IEnumerable EnumerableProperty public void MethodInfoNull() { ElementInit elInit = Expression.ElementInit(typeof(List).GetMethod(nameof(List.Add)), Expression.Constant(0)); - Assert.Throws("propertyAccessor", () => Expression.ListBind(default(MethodInfo), elInit)); - Assert.Throws("propertyAccessor", () => Expression.ListBind(default(MethodInfo), Enumerable.Repeat(elInit, 1))); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(default(MethodInfo), elInit)); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(default(MethodInfo), Enumerable.Repeat(elInit, 1))); } [Fact] public void MemberInfoNull() { ElementInit elInit = Expression.ElementInit(typeof(List).GetMethod(nameof(List.Add)), Expression.Constant(0)); - Assert.Throws("member", () => Expression.ListBind(default(MemberInfo), elInit)); - Assert.Throws("member", () => Expression.ListBind(default(MemberInfo), Enumerable.Repeat(elInit, 1))); + AssertExtensions.Throws("member", () => Expression.ListBind(default(MemberInfo), elInit)); + AssertExtensions.Throws("member", () => Expression.ListBind(default(MemberInfo), Enumerable.Repeat(elInit, 1))); } [Fact] @@ -61,10 +61,10 @@ public void InitializersNull() { PropertyInfo property = typeof(ListWrapper).GetProperty(nameof(ListWrapper.ListProperty)); MemberInfo member = typeof(ListWrapper).GetMember(nameof(ListWrapper.ListProperty))[0]; - Assert.Throws("initializers", () => Expression.ListBind(property, default(ElementInit[]))); - Assert.Throws("initializers", () => Expression.ListBind(property, default(IEnumerable))); - Assert.Throws("initializers", () => Expression.ListBind(member, default(ElementInit[]))); - Assert.Throws("initializers", () => Expression.ListBind(member, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListBind(property, default(ElementInit[]))); + AssertExtensions.Throws("initializers", () => Expression.ListBind(property, default(IEnumerable))); + AssertExtensions.Throws("initializers", () => Expression.ListBind(member, default(ElementInit[]))); + AssertExtensions.Throws("initializers", () => Expression.ListBind(member, default(IEnumerable))); } [Fact] @@ -73,10 +73,10 @@ public void MethodForMember() MethodInfo method = typeof(ListWrapper).GetMethod(nameof(ListWrapper.GetList)); MemberInfo member = typeof(ListWrapper).GetMember(nameof(ListWrapper.GetList))[0]; ElementInit elInit = Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant(0)); - Assert.Throws("propertyAccessor", () => Expression.ListBind(method, elInit)); - Assert.Throws("propertyAccessor", () => Expression.ListBind(method, Enumerable.Repeat(elInit, 1))); - Assert.Throws("member", () => Expression.ListBind(member, elInit)); - Assert.Throws("member", () => Expression.ListBind(member, Enumerable.Repeat(elInit, 1))); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(method, elInit)); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(method, Enumerable.Repeat(elInit, 1))); + AssertExtensions.Throws("member", () => Expression.ListBind(member, elInit)); + AssertExtensions.Throws("member", () => Expression.ListBind(member, Enumerable.Repeat(elInit, 1))); } [Fact] @@ -84,10 +84,10 @@ public void NonEnumerableListType() { PropertyInfo property = typeof(string).GetProperty(nameof(string.Length)); MemberInfo member = typeof(string).GetMember(nameof(string.Length))[0]; - Assert.Throws("member", () => Expression.ListBind(property)); - Assert.Throws("member", () => Expression.ListBind(property, Enumerable.Empty())); - Assert.Throws("member", () => Expression.ListBind(member)); - Assert.Throws("member", () => Expression.ListBind(member, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.ListBind(property)); + AssertExtensions.Throws("member", () => Expression.ListBind(property, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.ListBind(member)); + AssertExtensions.Throws("member", () => Expression.ListBind(member, Enumerable.Empty())); } private static IEnumerable NonAddableListExpressions() @@ -115,13 +115,13 @@ public void NonAddableListType(MemberListBinding listBinding, bool useInterprete [Fact] public void NullElement() { - Assert.Throws("initializers", () => Expression.ListBind(typeof(ListWrapper).GetMethod(nameof(ListWrapper.GetList)), null)); + AssertExtensions.Throws("initializers", () => Expression.ListBind(typeof(ListWrapper).GetMethod(nameof(ListWrapper.GetList)), null)); } [Fact] public void MismatchingElement() { - Assert.Throws("propertyAccessor", () => Expression.ListBind(typeof(ListWrapper).GetMethod(nameof(ListWrapper.GetList)), Expression.ElementInit(typeof(HashSet).GetMethod("Add"), Expression.Constant(1)))); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(typeof(ListWrapper).GetMethod(nameof(ListWrapper.GetList)), Expression.ElementInit(typeof(HashSet).GetMethod("Add"), Expression.Constant(1)))); } [Fact] @@ -129,10 +129,10 @@ public void BindMethodMustBeProperty() { MemberInfo toString = typeof(object).GetMember(nameof(ToString))[0]; MethodInfo toStringMeth = typeof(object).GetMethod(nameof(ToString)); - Assert.Throws("member", () => Expression.ListBind(toString)); - Assert.Throws("member", () => Expression.ListBind(toString, Enumerable.Empty())); - Assert.Throws("propertyAccessor", () => Expression.ListBind(toStringMeth)); - Assert.Throws("propertyAccessor", () => Expression.ListBind(toStringMeth, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.ListBind(toString)); + AssertExtensions.Throws("member", () => Expression.ListBind(toString, Enumerable.Empty())); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(toStringMeth)); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(toStringMeth, Enumerable.Empty())); } public static IEnumerable ZeroInitializerExpressions() @@ -166,10 +166,10 @@ public void UnreadableListProperty() { PropertyInfo property = typeof(ListWrapper).GetProperty(nameof(ListWrapper.WriteOnlyList)); MemberInfo member = typeof(ListWrapper).GetMember(nameof(ListWrapper.WriteOnlyList))[0]; - Assert.Throws("member", () => Expression.ListBind(property, new ElementInit[0])); - Assert.Throws("member", () => Expression.ListBind(property, Enumerable.Empty())); - Assert.Throws("member", () => Expression.ListBind(member, new ElementInit[0])); - Assert.Throws("member", () => Expression.ListBind(member, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.ListBind(property, new ElementInit[0])); + AssertExtensions.Throws("member", () => Expression.ListBind(property, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.ListBind(member, new ElementInit[0])); + AssertExtensions.Throws("member", () => Expression.ListBind(member, Enumerable.Empty())); } [Theory, ClassData(typeof(CompilationTypes))] @@ -260,7 +260,7 @@ public void UpdateNullThrows() typeof(ListWrapper).GetProperty(nameof(ListWrapper.ListProperty)), Enumerable.Range(0, 3) .Select(i => Expression.ElementInit(typeof(List).GetMethod("Add"), Expression.Constant(i)))); - Assert.Throws("initializers", () => binding.Update(null)); + AssertExtensions.Throws("initializers", () => binding.Update(null)); } [Fact] @@ -300,7 +300,7 @@ public void GlobalMethod() globalMethod.GetILGenerator().Emit(OpCodes.Ret); module.CreateGlobalFunctions(); MethodInfo globalMethodInfo = module.GetMethod(globalMethod.Name); - Assert.Throws("propertyAccessor", () => Expression.ListBind(globalMethodInfo)); + AssertExtensions.Throws("propertyAccessor", () => Expression.ListBind(globalMethodInfo)); } #endif diff --git a/src/System.Linq.Expressions/tests/MemberInit/MemberBindTests.cs b/src/System.Linq.Expressions/tests/MemberInit/MemberBindTests.cs index cde391152fdf..e2d2205c31b4 100644 --- a/src/System.Linq.Expressions/tests/MemberInit/MemberBindTests.cs +++ b/src/System.Linq.Expressions/tests/MemberInit/MemberBindTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -46,10 +46,10 @@ public static Inner StaticWriteonlyInnerProperty { set { } } [Fact] public void NullMethodOrMemberInfo() { - Assert.Throws("member", () => Expression.MemberBind(default(MemberInfo))); - Assert.Throws("member", () => Expression.MemberBind(default(MemberInfo), Enumerable.Empty())); - Assert.Throws("propertyAccessor", () => Expression.MemberBind(default(MethodInfo))); - Assert.Throws("propertyAccessor", () => Expression.MemberBind(default(MethodInfo), Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.MemberBind(default(MemberInfo))); + AssertExtensions.Throws("member", () => Expression.MemberBind(default(MemberInfo), Enumerable.Empty())); + AssertExtensions.Throws("propertyAccessor", () => Expression.MemberBind(default(MethodInfo))); + AssertExtensions.Throws("propertyAccessor", () => Expression.MemberBind(default(MethodInfo), Enumerable.Empty())); } [Fact] @@ -57,10 +57,10 @@ public void NullBindings() { PropertyInfo mem = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StringProperty)); MethodInfo meth = mem.GetGetMethod(); - Assert.Throws("bindings", () => Expression.MemberBind(mem, default(MemberBinding[]))); - Assert.Throws("bindings", () => Expression.MemberBind(mem, default(IEnumerable))); - Assert.Throws("bindings", () => Expression.MemberBind(meth, default(MemberBinding[]))); - Assert.Throws("bindings", () => Expression.MemberBind(meth, default(IEnumerable))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(mem, default(MemberBinding[]))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(mem, default(IEnumerable))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(meth, default(MemberBinding[]))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(meth, default(IEnumerable))); } [Fact] @@ -68,10 +68,10 @@ public void NullBindingInBindings() { PropertyInfo mem = typeof(PropertyAndFields).GetProperty(nameof(PropertyAndFields.StringProperty)); MethodInfo meth = mem.GetGetMethod(); - Assert.Throws("bindings", () => Expression.MemberBind(mem, default(MemberBinding))); - Assert.Throws("bindings", () => Expression.MemberBind(mem, Enumerable.Repeat(null, 1))); - Assert.Throws("bindings", () => Expression.MemberBind(meth, default(MemberBinding))); - Assert.Throws("bindings", () => Expression.MemberBind(meth, Enumerable.Repeat(null, 1))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(mem, default(MemberBinding))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(mem, Enumerable.Repeat(null, 1))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(meth, default(MemberBinding))); + AssertExtensions.Throws("bindings", () => Expression.MemberBind(meth, Enumerable.Repeat(null, 1))); } [Fact] @@ -79,10 +79,10 @@ public void BindMethodMustBeProperty() { MemberInfo toString = typeof(object).GetMember(nameof(ToString))[0]; MethodInfo toStringMeth = typeof(object).GetMethod(nameof(ToString)); - Assert.Throws("member", () => Expression.MemberBind(toString)); - Assert.Throws("member", () => Expression.MemberBind(toString, Enumerable.Empty())); - Assert.Throws("propertyAccessor", () => Expression.MemberBind(toStringMeth)); - Assert.Throws("propertyAccessor", () => Expression.MemberBind(toStringMeth, Enumerable.Empty())); + AssertExtensions.Throws("member", () => Expression.MemberBind(toString)); + AssertExtensions.Throws("member", () => Expression.MemberBind(toString, Enumerable.Empty())); + AssertExtensions.Throws("propertyAccessor", () => Expression.MemberBind(toStringMeth)); + AssertExtensions.Throws("propertyAccessor", () => Expression.MemberBind(toStringMeth, Enumerable.Empty())); } [Fact] @@ -119,7 +119,7 @@ public void UpdateNullThrows() { MemberAssignment bind = Expression.Bind(typeof(Inner).GetProperty(nameof(Inner.Value)), Expression.Constant(3)); MemberMemberBinding memberBind = Expression.MemberBind(typeof(Outer).GetProperty(nameof(Outer.InnerProperty)), bind); - Assert.Throws("bindings", () => memberBind.Update(null)); + AssertExtensions.Throws("bindings", () => memberBind.Update(null)); } [Fact] @@ -263,7 +263,7 @@ public void GlobalMethod() globalMethod.GetILGenerator().Emit(OpCodes.Ret); module.CreateGlobalFunctions(); MethodInfo globalMethodInfo = module.GetMethod(globalMethod.Name); - Assert.Throws("propertyAccessor", () => Expression.MemberBind(globalMethodInfo)); + AssertExtensions.Throws("propertyAccessor", () => Expression.MemberBind(globalMethodInfo)); } #endif diff --git a/src/System.Linq.Expressions/tests/New/NewTests.cs b/src/System.Linq.Expressions/tests/New/NewTests.cs index 3cbde93843ee..eb02c27b81fe 100644 --- a/src/System.Linq.Expressions/tests/New/NewTests.cs +++ b/src/System.Linq.Expressions/tests/New/NewTests.cs @@ -262,12 +262,12 @@ public static Func GetInstanceFunc(bool useInterp [Fact] public static void New_NullConstructor_ThrowsArgumentNullException() { - Assert.Throws("constructor", () => Expression.New((ConstructorInfo)null)); - Assert.Throws("constructor", () => Expression.New(null, new Expression[0])); - Assert.Throws("constructor", () => Expression.New(null, (IEnumerable)new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New((ConstructorInfo)null)); + AssertExtensions.Throws("constructor", () => Expression.New(null, new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New(null, (IEnumerable)new Expression[0])); - Assert.Throws("constructor", () => Expression.New(null, new Expression[0], new MemberInfo[0])); - Assert.Throws("constructor", () => Expression.New(null, new Expression[0], (IEnumerable)new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(null, new Expression[0], new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(null, new Expression[0], (IEnumerable)new MemberInfo[0])); } [Fact] @@ -275,12 +275,12 @@ public static void StaticConstructor_ThrowsArgumentException() { ConstructorInfo cctor = typeof(StaticCtor).GetTypeInfo().DeclaredConstructors.Single(c => c.IsStatic); - Assert.Throws("constructor", () => Expression.New(cctor)); - Assert.Throws("constructor", () => Expression.New(cctor, new Expression[0])); - Assert.Throws("constructor", () => Expression.New(cctor, (IEnumerable)new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New(cctor)); + AssertExtensions.Throws("constructor", () => Expression.New(cctor, new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New(cctor, (IEnumerable)new Expression[0])); - Assert.Throws("constructor", () => Expression.New(cctor, new Expression[0], new MemberInfo[0])); - Assert.Throws("constructor", () => Expression.New(cctor, new Expression[0], (IEnumerable)new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(cctor, new Expression[0], new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(cctor, new Expression[0], (IEnumerable)new MemberInfo[0])); } [Theory] @@ -298,12 +298,12 @@ public static void ConstructorDeclaringType_GenericTypeDefinition_ThrowsArgument { ConstructorInfo constructor = typeof(GenericClass<>).GetConstructor(new Type[0]); - Assert.Throws("constructor", () => Expression.New(constructor)); - Assert.Throws("constructor", () => Expression.New(constructor, new Expression[0])); - Assert.Throws("constructor", () => Expression.New(constructor, (IEnumerable)new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New(constructor)); + AssertExtensions.Throws("constructor", () => Expression.New(constructor, new Expression[0])); + AssertExtensions.Throws("constructor", () => Expression.New(constructor, (IEnumerable)new Expression[0])); - Assert.Throws("constructor", () => Expression.New(constructor, new Expression[0], new MemberInfo[0])); - Assert.Throws("constructor", () => Expression.New(constructor, new Expression[0], (IEnumerable)new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(constructor, new Expression[0], new MemberInfo[0])); + AssertExtensions.Throws("constructor", () => Expression.New(constructor, new Expression[0], (IEnumerable)new MemberInfo[0])); } public static IEnumerable ConstructorAndArguments_DifferentLengths_TestData() @@ -334,11 +334,11 @@ public static void Arguments_ExpressionNotReadable_ThrowsArgumentExeption() ConstructorInfo constructor = typeof(ClassWithCtors).GetConstructor(new Type[] { typeof(string) }); Expression[] expressions = new Expression[] { Expression.Property(null, typeof(Unreachable), nameof(Unreachable.WriteOnly)) }; - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions)); - Assert.Throws("arguments[0]", () => Expression.New(constructor, (IEnumerable)expressions)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, (IEnumerable)expressions)); - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions, new MemberInfo[1])); - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions, (IEnumerable)new MemberInfo[1])); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions, new MemberInfo[1])); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions, (IEnumerable)new MemberInfo[1])); } [Fact] @@ -347,12 +347,12 @@ public static void ConstructorAndArguments_IncompatibleTypes_ThrowsArgumentExcep ConstructorInfo constructor = typeof(ClassWithCtors).GetConstructor(new Type[] { typeof(string) }); Expression[] expressions = new Expression[] { Expression.Constant(5) }; - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions)); - Assert.Throws("arguments[0]", () => Expression.New(constructor, (IEnumerable)expressions)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, (IEnumerable)expressions)); MemberInfo[] members = new MemberInfo[] { typeof(ClassWithCtors).GetProperty(nameof(ClassWithCtors.IntProperty)) }; - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions, members)); - Assert.Throws("arguments[0]", () => Expression.New(constructor, expressions, members)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions, members)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, expressions, members)); } public static IEnumerable ArgumentsAndMembers_DifferentLengths_TestData() @@ -377,8 +377,8 @@ public static void Members_MemberNotOnDeclaringType_ThrowsArgumentException() Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { typeof(Unreachable).GetProperty(nameof(Unreachable.WriteOnly)) }; - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Theory] @@ -391,8 +391,8 @@ public static void Members_StaticMember_ThrowsArgumentException(string memberNam Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { typeof(ClassWithCtors).GetMember(memberName).First() }; - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Fact] @@ -402,8 +402,8 @@ public static void Members_MemberWriteOnly_ThrowsArgumentException() Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { typeof(ClassWithCtors).GetProperty(nameof(ClassWithCtors.WriteOnlyProperty)) }; - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Fact] @@ -413,8 +413,8 @@ public static void Members_MemberNotPropertyAccessor_ThrowsArgumentException() Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { typeof(ClassWithCtors).GetMethod(nameof(ClassWithCtors.InstanceMethod)) }; - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Fact] @@ -424,8 +424,8 @@ public static void Members_MemberNotFieldPropertyOrMethod_ThrowsArgumentExceptio Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { constructor }; - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("members[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Fact] @@ -435,14 +435,14 @@ public static void Members_ArgumentTypeAndMemberTypeDontMatch_ThrowsArgumentExce Expression[] arguments = new Expression[] { Expression.Constant("hello") }; MemberInfo[] members = new MemberInfo[] { typeof(ClassWithCtors).GetField(nameof(ClassWithCtors._field)) }; - Assert.Throws("arguments[0]", () => Expression.New(constructor, arguments, members)); - Assert.Throws("arguments[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, arguments, members)); + AssertExtensions.Throws("arguments[0]", () => Expression.New(constructor, arguments, (IEnumerable)members)); } [Fact] public static void Type_Null_ThrowsArgumentNullException() { - Assert.Throws("type", () => Expression.New((Type)null)); + AssertExtensions.Throws("type", () => Expression.New((Type)null)); } [Fact] @@ -485,7 +485,7 @@ public static IEnumerable Type_InvalidType_TestData() [MemberData(nameof(Type_InvalidType_TestData))] public static void Type_InvalidType_ThrowsArgumentException(Type type) { - Assert.Throws("type", () => Expression.New(type)); + AssertExtensions.Throws("type", () => Expression.New(type)); } public static IEnumerable OpenGenericConstructors() @@ -507,10 +507,10 @@ public static IEnumerable OpenGenericConstructors() [Theory, MemberData(nameof(OpenGenericConstructors))] public static void OpenGenericConstructorsInvalid(ConstructorInfo ctor, Expression[] arguments) { - Assert.Throws("constructor", () => Expression.New(ctor, arguments)); + AssertExtensions.Throws("constructor", () => Expression.New(ctor, arguments)); if (arguments.Length == 0) { - Assert.Throws("constructor", () => Expression.New(ctor)); + AssertExtensions.Throws("constructor", () => Expression.New(ctor)); } } diff --git a/src/System.Linq.Expressions/tests/New/NewWithByRefParameterTests.cs b/src/System.Linq.Expressions/tests/New/NewWithByRefParameterTests.cs index 05d2207fb83e..8b5ffe05ab91 100644 --- a/src/System.Linq.Expressions/tests/New/NewWithByRefParameterTests.cs +++ b/src/System.Linq.Expressions/tests/New/NewWithByRefParameterTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -110,7 +110,7 @@ public void CreateByRefThrowing(bool useInterpreter) Expression.New(typeof(ByRefNewType).GetConstructors()[0], pX, pY), pX, pY).Compile(useInterpreter); int x = -9; int y = 4; - Assert.Throws("x", () => del(ref x, ref y)); + AssertExtensions.Throws("x", () => del(ref x, ref y)); } [Theory, ClassData(typeof(CompilationTypes))] diff --git a/src/System.Linq.Expressions/tests/ReadOnlyCollectionBuilderTests.cs b/src/System.Linq.Expressions/tests/ReadOnlyCollectionBuilderTests.cs index b19afad6f42b..2a34e3665307 100644 --- a/src/System.Linq.Expressions/tests/ReadOnlyCollectionBuilderTests.cs +++ b/src/System.Linq.Expressions/tests/ReadOnlyCollectionBuilderTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -27,7 +28,7 @@ public void ReadOnlyCollectionBuilder_Ctor_Default() [InlineData(-1)] public void ReadOnlyCollectionBuilder_Ctor_Capacity_ArgumentChecking(int capacity) { - Assert.Throws("capacity", () => new ReadOnlyCollectionBuilder(capacity)); + AssertExtensions.Throws("capacity", () => new ReadOnlyCollectionBuilder(capacity)); } [Theory] @@ -46,7 +47,7 @@ public void ReadOnlyCollectionBuilder_Ctor_Capacity(int capacity) [Fact] public void ReadOnlyCollectionBuilder_Ctor_Collection_ArgumentChecking() { - Assert.Throws("collection", () => new ReadOnlyCollectionBuilder(null)); + AssertExtensions.Throws("collection", () => new ReadOnlyCollectionBuilder(null)); } [Theory] @@ -105,8 +106,8 @@ public void ReadOnlyCollectionBuilder_Capacity2() Assert.Equal(1, rocb.Capacity); Assert.Equal(1, rocb.Count); - Assert.Throws("value", () => { rocb.Capacity = 0; }); - Assert.Throws("value", () => { rocb.Capacity = -1; }); + AssertExtensions.Throws("value", () => { rocb.Capacity = 0; }); + AssertExtensions.Throws("value", () => { rocb.Capacity = -1; }); rocb.Capacity = 1; @@ -246,7 +247,7 @@ public void ReadOnlyCollectionBuilder_Insert() Assert.Equal(0, rocb.Count); Assert.Throws(() => rocb.Insert(-1, 1)); - Assert.Throws("index", () => rocb.Insert(1, 1)); + AssertExtensions.Throws("index", () => rocb.Insert(1, 1)); rocb.Insert(0, 1); @@ -277,10 +278,10 @@ public void ReadOnlyCollectionBuilder_IList_Insert() Assert.Equal(0, rocb.Count); Assert.Throws(() => rocb.Insert(-1, 1)); - Assert.Throws("index", () => rocb.Insert(1, 1)); + AssertExtensions.Throws("index", () => rocb.Insert(1, 1)); - Assert.Throws("value", () => rocb.Insert(1, "bar")); - Assert.Throws("value", () => rocb.Insert(1, null)); + AssertExtensions.Throws("value", () => rocb.Insert(1, "bar")); + AssertExtensions.Throws("value", () => rocb.Insert(1, null)); rocb.Insert(0, 1); @@ -310,28 +311,28 @@ public void ReadOnlyCollectionBuilder_RemoveAt() Assert.True(new[] { 1, 2, 3, 4 }.SequenceEqual(rocb)); - Assert.Throws("index", () => rocb.RemoveAt(-1)); - Assert.Throws("index", () => rocb.RemoveAt(4)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(-1)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(4)); rocb.RemoveAt(0); Assert.True(new[] { 2, 3, 4 }.SequenceEqual(rocb)); - Assert.Throws("index", () => rocb.RemoveAt(3)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(3)); rocb.RemoveAt(1); Assert.True(new[] { 2, 4 }.SequenceEqual(rocb)); - Assert.Throws("index", () => rocb.RemoveAt(2)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(2)); rocb.RemoveAt(1); Assert.True(new[] { 2 }.SequenceEqual(rocb)); - Assert.Throws("index", () => rocb.RemoveAt(1)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(1)); rocb.RemoveAt(0); Assert.Equal(0, rocb.Count); - Assert.Throws("index", () => rocb.RemoveAt(0)); + AssertExtensions.Throws("index", () => rocb.RemoveAt(0)); } [Fact] @@ -399,7 +400,7 @@ public void ReadOnlyCollectionBuilder_Indexer_Get() // CONSIDER: Throw ArgumentOutOfRangeException instead, see https://github.com/dotnet/corefx/issues/14059 Assert.Throws(() => rocb[-1]); - Assert.Throws("index", () => rocb[4]); + AssertExtensions.Throws("index", () => rocb[4]); Assert.Equal(1, rocb[0]); Assert.Equal(2, rocb[1]); @@ -414,7 +415,7 @@ public void ReadOnlyCollectionBuilder_Indexer_IList_Get() // CONSIDER: Throw ArgumentOutOfRangeException instead, see https://github.com/dotnet/corefx/issues/14059 Assert.Throws(() => rocb[-1]); - Assert.Throws("index", () => rocb[4]); + AssertExtensions.Throws("index", () => rocb[4]); Assert.Equal(1, rocb[0]); Assert.Equal(2, rocb[1]); @@ -429,7 +430,7 @@ public void ReadOnlyCollectionBuilder_Indexer_Set() // CONSIDER: Throw ArgumentOutOfRangeException instead, see https://github.com/dotnet/corefx/issues/14059 Assert.Throws(() => rocb[-1] = -1); - Assert.Throws("index", () => rocb[4] = -1); + AssertExtensions.Throws("index", () => rocb[4] = -1); rocb[0] = -1; Assert.Equal(-1, rocb[0]); @@ -451,10 +452,10 @@ public void ReadOnlyCollectionBuilder_Indexer_IList_Set() // CONSIDER: Throw ArgumentOutOfRangeException instead, see https://github.com/dotnet/corefx/issues/14059 Assert.Throws(() => rocb[-1] = -1); - Assert.Throws("index", () => rocb[4] = -1); + AssertExtensions.Throws("index", () => rocb[4] = -1); - Assert.Throws("value", () => rocb[0] = "bar"); - Assert.Throws("value", () => rocb[0] = null); + AssertExtensions.Throws("value", () => rocb[0] = "bar"); + AssertExtensions.Throws("value", () => rocb[0] = null); rocb[0] = -1; Assert.Equal(-1, rocb[0]); @@ -599,8 +600,8 @@ public void ReadOnlyCollectionBuilder_Reverse_Range_ArgumentChecking() { var rocb = new ReadOnlyCollectionBuilder(new[] { 1, 2, 3 }); - Assert.Throws("index", () => rocb.Reverse(-1, 1)); - Assert.Throws("count", () => rocb.Reverse(1, -1)); + AssertExtensions.Throws("index", () => rocb.Reverse(-1, 1)); + AssertExtensions.Throws("count", () => rocb.Reverse(1, -1)); // CONSIDER: Throw ArgumentException just like List does, see https://github.com/dotnet/corefx/issues/14059 // Assert.Throws(() => rocb.Reverse(3, 1)); diff --git a/src/System.Linq.Expressions/tests/SequenceTests/SequenceTests.cs b/src/System.Linq.Expressions/tests/SequenceTests/SequenceTests.cs index 3a0d34a7b3c2..7d85436e91f9 100644 --- a/src/System.Linq.Expressions/tests/SequenceTests/SequenceTests.cs +++ b/src/System.Linq.Expressions/tests/SequenceTests/SequenceTests.cs @@ -34,7 +34,7 @@ public static void ElementInit() MethodInfo mi1 = typeof(Expression_Tests).GetMethod("Add"); ConstantExpression ce1 = Expression.Constant(4, typeof(int)); - Assert.Throws("addMethod", () => Expression.ElementInit(mi1, new Expression[] { ce1 })); + AssertExtensions.Throws("addMethod", () => Expression.ElementInit(mi1, new Expression[] { ce1 })); } public class Atom @@ -431,13 +431,13 @@ public static void TestGetFuncType() [Fact] public static void TestGetFuncTypeWithNullFails() { - Assert.Throws("typeArgs", () => Expression.GetFuncType(null)); + AssertExtensions.Throws("typeArgs", () => Expression.GetFuncType(null)); } [Fact] public static void TestGetFuncTypeWithTooManyArgsFails() { - Assert.Throws("typeArgs", () => Expression.GetFuncType(new Type[] { typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int) })); + AssertExtensions.Throws("typeArgs", () => Expression.GetFuncType(new Type[] { typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int) })); } [Fact] @@ -1792,7 +1792,7 @@ public static Func ComputeDelegate(int y) public static void InvokeNonTypedLambdaFails() { Expression call = Expression.Call(null, typeof(Compiler_Tests).GetMethod("ComputeDynamicLambda", BindingFlags.Static | BindingFlags.Public), new Expression[] { }); - Assert.Throws("expression", () => Expression.Invoke(call, null)); + AssertExtensions.Throws("expression", () => Expression.Invoke(call, null)); } public static LambdaExpression ComputeDynamicLambda() @@ -1804,7 +1804,7 @@ public static LambdaExpression ComputeDynamicLambda() public static void InvokeNonTypedDelegateFails() { Expression call = Expression.Call(null, typeof(Compiler_Tests).GetMethod("ComputeDynamicDelegate", BindingFlags.Static | BindingFlags.Public), new Expression[] { }); - Assert.Throws("expression", () => Expression.Invoke(call, null)); + AssertExtensions.Throws("expression", () => Expression.Invoke(call, null)); } public static Delegate ComputeDynamicDelegate() diff --git a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs index 0dd6e9dc84c5..4d730c3070ad 100644 --- a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs +++ b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -384,7 +384,7 @@ public void TypedNoDefaultOrCasesSwitch() { ParameterExpression p = Expression.Parameter(typeof(int)); // A SwitchExpression with neither a defaultBody nor any cases can not be any type except void. - Assert.Throws("defaultBody", () => Expression.Switch(typeof(int), p, null, null)); + AssertExtensions.Throws("defaultBody", () => Expression.Switch(typeof(int), p, null, null)); } private delegate int RefSettingDelegate(ref bool changed); @@ -468,23 +468,23 @@ public void SwitchWithComparison(bool useInterpreter) [Fact] public void NullSwitchValue() { - Assert.Throws("switchValue", () => Expression.Switch(null)); - Assert.Throws("switchValue", () => Expression.Switch(null, Expression.Empty())); - Assert.Throws("switchValue", () => Expression.Switch(null, Expression.Empty(), default(MethodInfo))); - Assert.Throws("switchValue", () => Expression.Switch(null, Expression.Empty(), default(MethodInfo), Enumerable.Empty())); - Assert.Throws("switchValue", () => Expression.Switch(typeof(int), null, Expression.Constant(1), default(MethodInfo))); - Assert.Throws("switchValue", () => Expression.Switch(typeof(int), null, Expression.Constant(1), default(MethodInfo), Enumerable.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(null)); + AssertExtensions.Throws("switchValue", () => Expression.Switch(null, Expression.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(null, Expression.Empty(), default(MethodInfo))); + AssertExtensions.Throws("switchValue", () => Expression.Switch(null, Expression.Empty(), default(MethodInfo), Enumerable.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(typeof(int), null, Expression.Constant(1), default(MethodInfo))); + AssertExtensions.Throws("switchValue", () => Expression.Switch(typeof(int), null, Expression.Constant(1), default(MethodInfo), Enumerable.Empty())); } [Fact] public void VoidSwitchValue() { - Assert.Throws("switchValue", () => Expression.Switch(Expression.Empty())); - Assert.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty())); - Assert.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty(), default(MethodInfo))); - Assert.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty(), default(MethodInfo), Enumerable.Empty())); - Assert.Throws("switchValue", () => Expression.Switch(typeof(int), Expression.Empty(), Expression.Constant(1), default(MethodInfo))); - Assert.Throws("switchValue", () => Expression.Switch(typeof(int), Expression.Empty(), Expression.Constant(1), default(MethodInfo), Enumerable.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(Expression.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty(), default(MethodInfo))); + AssertExtensions.Throws("switchValue", () => Expression.Switch(Expression.Empty(), Expression.Empty(), default(MethodInfo), Enumerable.Empty())); + AssertExtensions.Throws("switchValue", () => Expression.Switch(typeof(int), Expression.Empty(), Expression.Constant(1), default(MethodInfo))); + AssertExtensions.Throws("switchValue", () => Expression.Switch(typeof(int), Expression.Empty(), Expression.Constant(1), default(MethodInfo), Enumerable.Empty())); } private static IEnumerable ComparisonsWithInvalidParmeterCounts() @@ -502,10 +502,10 @@ private static IEnumerable ComparisonsWithInvalidParmeterCounts() [Theory, MemberData(nameof(ComparisonsWithInvalidParmeterCounts))] public void InvalidComparisonMethodParameterCount(MethodInfo comparison) { - Assert.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparison)); - Assert.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparison, Enumerable.Empty())); - Assert.Throws("comparison", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparison)); - Assert.Throws("comparison", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparison, Enumerable.Empty())); + AssertExtensions.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparison)); + AssertExtensions.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparison, Enumerable.Empty())); + AssertExtensions.Throws("comparison", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparison)); + AssertExtensions.Throws("comparison", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparison, Enumerable.Empty())); } [Fact] @@ -526,8 +526,8 @@ public void ComparisonRightParameterIncorrect() MethodInfo comparer = isLength.GetMethodInfo(); Assert.Throws(null, () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); Assert.Throws(null, () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); - Assert.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); - Assert.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); + AssertExtensions.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); + AssertExtensions.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); } private class GenClass @@ -581,14 +581,14 @@ public void LeftLiftedCall() [Fact] public void CaseTypeMisMatch() { - Assert.Throws("cases", () => + AssertExtensions.Throws("cases", () => Expression.Switch( Expression.Constant(30), Expression.SwitchCase(Expression.Constant(1), Expression.Constant(0)), Expression.SwitchCase(Expression.Constant(2), Expression.Constant("Foo")) ) ); - Assert.Throws("cases", () => + AssertExtensions.Throws("cases", () => Expression.Switch( Expression.Constant(30), Expression.SwitchCase(Expression.Constant(1), Expression.Constant(0), Expression.Constant("Foo")) @@ -602,28 +602,28 @@ public void CaseTypeMisMatch() public void NonBooleanComparer() { MethodInfo comparer = typeof(SwitchTests).GetMethod(nameof(NonBooleanMethod), BindingFlags.Static | BindingFlags.NonPublic); - Assert.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); - Assert.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); - Assert.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); - Assert.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); + AssertExtensions.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); + AssertExtensions.Throws("comparison", () => Expression.Switch(Expression.Constant(0), Expression.Empty(), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); + AssertExtensions.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)))); + AssertExtensions.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant(1), comparer, Enumerable.Repeat(Expression.SwitchCase(Expression.Empty(), Expression.Constant(0)), 1))); } [Fact] public void MismatchingCasesAndType() { - Assert.Throws("cases", () => Expression.Switch(Expression.Constant(2), Expression.SwitchCase(Expression.Constant("Foo"), Expression.Constant(0)), Expression.SwitchCase(Expression.Constant(3), Expression.Constant(9)))); + AssertExtensions.Throws("cases", () => Expression.Switch(Expression.Constant(2), Expression.SwitchCase(Expression.Constant("Foo"), Expression.Constant(0)), Expression.SwitchCase(Expression.Constant(3), Expression.Constant(9)))); } [Fact] public void MismatchingCasesAndExpclitType() { - Assert.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), null, null, Expression.SwitchCase(Expression.Constant("Foo"), Expression.Constant(0)))); + AssertExtensions.Throws("cases", () => Expression.Switch(typeof(int), Expression.Constant(0), null, null, Expression.SwitchCase(Expression.Constant("Foo"), Expression.Constant(0)))); } [Fact] public void MismatchingDefaultAndExpclitType() { - Assert.Throws("defaultBody", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant("Foo"), null)); + AssertExtensions.Throws("defaultBody", () => Expression.Switch(typeof(int), Expression.Constant(0), Expression.Constant("Foo"), null)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -684,8 +684,8 @@ public void SwitchCaseUpdateSameToSame() public void SwitchCaseUpdateNullTestsToSame() { SwitchCase sc = Expression.SwitchCase(Expression.Constant(0), Expression.Constant(1)); - Assert.Throws("testValues", () => sc.Update(null, sc.Body)); - Assert.Throws("body", () => sc.Update(sc.TestValues, null)); + AssertExtensions.Throws("testValues", () => sc.Update(null, sc.Body)); + AssertExtensions.Throws("body", () => sc.Update(sc.TestValues, null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/System.Linq.Expressions.Tests.csproj b/src/System.Linq.Expressions/tests/System.Linq.Expressions.Tests.csproj index d2df8a37fcf4..cb633e46527e 100644 --- a/src/System.Linq.Expressions/tests/System.Linq.Expressions.Tests.csproj +++ b/src/System.Linq.Expressions/tests/System.Linq.Expressions.Tests.csproj @@ -264,6 +264,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Linq.Expressions/tests/TypeBinary/TypeEqual.cs b/src/System.Linq.Expressions/tests/TypeBinary/TypeEqual.cs index 4139b9a3e259..ce99c6f365b3 100644 --- a/src/System.Linq.Expressions/tests/TypeBinary/TypeEqual.cs +++ b/src/System.Linq.Expressions/tests/TypeBinary/TypeEqual.cs @@ -11,14 +11,14 @@ public class TypeEqual : TypeBinaryTests [Fact] public void NullExpression() { - Assert.Throws("expression", () => Expression.TypeEqual(null, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.TypeEqual(null, typeof(int))); } [Fact] public void NullType() { Expression exp = Expression.Constant(0); - Assert.Throws("type", () => Expression.TypeEqual(exp, null)); + AssertExtensions.Throws("type", () => Expression.TypeEqual(exp, null)); } [Fact] @@ -26,7 +26,7 @@ public void TypeByRef() { Expression exp = Expression.Constant(0); Type byRef = typeof(int).MakeByRefType(); - Assert.Throws("type", () => Expression.TypeEqual(exp, byRef)); + AssertExtensions.Throws("type", () => Expression.TypeEqual(exp, byRef)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -44,7 +44,7 @@ public void TypePointer(bool useInterpreter) public void UnreadableExpression() { Expression exp = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.TypeEqual(exp, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.TypeEqual(exp, typeof(int))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/TypeBinary/TypeIs.cs b/src/System.Linq.Expressions/tests/TypeBinary/TypeIs.cs index e6141f138263..adf9d27b854e 100644 --- a/src/System.Linq.Expressions/tests/TypeBinary/TypeIs.cs +++ b/src/System.Linq.Expressions/tests/TypeBinary/TypeIs.cs @@ -11,14 +11,14 @@ public class TypeIs : TypeBinaryTests [Fact] public void NullExpression() { - Assert.Throws("expression", () => Expression.TypeIs(null, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.TypeIs(null, typeof(int))); } [Fact] public void NullType() { Expression exp = Expression.Constant(0); - Assert.Throws("type", () => Expression.TypeIs(exp, null)); + AssertExtensions.Throws("type", () => Expression.TypeIs(exp, null)); } [Fact] @@ -26,7 +26,7 @@ public void TypeByRef() { Expression exp = Expression.Constant(0); Type byRef = typeof(int).MakeByRefType(); - Assert.Throws("type", () => Expression.TypeIs(exp, byRef)); + AssertExtensions.Throws("type", () => Expression.TypeIs(exp, byRef)); } [Theory, ClassData(typeof(CompilationTypes))] @@ -44,7 +44,7 @@ public void TypePointer(bool useInterpreter) public void UnreadableExpression() { Expression exp = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.TypeIs(exp, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.TypeIs(exp, typeof(int))); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostDecrementAssignTests.cs b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostDecrementAssignTests.cs index a67768725d98..18844b86234e 100644 --- a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostDecrementAssignTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostDecrementAssignTests.cs @@ -178,7 +178,7 @@ public void IncorrectMethodParameterCount() { Expression variable = Expression.Variable(typeof(string)); MethodInfo method = typeof(object).GetTypeInfo().GetDeclaredMethod("ReferenceEquals"); - Assert.Throws("method", () => Expression.PostDecrementAssign(variable, method)); + AssertExtensions.Throws("method", () => Expression.PostDecrementAssign(variable, method)); } [Fact] @@ -255,20 +255,20 @@ public void CanReduce() [Fact] public void NullOperand() { - Assert.Throws("expression", () => Expression.PostDecrementAssign(null)); + AssertExtensions.Throws("expression", () => Expression.PostDecrementAssign(null)); } [Fact] public void UnwritableOperand() { - Assert.Throws("expression", () => Expression.PostDecrementAssign(Expression.Constant(1))); + AssertExtensions.Throws("expression", () => Expression.PostDecrementAssign(Expression.Constant(1))); } [Fact] public void UnreadableOperand() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.PostDecrementAssign(value)); + AssertExtensions.Throws("expression", () => Expression.PostDecrementAssign(value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostIncrementAssignTests.cs b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostIncrementAssignTests.cs index 01bd96a016d9..eeb278759485 100644 --- a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostIncrementAssignTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PostIncrementAssignTests.cs @@ -178,7 +178,7 @@ public void IncorrectMethodParameterCount() { Expression variable = Expression.Variable(typeof(string)); MethodInfo method = typeof(object).GetTypeInfo().GetDeclaredMethod("ReferenceEquals"); - Assert.Throws("method", () => Expression.PostIncrementAssign(variable, method)); + AssertExtensions.Throws("method", () => Expression.PostIncrementAssign(variable, method)); } [Fact] @@ -255,20 +255,20 @@ public void CanReduce() [Fact] public void NullOperand() { - Assert.Throws("expression", () => Expression.PostIncrementAssign(null)); + AssertExtensions.Throws("expression", () => Expression.PostIncrementAssign(null)); } [Fact] public void UnwritableOperand() { - Assert.Throws("expression", () => Expression.PostIncrementAssign(Expression.Constant(1))); + AssertExtensions.Throws("expression", () => Expression.PostIncrementAssign(Expression.Constant(1))); } [Fact] public void UnreadableOperand() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.PostIncrementAssign(value)); + AssertExtensions.Throws("expression", () => Expression.PostIncrementAssign(value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreDecrementAssignTests.cs b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreDecrementAssignTests.cs index 6ffb60faa0db..a58c2aa31717 100644 --- a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreDecrementAssignTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreDecrementAssignTests.cs @@ -178,7 +178,7 @@ public void IncorrectMethodParameterCount() { Expression variable = Expression.Variable(typeof(string)); MethodInfo method = typeof(object).GetTypeInfo().GetDeclaredMethod("ReferenceEquals"); - Assert.Throws("method", () => Expression.PreDecrementAssign(variable, method)); + AssertExtensions.Throws("method", () => Expression.PreDecrementAssign(variable, method)); } [Fact] @@ -255,20 +255,20 @@ public void CanReduce() [Fact] public void NullOperand() { - Assert.Throws("expression", () => Expression.PreDecrementAssign(null)); + AssertExtensions.Throws("expression", () => Expression.PreDecrementAssign(null)); } [Fact] public void UnwritableOperand() { - Assert.Throws("expression", () => Expression.PreDecrementAssign(Expression.Constant(1))); + AssertExtensions.Throws("expression", () => Expression.PreDecrementAssign(Expression.Constant(1))); } [Fact] public void UnreadableOperand() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.PreDecrementAssign(value)); + AssertExtensions.Throws("expression", () => Expression.PreDecrementAssign(value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreIncrementAssignTests.cs b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreIncrementAssignTests.cs index a571a80e28ad..185f4fd08e90 100644 --- a/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreIncrementAssignTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/IncDecAssign/PreIncrementAssignTests.cs @@ -178,7 +178,7 @@ public void IncorrectMethodParameterCount() { Expression variable = Expression.Variable(typeof(string)); MethodInfo method = typeof(object).GetTypeInfo().GetDeclaredMethod("ReferenceEquals"); - Assert.Throws("method", () => Expression.PreIncrementAssign(variable, method)); + AssertExtensions.Throws("method", () => Expression.PreIncrementAssign(variable, method)); } [Fact] @@ -255,20 +255,20 @@ public void CanReduce() [Fact] public void NullOperand() { - Assert.Throws("expression", () => Expression.PreIncrementAssign(null)); + AssertExtensions.Throws("expression", () => Expression.PreIncrementAssign(null)); } [Fact] public void UnwritableOperand() { - Assert.Throws("expression", () => Expression.PreIncrementAssign(Expression.Constant(1))); + AssertExtensions.Throws("expression", () => Expression.PreIncrementAssign(Expression.Constant(1))); } [Fact] public void UnreadableOperand() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.PreIncrementAssign(value)); + AssertExtensions.Throws("expression", () => Expression.PreIncrementAssign(value)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/MakeUnaryTests.cs b/src/System.Linq.Expressions/tests/Unary/MakeUnaryTests.cs index 51bfdf3b8a43..deb3c70c0804 100644 --- a/src/System.Linq.Expressions/tests/Unary/MakeUnaryTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/MakeUnaryTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -129,7 +129,7 @@ private class GenericClassWithNonGenericMethod [Theory, MemberData(nameof(NonUnaryExpressionTypes))] public void MakeUnaryExpressionNonUnary(ExpressionType type) { - Assert.Throws("unaryType", () => Expression.MakeUnary(type, null, null)); + AssertExtensions.Throws("unaryType", () => Expression.MakeUnary(type, null, null)); } [Theory, MemberData(nameof(NumericMethodAllowedUnaryTypes))] @@ -138,9 +138,9 @@ public void MethodOfOpenGenericOnNumeric(ExpressionType type) ParameterExpression variable = Expression.Variable(typeof(int)); Type genType = typeof(GenericClassWithNonGenericMethod<>); MethodInfo method = genType.GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); method = genType.MakeGenericType(genType).GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); // Demonstrate does work when closed. method = genType.MakeGenericType(typeof(int)).GetMethod(nameof(GenericClassWithNonGenericMethod.DoIntStuff)); Expression.MakeUnary(type, variable, typeof(int), method); @@ -152,9 +152,9 @@ public void MethodOfOpenGenericOnBoolean(ExpressionType type) ParameterExpression variable = Expression.Variable(typeof(bool)); Type genType = typeof(GenericClassWithNonGenericMethod<>); MethodInfo method = genType.GetMethod(nameof(GenericClassWithNonGenericMethod.DoBooleanStuff)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(bool), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(bool), method)); method = genType.MakeGenericType(genType).GetMethod(nameof(GenericClassWithNonGenericMethod.DoBooleanStuff)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(bool), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(bool), method)); // Demonstrate does work when closed. method = genType.MakeGenericType(typeof(int)).GetMethod(nameof(GenericClassWithNonGenericMethod.DoBooleanStuff)); Expression.MakeUnary(type, variable, typeof(bool), method); @@ -166,9 +166,9 @@ public void MethodOfOpenGenericOnConversion(ExpressionType type) ParameterExpression variable = Expression.Variable(typeof(long)); Type genType = typeof(GenericClassWithNonGenericMethod<>); MethodInfo method = genType.GetMethod(nameof(GenericClassWithNonGenericMethod.CastLongToInt)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); method = genType.MakeGenericType(genType).GetMethod(nameof(GenericClassWithNonGenericMethod.CastLongToInt)); - Assert.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); + AssertExtensions.Throws("method", () => Expression.MakeUnary(type, variable, typeof(int), method)); // Demonstrate does work when closed. method = genType.MakeGenericType(typeof(int)).GetMethod(nameof(GenericClassWithNonGenericMethod.CastLongToInt)); Expression.MakeUnary(type, variable, typeof(int), method); diff --git a/src/System.Linq.Expressions/tests/Unary/UnaryDecrementTests.cs b/src/System.Linq.Expressions/tests/Unary/UnaryDecrementTests.cs index 5596802d85ad..6c507cdd7d8c 100644 --- a/src/System.Linq.Expressions/tests/Unary/UnaryDecrementTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/UnaryDecrementTests.cs @@ -136,14 +136,14 @@ public static void UserDefinedOpDecrementArithmeticType(int operand, int expecte [Fact] public static void NullOperand() { - Assert.Throws("expression", () => Expression.Decrement(null)); + AssertExtensions.Throws("expression", () => Expression.Decrement(null)); } [Fact] public static void UnreadableOperand() { Expression operand = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.Decrement(operand)); + AssertExtensions.Throws("expression", () => Expression.Decrement(operand)); } #endregion diff --git a/src/System.Linq.Expressions/tests/Unary/UnaryIncrementTests.cs b/src/System.Linq.Expressions/tests/Unary/UnaryIncrementTests.cs index 6f8ffdb9539b..a1ea9be072c8 100644 --- a/src/System.Linq.Expressions/tests/Unary/UnaryIncrementTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/UnaryIncrementTests.cs @@ -136,14 +136,14 @@ public static void UserDefinedOpIncrementArithmeticType(int operand, int expecte [Fact] public static void NullOperand() { - Assert.Throws("expression", () => Expression.Decrement(null)); + AssertExtensions.Throws("expression", () => Expression.Decrement(null)); } [Fact] public static void UnreadableOperand() { Expression operand = Expression.Property(null, typeof(Unreadable), nameof(Unreadable.WriteOnly)); - Assert.Throws("expression", () => Expression.Decrement(operand)); + AssertExtensions.Throws("expression", () => Expression.Decrement(operand)); } #endregion diff --git a/src/System.Linq.Expressions/tests/Unary/UnaryQuoteTests.cs b/src/System.Linq.Expressions/tests/Unary/UnaryQuoteTests.cs index e6ee20734fd5..1f4624a34e45 100644 --- a/src/System.Linq.Expressions/tests/Unary/UnaryQuoteTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/UnaryQuoteTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -484,7 +484,7 @@ public void Quote_RuntimeVariables_ClosureAndLocal(bool useInterpreter) [Fact] public void NullLambda() { - Assert.Throws("expression", () => Quote(null)); + AssertExtensions.Throws("expression", () => Quote(null)); } [Fact] @@ -492,7 +492,7 @@ public void QuoteNonLamdba() { Func zero = () => 0; Expression funcConst = Constant(zero); - Assert.Throws("expression", () => Quote(funcConst)); + AssertExtensions.Throws("expression", () => Quote(funcConst)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Unary/UnboxTests.cs b/src/System.Linq.Expressions/tests/Unary/UnboxTests.cs index 1654602030b0..2916af250968 100644 --- a/src/System.Linq.Expressions/tests/Unary/UnboxTests.cs +++ b/src/System.Linq.Expressions/tests/Unary/UnboxTests.cs @@ -128,14 +128,14 @@ public void NullNullable(Type type, bool useInterpreter) public void CannotUnboxToNonInterfaceExceptObject() { Expression value = Expression.Constant(0); - Assert.Throws("expression", () => Expression.Unbox(value, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.Unbox(value, typeof(int))); } [Fact] public void CannotUnboxReferenceType() { Expression value = Expression.Constant("", typeof(IComparable)); - Assert.Throws("type", () => Expression.Unbox(value, typeof(string))); + AssertExtensions.Throws("type", () => Expression.Unbox(value, typeof(string))); } private static class Unreadable @@ -150,20 +150,20 @@ public static object WriteOnly public void CannotUnboxUnreadable() { Expression value = Expression.Property(null, typeof(Unreadable), "WriteOnly"); - Assert.Throws("expression", () => Expression.Unbox(value, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.Unbox(value, typeof(int))); } [Fact] public void ExpressionNull() { - Assert.Throws("expression", () => Expression.Unbox(null, typeof(int))); + AssertExtensions.Throws("expression", () => Expression.Unbox(null, typeof(int))); } [Fact] public void TypeNull() { Expression value = Expression.Constant(0, typeof(object)); - Assert.Throws("type", () => Expression.Unbox(value, null)); + AssertExtensions.Throws("type", () => Expression.Unbox(value, null)); } [Theory] @@ -188,14 +188,14 @@ public void CannotReduce() public static void PointerType() { Type pointerType = typeof(int).MakePointerType(); - Assert.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), pointerType)); + AssertExtensions.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), pointerType)); } [Fact] public static void ByRefType() { Type byRefType = typeof(int).MakeByRefType(); - Assert.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), byRefType)); + AssertExtensions.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), byRefType)); } private struct GenericValueType @@ -207,7 +207,7 @@ private struct GenericValueType public static void GenericType() { Type genType = typeof(GenericValueType<>); - Assert.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), genType)); + AssertExtensions.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), genType)); } @@ -215,7 +215,7 @@ public static void GenericType() public static void GenericTypeParameters() { Type genType = typeof(GenericValueType<>); - Assert.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), genType.MakeGenericType(genType))); + AssertExtensions.Throws("type", () => Expression.Unbox(Expression.Constant(new object()), genType.MakeGenericType(genType))); } } } diff --git a/src/System.Linq.Expressions/tests/Variables/ParameterTests.cs b/src/System.Linq.Expressions/tests/Variables/ParameterTests.cs index b0628bbeadf2..a55ffdf8c0e7 100644 --- a/src/System.Linq.Expressions/tests/Variables/ParameterTests.cs +++ b/src/System.Linq.Expressions/tests/Variables/ParameterTests.cs @@ -40,23 +40,23 @@ public void NameNeedNotBeCSharpValid() [Fact] public void ParameterCannotBeTypeVoid() { - Assert.Throws("type", () => Expression.Parameter(typeof(void))); - Assert.Throws("type", () => Expression.Parameter(typeof(void), "var")); + AssertExtensions.Throws("type", () => Expression.Parameter(typeof(void))); + AssertExtensions.Throws("type", () => Expression.Parameter(typeof(void), "var")); } [Theory] [ClassData(typeof(InvalidTypesData))] public void OpenGenericType_ThrowsArgumentException(Type type) { - Assert.Throws("type", () => Expression.Parameter(type)); - Assert.Throws("type", () => Expression.Parameter(type, "name")); + AssertExtensions.Throws("type", () => Expression.Parameter(type)); + AssertExtensions.Throws("type", () => Expression.Parameter(type, "name")); } [Fact] public void NullType() { - Assert.Throws("type", () => Expression.Parameter(null)); - Assert.Throws("type", () => Expression.Parameter(null, "var")); + AssertExtensions.Throws("type", () => Expression.Parameter(null)); + AssertExtensions.Throws("type", () => Expression.Parameter(null, "var")); } [Theory] @@ -305,8 +305,8 @@ public void CannotReduce() [Fact] public void CannotBePointerType() { - Assert.Throws("type", () => Expression.Parameter(typeof(int*))); - Assert.Throws("type", () => Expression.Parameter(typeof(int*), "pointer")); + AssertExtensions.Throws("type", () => Expression.Parameter(typeof(int*))); + AssertExtensions.Throws("type", () => Expression.Parameter(typeof(int*), "pointer")); } [Theory] diff --git a/src/System.Linq.Expressions/tests/Variables/RuntimeVariablesTests.cs b/src/System.Linq.Expressions/tests/Variables/RuntimeVariablesTests.cs index 740101527e4b..18decd40e9fb 100644 --- a/src/System.Linq.Expressions/tests/Variables/RuntimeVariablesTests.cs +++ b/src/System.Linq.Expressions/tests/Variables/RuntimeVariablesTests.cs @@ -130,14 +130,14 @@ public void MixedScope(bool useInterpreter) [Fact] public void NullVariableList() { - Assert.Throws("variables", () => Expression.RuntimeVariables(default(ParameterExpression[]))); - Assert.Throws("variables", () => Expression.RuntimeVariables(default(IEnumerable))); + AssertExtensions.Throws("variables", () => Expression.RuntimeVariables(default(ParameterExpression[]))); + AssertExtensions.Throws("variables", () => Expression.RuntimeVariables(default(IEnumerable))); } [Fact] public void NullVariableInList() { - Assert.Throws("variables[1]", () => Expression.RuntimeVariables(Expression.Variable(typeof(int)), null)); + AssertExtensions.Throws("variables[1]", () => Expression.RuntimeVariables(Expression.Variable(typeof(int)), null)); } [Theory] @@ -188,7 +188,7 @@ public void UpdateDoesntRepeatEnumeration() public void UpdateNullThrows() { RuntimeVariablesExpression varExp = Expression.RuntimeVariables(Enumerable.Repeat(Expression.Variable(typeof(RuntimeVariablesTests)), 0)); - Assert.Throws("variables", () => varExp.Update(null)); + AssertExtensions.Throws("variables", () => varExp.Update(null)); } [Fact] diff --git a/src/System.Linq.Expressions/tests/Variables/VariableTests.cs b/src/System.Linq.Expressions/tests/Variables/VariableTests.cs index d68f0b32e8f5..4f84ea2521ba 100644 --- a/src/System.Linq.Expressions/tests/Variables/VariableTests.cs +++ b/src/System.Linq.Expressions/tests/Variables/VariableTests.cs @@ -38,23 +38,23 @@ public void NameNeedNotBeCSharpValid() [Fact] public void VariableCannotBeTypeVoid() { - Assert.Throws("type", () => Expression.Variable(typeof(void))); - Assert.Throws("type", () => Expression.Variable(typeof(void), "var")); + AssertExtensions.Throws("type", () => Expression.Variable(typeof(void))); + AssertExtensions.Throws("type", () => Expression.Variable(typeof(void), "var")); } [Fact] public void NullType() { - Assert.Throws("type", () => Expression.Variable(null)); - Assert.Throws("type", () => Expression.Variable(null, "var")); + AssertExtensions.Throws("type", () => Expression.Variable(null)); + AssertExtensions.Throws("type", () => Expression.Variable(null, "var")); } [Theory] [MemberData(nameof(ByRefTypeData))] public void VariableCannotBeByRef(Type type) { - Assert.Throws("type", () => Expression.Variable(type)); - Assert.Throws("type", () => Expression.Variable(type, "var")); + AssertExtensions.Throws("type", () => Expression.Variable(type)); + AssertExtensions.Throws("type", () => Expression.Variable(type, "var")); } [Theory] @@ -103,15 +103,15 @@ public void CannotReduce() [ClassData(typeof(InvalidTypesData))] public void OpenGenericType_ThrowsArgumentException(Type type) { - Assert.Throws("type", () => Expression.Variable(type)); - Assert.Throws("type", () => Expression.Variable(type, "name")); + AssertExtensions.Throws("type", () => Expression.Variable(type)); + AssertExtensions.Throws("type", () => Expression.Variable(type, "name")); } [Fact] public void CannotBePointerType() { - Assert.Throws("type", () => Expression.Variable(typeof(int*))); - Assert.Throws("type", () => Expression.Variable(typeof(int*), "pointer")); + AssertExtensions.Throws("type", () => Expression.Variable(typeof(int*))); + AssertExtensions.Throws("type", () => Expression.Variable(typeof(int*), "pointer")); } } } diff --git a/src/System.Linq.Expressions/tests/Visitor/VisitorTests.cs b/src/System.Linq.Expressions/tests/Visitor/VisitorTests.cs index 375020fa992a..398ecf63b568 100644 --- a/src/System.Linq.Expressions/tests/Visitor/VisitorTests.cs +++ b/src/System.Linq.Expressions/tests/Visitor/VisitorTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -167,19 +167,19 @@ public void VisitExpressionDefaultsCallAccept() [Fact] public void VisitNullCollection() { - Assert.Throws("nodes", () => new DefaultVisitor().Visit(default(ReadOnlyCollection))); + AssertExtensions.Throws("nodes", () => new DefaultVisitor().Visit(default(ReadOnlyCollection))); } [Fact] public void VisitNullCollectionWithVisitorFunction() { - Assert.Throws("nodes", () => ExpressionVisitor.Visit(null, (Expression i) => i)); + AssertExtensions.Throws("nodes", () => ExpressionVisitor.Visit(null, (Expression i) => i)); } [Fact] public void VisitCollectionVisitorWithNullFunction() { - Assert.Throws("elementVisitor", () => ExpressionVisitor.Visit(new List { Expression.Empty() }.AsReadOnly(), null)); + AssertExtensions.Throws("elementVisitor", () => ExpressionVisitor.Visit(new List { Expression.Empty() }.AsReadOnly(), null)); } [Fact] @@ -191,7 +191,7 @@ public void VisitAndConvertNullNode() [Fact] public void VisitAndConvertNullCollection() { - Assert.Throws("nodes", () => new DefaultVisitor().VisitAndConvert(default(ReadOnlyCollection), "")); + AssertExtensions.Throws("nodes", () => new DefaultVisitor().VisitAndConvert(default(ReadOnlyCollection), "")); } [Fact] diff --git a/src/System.Linq.Parallel/tests/DegreeOfParallelismTests.cs b/src/System.Linq.Parallel/tests/DegreeOfParallelismTests.cs index c1ecb59b697d..5615d351d714 100644 --- a/src/System.Linq.Parallel/tests/DegreeOfParallelismTests.cs +++ b/src/System.Linq.Parallel/tests/DegreeOfParallelismTests.cs @@ -147,7 +147,7 @@ public static void DegreeOfParallelism_Multiple() [Fact] public static void DegreeOfParallelism_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).WithDegreeOfParallelism(2)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).WithDegreeOfParallelism(2)); } } } diff --git a/src/System.Linq.Parallel/tests/ExchangeTests.cs b/src/System.Linq.Parallel/tests/ExchangeTests.cs index c0f5f8ca2aa1..bc99fed4fbbe 100644 --- a/src/System.Linq.Parallel/tests/ExchangeTests.cs +++ b/src/System.Linq.Parallel/tests/ExchangeTests.cs @@ -187,7 +187,7 @@ public static void WithMergeOptions_Multiple(ParallelMergeOptions first, Paralle [Fact] public static void Merge_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).WithMergeOptions(ParallelMergeOptions.AutoBuffered)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).WithMergeOptions(ParallelMergeOptions.AutoBuffered)); } // The plinq chunk partitioner takes an IEnumerator over the source, and disposes the diff --git a/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs b/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs index b36ca92e5d77..475399b9ba8d 100644 --- a/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs +++ b/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs @@ -17,14 +17,14 @@ public static class ParallelEnumerableTests [Fact] public static void NullQuery() { - Assert.Throws("source", () => ((IEnumerable)null).AsParallel()); - Assert.Throws("source", () => ((IEnumerable)null).AsParallel()); - Assert.Throws("source", () => ((Partitioner)null).AsParallel()); - Assert.Throws("source", () => ((int[])null).AsParallel()); - - Assert.Throws("source", () => ParallelEnumerable.AsOrdered((ParallelQuery)null)); - Assert.Throws("source", () => ParallelEnumerable.AsOrdered((ParallelQuery)null)); - Assert.Throws("source", () => ParallelEnumerable.AsUnordered((ParallelQuery)null)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).AsParallel()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).AsParallel()); + AssertExtensions.Throws("source", () => ((Partitioner)null).AsParallel()); + AssertExtensions.Throws("source", () => ((int[])null).AsParallel()); + + AssertExtensions.Throws("source", () => ParallelEnumerable.AsOrdered((ParallelQuery)null)); + AssertExtensions.Throws("source", () => ParallelEnumerable.AsOrdered((ParallelQuery)null)); + AssertExtensions.Throws("source", () => ParallelEnumerable.AsUnordered((ParallelQuery)null)); } // diff --git a/src/System.Linq.Parallel/tests/PlinqModesTests.cs b/src/System.Linq.Parallel/tests/PlinqModesTests.cs index bf9bafdd68da..0cd97f154d35 100644 --- a/src/System.Linq.Parallel/tests/PlinqModesTests.cs +++ b/src/System.Linq.Parallel/tests/PlinqModesTests.cs @@ -167,7 +167,7 @@ public static void WithExecutionMode_Multiple(ParallelExecutionMode first, Paral [Fact] public static void WithExecutionMode_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).WithExecutionMode(ParallelExecutionMode.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).WithExecutionMode(ParallelExecutionMode.Default)); } /// Tracks all of the Tasks from which AddCurrent is called. diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AggregateTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AggregateTests.cs index a033146c3943..64c87799f5f1 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AggregateTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AggregateTests.cs @@ -343,26 +343,26 @@ public static void Aggregate_AggregateException() [Fact] public static void Aggregate_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Aggregate((i, j) => i)); - Assert.Throws("func", () => UnorderedSources.Default(1).Aggregate(null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i)); - Assert.Throws("func", () => UnorderedSources.Default(1).Aggregate(0, null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i, i => i)); - Assert.Throws("func", () => UnorderedSources.Default(1).Aggregate(0, null, i => i)); - Assert.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i, (i, j) => i, i => i)); - Assert.Throws("updateAccumulatorFunc", () => UnorderedSources.Default(1).Aggregate(0, null, (i, j) => i, i => i)); - Assert.Throws("combineAccumulatorsFunc", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, null, i => i)); - Assert.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, (i, j) => i, null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Aggregate(() => 0, (i, j) => i, (i, j) => i, i => i)); - Assert.Throws("seedFactory", () => UnorderedSources.Default(1).Aggregate(null, (i, j) => i, (i, j) => i, i => i)); - Assert.Throws("updateAccumulatorFunc", () => UnorderedSources.Default(1).Aggregate(() => 0, null, (i, j) => i, i => i)); - Assert.Throws("combineAccumulatorsFunc", () => UnorderedSources.Default(1).Aggregate(() => 0, (i, j) => i, null, i => i)); - Assert.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(() => 0, (i, j) => i, (i, j) => i, null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Aggregate((i, j) => i)); + AssertExtensions.Throws("func", () => UnorderedSources.Default(1).Aggregate(null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i)); + AssertExtensions.Throws("func", () => UnorderedSources.Default(1).Aggregate(0, null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i, i => i)); + AssertExtensions.Throws("func", () => UnorderedSources.Default(1).Aggregate(0, null, i => i)); + AssertExtensions.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Aggregate(0, (i, j) => i, (i, j) => i, i => i)); + AssertExtensions.Throws("updateAccumulatorFunc", () => UnorderedSources.Default(1).Aggregate(0, null, (i, j) => i, i => i)); + AssertExtensions.Throws("combineAccumulatorsFunc", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, null, i => i)); + AssertExtensions.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(0, (i, j) => i, (i, j) => i, null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Aggregate(() => 0, (i, j) => i, (i, j) => i, i => i)); + AssertExtensions.Throws("seedFactory", () => UnorderedSources.Default(1).Aggregate(null, (i, j) => i, (i, j) => i, i => i)); + AssertExtensions.Throws("updateAccumulatorFunc", () => UnorderedSources.Default(1).Aggregate(() => 0, null, (i, j) => i, i => i)); + AssertExtensions.Throws("combineAccumulatorsFunc", () => UnorderedSources.Default(1).Aggregate(() => 0, (i, j) => i, null, i => i)); + AssertExtensions.Throws("resultSelector", () => UnorderedSources.Default(1).Aggregate(() => 0, (i, j) => i, (i, j) => i, null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AllTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AllTests.cs index bf4654b3cb80..512534cfdbc3 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AllTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AllTests.cs @@ -117,8 +117,8 @@ public static void All_AggregateException() [Fact] public static void All_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).All(x => x)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().All(null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).All(x => x)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().All(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AnyTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AnyTests.cs index d29f3f28a2fc..da55ef3d7796 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AnyTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AnyTests.cs @@ -146,8 +146,8 @@ public static void Any_AggregateException() [Fact] public static void Any_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Any(x => x)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Any(null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Any(x => x)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Any(null)); } private static IEnumerable InfiniteEnumerable() diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AsEnumerableTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AsEnumerableTests.cs index 9de8f4037576..3ce8ba16390d 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AsEnumerableTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AsEnumerableTests.cs @@ -84,7 +84,7 @@ public static void AsEnumerable_LinqBinding(Labeled> labeled, [Fact] public static void AsEnumerable_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).AsEnumerable()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).AsEnumerable()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AsSequentialTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AsSequentialTests.cs index 674e98fa2c13..ef2741156bff 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AsSequentialTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AsSequentialTests.cs @@ -84,7 +84,7 @@ public static void AsSequential_LinqBinding(Labeled> labeled, [Fact] public static void AsSequential_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).AsSequential()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).AsSequential()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/AverageTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/AverageTests.cs index 79cfdf549b0b..69bb22f126a9 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/AverageTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/AverageTests.cs @@ -324,30 +324,30 @@ public static void Average_AggregateException() [Fact] public static void Average_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Average((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Average((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Average((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Average((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Average((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Average((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Average((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Average((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Average((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Average()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Average((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Average((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Average((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Average((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Average((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Average()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Average((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/CastTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/CastTests.cs index 1f338590577b..d69bbf73b13d 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/CastTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/CastTests.cs @@ -146,7 +146,7 @@ public static void Cast_Assignable_InvalidCastException(Labeled("source", () => ((ParallelQuery)null).Cast()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Cast()); } private class Castable diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ConcatTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ConcatTests.cs index 387cdcdf835d..5d4acc118a5d 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ConcatTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ConcatTests.cs @@ -138,8 +138,8 @@ public static void Concat_NoDuplicateSettings() [Fact] public static void Concat_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).Concat(ParallelEnumerable.Range(0, 1))); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Concat(null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Concat(ParallelEnumerable.Range(0, 1))); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Concat(null)); } [Fact] diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ContainsTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ContainsTests.cs index 0e0c38b4338a..0e190c7a9146 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ContainsTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ContainsTests.cs @@ -102,8 +102,8 @@ public static void Contains_AggregateException() [Fact] public static void Contains_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Contains(false)); - Assert.Throws("source", () => ((ParallelQuery)null).Contains(false, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Contains(false)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Contains(false, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/CountLongCountTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/CountLongCountTests.cs index 3489d7007e86..452f1f72f0bb 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/CountLongCountTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/CountLongCountTests.cs @@ -159,13 +159,13 @@ public static void CountLongCount_AggregateException() [Fact] public static void CountLongCount_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Count()); - Assert.Throws("source", () => ((ParallelQuery)null).Count(x => x)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Count(null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Count()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Count(x => x)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Count(null)); - Assert.Throws("source", () => ((ParallelQuery)null).LongCount()); - Assert.Throws("source", () => ((ParallelQuery)null).LongCount(x => x)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().LongCount(null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).LongCount()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).LongCount(x => x)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().LongCount(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/DefaultIfEmptyTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/DefaultIfEmptyTests.cs index f705a9570d92..19d0b3b9f1b6 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/DefaultIfEmptyTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/DefaultIfEmptyTests.cs @@ -141,7 +141,7 @@ public static void DefaultIfEmpty_Empty_NotPipelined(Labeled [Fact] public static void DefaultIfEmpty_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).DefaultIfEmpty()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).DefaultIfEmpty()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/DistinctTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/DistinctTests.cs index faf8479e600a..5aa9142f2c0f 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/DistinctTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/DistinctTests.cs @@ -157,7 +157,7 @@ public static void Distinct_SourceMultiple_Longrunning(Labeled("source", () => ((ParallelQuery)null).Distinct()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Distinct()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ElementAtElementAtOrDefaultTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ElementAtElementAtOrDefaultTests.cs index 34d2391d0d07..5608ca8531ca 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ElementAtElementAtOrDefaultTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ElementAtElementAtOrDefaultTests.cs @@ -114,8 +114,8 @@ public static void ElementAt_OperationCanceledException_PreCanceled() [Fact] public static void ElementAt_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ElementAt(0)); - Assert.Throws("source", () => ((ParallelQuery)null).ElementAtOrDefault(0)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ElementAt(0)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ElementAtOrDefault(0)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ExceptTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ExceptTests.cs index 61e5446ae600..c5eba034bdf8 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ExceptTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ExceptTests.cs @@ -296,11 +296,11 @@ public static void Except_NoDuplicateSettings() [Fact] public static void Except_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).Except(ParallelEnumerable.Range(0, 1))); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Except(null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Except(ParallelEnumerable.Range(0, 1))); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Except(null)); - Assert.Throws("first", () => ((ParallelQuery)null).Except(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Except(null, EqualityComparer.Default)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Except(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Except(null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/FirstFirstOrDefaultTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/FirstFirstOrDefaultTests.cs index 2b457fbdfb49..637ab8b8bddb 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/FirstFirstOrDefaultTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/FirstFirstOrDefaultTests.cs @@ -166,11 +166,11 @@ public static void First_AggregateException() [Fact] public static void First_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).First()); - Assert.Throws("source", () => ((ParallelQuery)null).FirstOrDefault()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).First()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).FirstOrDefault()); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().First(null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().FirstOrDefault(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().First(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().FirstOrDefault(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ForAllTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ForAllTests.cs index 6d487c80ef6a..0bb1f73cfc63 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ForAllTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ForAllTests.cs @@ -55,8 +55,8 @@ public static void ForAll_AggregateException() [Fact] public static void ForAll_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ForAll(x => { })); - Assert.Throws("action", () => ParallelEnumerable.Range(0, 1).ForAll(null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ForAll(x => { })); + AssertExtensions.Throws("action", () => ParallelEnumerable.Range(0, 1).ForAll(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/GroupByTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/GroupByTests.cs index f38129f4d89a..721887a40c82 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/GroupByTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/GroupByTests.cs @@ -460,33 +460,33 @@ public static void GroupBy_ElementSelector_ResultSelector_Longrunning(Labeled("source", () => ((ParallelQuery)null).GroupBy(i => i)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, EqualityComparer.Default)); - - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, EqualityComparer.Default)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, EqualityComparer.Default)); - - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, (i, j) => i)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, (i, j) => i)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func, int>)null)); - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func, int>)null, EqualityComparer.Default)); - - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, (i, j) => i)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, (i, j) => i)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, (i, j) => i)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, i => i, (Func, int>)null)); - Assert.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, i => i, (Func, int>)null, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, EqualityComparer.Default)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, EqualityComparer.Default)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, (i, j) => i)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, (i, j) => i)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func, int>)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func, int>)null, EqualityComparer.Default)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, (i, j) => i)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, (i, j) => i)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, (i, j) => i)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, i => i, (Func, int>)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).GroupBy(i => i, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).GroupBy((Func)null, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupBy(i => i, i => i, (Func, int>)null, EqualityComparer.Default)); } [Fact] diff --git a/src/System.Linq.Parallel/tests/QueryOperators/GroupJoinTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/GroupJoinTests.cs index c72dfd307278..ca02958fbd59 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/GroupJoinTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/GroupJoinTests.cs @@ -329,16 +329,16 @@ public static void GroupJoin_NoDuplicateSettings() [Fact] public static void GroupJoin_ArgumentNullException() { - Assert.Throws("outer", () => ((ParallelQuery)null).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i)); - Assert.Throws("inner", () => ParallelEnumerable.Range(0, 1).GroupJoin((ParallelQuery)null, i => i, i => i, (i, j) => i)); - Assert.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i)); - Assert.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func, int>)null)); - Assert.Throws("outer", () => ((ParallelQuery)null).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("inner", () => ParallelEnumerable.Range(0, 1).GroupJoin((ParallelQuery)null, i => i, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func, int>)null, EqualityComparer.Default)); + AssertExtensions.Throws("outer", () => ((ParallelQuery)null).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i)); + AssertExtensions.Throws("inner", () => ParallelEnumerable.Range(0, 1).GroupJoin((ParallelQuery)null, i => i, i => i, (i, j) => i)); + AssertExtensions.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i)); + AssertExtensions.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func, int>)null)); + AssertExtensions.Throws("outer", () => ((ParallelQuery)null).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("inner", () => ParallelEnumerable.Range(0, 1).GroupJoin((ParallelQuery)null, i => i, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).GroupJoin(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func, int>)null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/IntersectTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/IntersectTests.cs index 012ea4030ef5..2dfed81b65cb 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/IntersectTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/IntersectTests.cs @@ -289,11 +289,11 @@ public static void Intersect_NoDuplicateSettings() [Fact] public static void Intersect_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).Intersect(ParallelEnumerable.Range(0, 1))); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Intersect(null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Intersect(ParallelEnumerable.Range(0, 1))); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Intersect(null)); - Assert.Throws("first", () => ((ParallelQuery)null).Intersect(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Intersect(null, EqualityComparer.Default)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Intersect(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Intersect(null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/JoinTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/JoinTests.cs index 67981b795cce..002fd4328978 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/JoinTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/JoinTests.cs @@ -308,16 +308,16 @@ public static void Join_NoDuplicateSettings() [Fact] public static void Join_ArgumentNullException() { - Assert.Throws("outer", () => ((ParallelQuery)null).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i)); - Assert.Throws("inner", () => ParallelEnumerable.Range(0, 1).Join((ParallelQuery)null, i => i, i => i, (i, j) => i)); - Assert.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i)); - Assert.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func)null)); - Assert.Throws("outer", () => ((ParallelQuery)null).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("inner", () => ParallelEnumerable.Range(0, 1).Join((ParallelQuery)null, i => i, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("outer", () => ((ParallelQuery)null).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i)); + AssertExtensions.Throws("inner", () => ParallelEnumerable.Range(0, 1).Join((ParallelQuery)null, i => i, i => i, (i, j) => i)); + AssertExtensions.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i)); + AssertExtensions.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func)null)); + AssertExtensions.Throws("outer", () => ((ParallelQuery)null).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("inner", () => ParallelEnumerable.Range(0, 1).Join((ParallelQuery)null, i => i, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("outerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), (Func)null, i => i, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("innerKeySelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, (Func)null, (i, j) => i, EqualityComparer.Default)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Join(ParallelEnumerable.Range(0, 1), i => i, i => i, (Func)null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/LastLastOrDefaultTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/LastLastOrDefaultTests.cs index 6d8a941ad67f..a48125b204e6 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/LastLastOrDefaultTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/LastLastOrDefaultTests.cs @@ -166,11 +166,11 @@ public static void Last_AggregateException() [Fact] public static void Last_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Last()); - Assert.Throws("source", () => ((ParallelQuery)null).LastOrDefault()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Last()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).LastOrDefault()); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Last(null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().LastOrDefault(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Last(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().LastOrDefault(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/MaxTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/MaxTests.cs index e3b898e2b5e7..034baf33676b 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/MaxTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/MaxTests.cs @@ -414,35 +414,35 @@ public static void Max_AggregateException_NotComparable() [Fact] public static void Max_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Range(0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Max((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Max((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Max((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Max((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Max((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Max((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Max()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(new object(), 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Range(0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Max((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Max((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Max((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Max((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Max((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Max((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Max()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(new object(), 1).Max((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/MinTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/MinTests.cs index 1276e0b7fe58..98cfd3b15c2a 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/MinTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/MinTests.cs @@ -447,35 +447,35 @@ public static void Min_AggregateException_NotComparable() [Fact] public static void Min_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Range(0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Min((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Min((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Min((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Min((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Min((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Min((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Min()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(new object(), 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Range(0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Min((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Min((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Min((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Min((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Min((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Min((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Min()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(new object(), 1).Min((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/OfTypeTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/OfTypeTests.cs index 8f0332c143e9..a831bf7adf58 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/OfTypeTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/OfTypeTests.cs @@ -275,7 +275,7 @@ public static void OfType_SomeNull_Longrunning(Labeled> label [Fact] public static void OfType_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).OfType()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).OfType()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs index 180217675a50..c1b61be779b1 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs @@ -484,19 +484,19 @@ public static void OrderByDescending_NotPipelined_NotComparable_Comparator(Label [Fact] public static void OrderBy_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).OrderBy(x => x)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).OrderBy(x => x, Comparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy((Func)null, Comparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).OrderBy(x => x)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).OrderBy(x => x, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy((Func)null, Comparer.Default)); } [Fact] public static void OrderByDescending_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).OrderByDescending(x => x)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderByDescending((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).OrderByDescending(x => x, Comparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderByDescending((Func)null, Comparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).OrderByDescending(x => x)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderByDescending((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).OrderByDescending(x => x, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderByDescending((Func)null, Comparer.Default)); } // Heavily exercises OrderBy in the face of user-delegate exceptions. @@ -1188,19 +1188,19 @@ public static void ThenByDescending_NotPipelined_NotComparable_Comparator(Labele [Fact] public static void ThenBy_ArgumentNullException() { - Assert.Throws("source", () => ((OrderedParallelQuery)null).ThenBy(x => x)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenBy((Func)null)); - Assert.Throws("source", () => ((OrderedParallelQuery)null).ThenBy(x => x, Comparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenBy((Func)null, Comparer.Default)); + AssertExtensions.Throws("source", () => ((OrderedParallelQuery)null).ThenBy(x => x)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenBy((Func)null)); + AssertExtensions.Throws("source", () => ((OrderedParallelQuery)null).ThenBy(x => x, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenBy((Func)null, Comparer.Default)); } [Fact] public static void ThenByDescending_ArgumentNullException() { - Assert.Throws("source", () => ((OrderedParallelQuery)null).ThenByDescending(x => x)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenByDescending((Func)null)); - Assert.Throws("source", () => ((OrderedParallelQuery)null).ThenByDescending(x => x, Comparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenByDescending((Func)null, Comparer.Default)); + AssertExtensions.Throws("source", () => ((OrderedParallelQuery)null).ThenByDescending(x => x)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenByDescending((Func)null)); + AssertExtensions.Throws("source", () => ((OrderedParallelQuery)null).ThenByDescending(x => x, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Range(0, 1).OrderBy(x => 0).ThenByDescending((Func)null, Comparer.Default)); } // diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ReverseTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ReverseTests.cs index 1cf8218cd14e..a77080c1816e 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ReverseTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ReverseTests.cs @@ -91,7 +91,7 @@ public static void Reverse_NotPipelined_Longrunning(Labeled> [Fact] public static void Reverse_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Reverse()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Reverse()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SelectSelectManyTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SelectSelectManyTests.cs index 9a45fa4c8eec..e0e7f876835b 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SelectSelectManyTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SelectSelectManyTests.cs @@ -201,10 +201,10 @@ public static void Select_Indexed_NotPipelined_Longrunning(Labeled("source", () => ((ParallelQuery)null).Select(x => x)); - Assert.Throws("source", () => ((ParallelQuery)null).Select((x, index) => x)); - Assert.Throws("selector", () => ParallelEnumerable.Empty().Select((Func)null)); - Assert.Throws("selector", () => ParallelEnumerable.Empty().Select((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Select(x => x)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Select((x, index) => x)); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Empty().Select((Func)null)); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Empty().Select((Func)null)); } [Theory] @@ -643,17 +643,17 @@ public static void SelectMany_Indexed_ResultSelector_NotPipelined_Longrunning(La [Fact] public static void SelectMany_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).SelectMany(x => new[] { x })); - Assert.Throws("source", () => ((ParallelQuery)null).SelectMany((x, index) => new[] { x })); - Assert.Throws("selector", () => ParallelEnumerable.Empty().SelectMany((Func>)null)); - Assert.Throws("selector", () => ParallelEnumerable.Empty().SelectMany((Func>)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).SelectMany(x => new[] { x }, (x, y) => x)); - Assert.Throws("source", () => ((ParallelQuery)null).SelectMany((x, index) => new[] { x }, (x, y) => x)); - Assert.Throws("collectionSelector", () => ParallelEnumerable.Empty().SelectMany((Func>)null, (x, y) => x)); - Assert.Throws("collectionSelector", () => ParallelEnumerable.Empty().SelectMany((Func>)null, (x, y) => x)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Empty().SelectMany(x => new[] { x }, (Func)null)); - Assert.Throws("resultSelector", () => ParallelEnumerable.Empty().SelectMany((x, index) => new[] { x }, (Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SelectMany(x => new[] { x })); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SelectMany((x, index) => new[] { x })); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Empty().SelectMany((Func>)null)); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Empty().SelectMany((Func>)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SelectMany(x => new[] { x }, (x, y) => x)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SelectMany((x, index) => new[] { x }, (x, y) => x)); + AssertExtensions.Throws("collectionSelector", () => ParallelEnumerable.Empty().SelectMany((Func>)null, (x, y) => x)); + AssertExtensions.Throws("collectionSelector", () => ParallelEnumerable.Empty().SelectMany((Func>)null, (x, y) => x)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Empty().SelectMany(x => new[] { x }, (Func)null)); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Empty().SelectMany((x, index) => new[] { x }, (Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs index 5c553ab36410..c9e2b29ac0d0 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SequenceEqualTests.cs @@ -189,10 +189,10 @@ public static void SequenceEqual_NoDuplicateSettings() [Fact] public static void SequenceEqual_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).SequenceEqual(ParallelEnumerable.Range(0, 1))); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).SequenceEqual((ParallelQuery)null)); - Assert.Throws("first", () => ((ParallelQuery)null).SequenceEqual(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).SequenceEqual((ParallelQuery)null, EqualityComparer.Default)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).SequenceEqual(ParallelEnumerable.Range(0, 1))); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).SequenceEqual((ParallelQuery)null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).SequenceEqual(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).SequenceEqual((ParallelQuery)null, EqualityComparer.Default)); } [Theory] diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SingleSingleOrDefaultTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SingleSingleOrDefaultTests.cs index dca3d93a8ec4..e393f4f01729 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SingleSingleOrDefaultTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SingleSingleOrDefaultTests.cs @@ -204,11 +204,11 @@ public static void Single_AggregateException() [Fact] public static void Single_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Single()); - Assert.Throws("source", () => ((ParallelQuery)null).SingleOrDefault()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Single()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SingleOrDefault()); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Single(null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().SingleOrDefault(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Single(null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().SingleOrDefault(null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SkipSkipWhileTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SkipSkipWhileTests.cs index 948b103357bc..6a5201a21808 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SkipSkipWhileTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SkipSkipWhileTests.cs @@ -113,7 +113,7 @@ public static void Skip_NotPipelined_Longrunning(Labeled> lab [Fact] public static void Skip_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Skip(0)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Skip(0)); } // @@ -364,9 +364,9 @@ public static void SkipWhile_SomeFalse_Longrunning(Labeled> l [Fact] public static void SkipWhile_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).SkipWhile(x => true)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().SkipWhile((Func)null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().SkipWhile((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).SkipWhile(x => true)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().SkipWhile((Func)null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().SkipWhile((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs index 61144648b12c..ce75e075305a 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Linq.Parallel.Tests @@ -425,30 +426,30 @@ public static void Sum_AggregateException() [Fact] public static void Sum_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Sum((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Sum((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Sum((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Sum((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Sum((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Sum((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Sum((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Sum((Func)null)); - - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Sum((Func)null)); - Assert.Throws("source", () => ((ParallelQuery)null).Sum()); - Assert.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat(0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((int?)0, 1).Sum((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long)0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((long?)0, 1).Sum((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float)0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((float?)0, 1).Sum((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double)0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((double?)0, 1).Sum((Func)null)); + + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal)0, 1).Sum((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Sum()); + AssertExtensions.Throws("selector", () => ParallelEnumerable.Repeat((decimal?)0, 1).Sum((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/TakeTakeWhileTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/TakeTakeWhileTests.cs index 43d192e21eb0..7ccd7e203566 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/TakeTakeWhileTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/TakeTakeWhileTests.cs @@ -114,7 +114,7 @@ public static void Take_NotPipelined_Longrunning(Labeled> lab [Fact] public static void Take_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).Take(0)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Take(0)); } // @@ -362,9 +362,9 @@ public static void TakeWhile_SomeFalse_Longrunning(Labeled> l [Fact] public static void TakeWhile_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).TakeWhile(x => true)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().TakeWhile((Func)null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().TakeWhile((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).TakeWhile(x => true)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().TakeWhile((Func)null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().TakeWhile((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs index 71908ad02d1c..c7f1b49cb0ac 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs @@ -54,7 +54,7 @@ public static void ToArray_OperationCanceledException_PreCanceled() [Fact] public static void ToArray_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ToArray()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToArray()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ToDictionaryTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ToDictionaryTests.cs index 9e488a67a214..b19d6a93087b 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ToDictionaryTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ToDictionaryTests.cs @@ -225,16 +225,16 @@ public static void ToDictionary_AggregateException(Labeled> l [Fact] public static void ToDictionary_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x)); - Assert.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, EqualityComparer.Default)); - Assert.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, y => y)); - Assert.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, y => y, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, y => y)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, y => y, EqualityComparer.Default)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Empty().ToDictionary(x => x, (Func)null)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Empty().ToDictionary(x => x, (Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, y => y)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToDictionary(x => x, y => y, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, y => y)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToDictionary((Func)null, y => y, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Empty().ToDictionary(x => x, (Func)null)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Empty().ToDictionary(x => x, (Func)null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ToListTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ToListTests.cs index 0aa010fa38e4..1175c86058be 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ToListTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ToListTests.cs @@ -54,7 +54,7 @@ public static void ToList_OperationCanceledException_PreCanceled() [Fact] public static void ToList_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ToList()); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToList()); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ToLookupTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ToLookupTests.cs index 44231770fa9c..7aab25e10f13 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ToLookupTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ToLookupTests.cs @@ -293,16 +293,16 @@ public static void ToLookup_AggregateException(Labeled> label [Fact] public static void ToLookup_ArgumentNullException() { - Assert.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x)); - Assert.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, EqualityComparer.Default)); - Assert.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, y => y)); - Assert.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, y => y, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, EqualityComparer.Default)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, y => y)); - Assert.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, y => y, EqualityComparer.Default)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Empty().ToLookup(x => x, (Func)null)); - Assert.Throws("elementSelector", () => ParallelEnumerable.Empty().ToLookup(x => x, (Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, y => y)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).ToLookup(x => x, y => y, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, y => y)); + AssertExtensions.Throws("keySelector", () => ParallelEnumerable.Empty().ToLookup((Func)null, y => y, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Empty().ToLookup(x => x, (Func)null)); + AssertExtensions.Throws("elementSelector", () => ParallelEnumerable.Empty().ToLookup(x => x, (Func)null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/UnionTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/UnionTests.cs index 039df2ae7af9..0db4a794e104 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/UnionTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/UnionTests.cs @@ -431,11 +431,11 @@ public static void Union_NoDuplicateSettings() [Fact] public static void Union_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).Union(ParallelEnumerable.Range(0, 1))); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Union(null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Union(ParallelEnumerable.Range(0, 1))); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Union(null)); - Assert.Throws("first", () => ((ParallelQuery)null).Union(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Union(null, EqualityComparer.Default)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Union(ParallelEnumerable.Range(0, 1), EqualityComparer.Default)); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Union(null, EqualityComparer.Default)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/WhereTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/WhereTests.cs index 569b7180479a..6e980ad03f26 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/WhereTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/WhereTests.cs @@ -181,10 +181,10 @@ public static void Where_Indexed_NotPipelined_Longrunning(Labeled("source", () => ((ParallelQuery)null).Where(x => x)); - Assert.Throws("source", () => ((ParallelQuery)null).Where((x, index) => x)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Where((Func)null)); - Assert.Throws("predicate", () => ParallelEnumerable.Empty().Where((Func)null)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Where(x => x)); + AssertExtensions.Throws("source", () => ((ParallelQuery)null).Where((x, index) => x)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Where((Func)null)); + AssertExtensions.Throws("predicate", () => ParallelEnumerable.Empty().Where((Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ZipTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ZipTests.cs index aa128cfe1886..449e6eba87ca 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ZipTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ZipTests.cs @@ -187,9 +187,9 @@ public static void Zip_NoDuplicateSettings() [Fact] public static void Zip_ArgumentNullException() { - Assert.Throws("first", () => ((ParallelQuery)null).Zip(ParallelEnumerable.Range(0, 1), (x, y) => x)); - Assert.Throws("second", () => ParallelEnumerable.Range(0, 1).Zip(null, (Func)((x, y) => x))); - Assert.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Zip(ParallelEnumerable.Range(0, 1), (Func)null)); + AssertExtensions.Throws("first", () => ((ParallelQuery)null).Zip(ParallelEnumerable.Range(0, 1), (x, y) => x)); + AssertExtensions.Throws("second", () => ParallelEnumerable.Range(0, 1).Zip(null, (Func)((x, y) => x))); + AssertExtensions.Throws("resultSelector", () => ParallelEnumerable.Range(0, 1).Zip(ParallelEnumerable.Range(0, 1), (Func)null)); } } } diff --git a/src/System.Linq.Parallel/tests/System.Linq.Parallel.Tests.csproj b/src/System.Linq.Parallel/tests/System.Linq.Parallel.Tests.csproj index 92f719aaa6fb..32f697e6cefb 100644 --- a/src/System.Linq.Parallel/tests/System.Linq.Parallel.Tests.csproj +++ b/src/System.Linq.Parallel/tests/System.Linq.Parallel.Tests.csproj @@ -13,6 +13,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Linq.Queryable/tests/AggregateTests.cs b/src/System.Linq.Queryable/tests/AggregateTests.cs index 236910a895ff..76920710a3a6 100644 --- a/src/System.Linq.Queryable/tests/AggregateTests.cs +++ b/src/System.Linq.Queryable/tests/AggregateTests.cs @@ -41,25 +41,25 @@ public void MultipleElementsSeedResultSelector() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).Aggregate((x, y) => x + y)); - Assert.Throws("source", () => ((IQueryable)null).Aggregate(0, (x, y) => x + y)); - Assert.Throws("source", () => ((IQueryable)null).Aggregate(0, (x, y) => x + y, i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Aggregate((x, y) => x + y)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Aggregate(0, (x, y) => x + y)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Aggregate(0, (x, y) => x + y, i => i)); } [Fact] public void NullFunc() { Expression> func = null; - Assert.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(func)); - Assert.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, func)); - Assert.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, func, i => i)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(func)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, func)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, func, i => i)); } [Fact] public void NullResultSelector() { Expression> resultSelector = null; - Assert.Throws("selector", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, (x, y) => x + y, resultSelector)); + AssertExtensions.Throws("selector", () => Enumerable.Range(0, 3).AsQueryable().Aggregate(0, (x, y) => x + y, resultSelector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/AllTests.cs b/src/System.Linq.Queryable/tests/AllTests.cs index bab8dc99f1fa..cb54c31a3f0c 100644 --- a/src/System.Linq.Queryable/tests/AllTests.cs +++ b/src/System.Linq.Queryable/tests/AllTests.cs @@ -20,14 +20,14 @@ public void PredicateTrueAllExceptLast() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).All(i => i != 0)); + AssertExtensions.Throws("source", () => ((IQueryable)null).All(i => i != 0)); } [Fact] public void NullPredicateUsed() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().All(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().All(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/AnyTests.cs b/src/System.Linq.Queryable/tests/AnyTests.cs index 97df9ad669f7..80819162898b 100644 --- a/src/System.Linq.Queryable/tests/AnyTests.cs +++ b/src/System.Linq.Queryable/tests/AnyTests.cs @@ -37,20 +37,20 @@ public void RangeWithinRange() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).Any()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Any()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).Any(i => i != 0)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Any(i => i != 0)); } [Fact] public void NullPredicateUsed() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Any(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Any(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/AppendPrependTests.cs b/src/System.Linq.Queryable/tests/AppendPrependTests.cs index 72780b47e382..45d1c8befbd7 100644 --- a/src/System.Linq.Queryable/tests/AppendPrependTests.cs +++ b/src/System.Linq.Queryable/tests/AppendPrependTests.cs @@ -8,8 +8,8 @@ public class AppendPrependTests [Fact] public void SourceNull() { - Assert.Throws("source", () => ((IQueryable)null).Append(1)); - Assert.Throws("source", () => ((IQueryable)null).Prepend(1)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Append(1)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Prepend(1)); } [Theory] @@ -109,4 +109,4 @@ private static IQueryable PrependRange(IQueryable sou return prepends.Reverse().Aggregate(source, (acc, x) => acc.Prepend(x)); } } -} \ No newline at end of file +} diff --git a/src/System.Linq.Queryable/tests/AverageTests.cs b/src/System.Linq.Queryable/tests/AverageTests.cs index 215d8092f261..486a6bf53841 100644 --- a/src/System.Linq.Queryable/tests/AverageTests.cs +++ b/src/System.Linq.Queryable/tests/AverageTests.cs @@ -12,20 +12,20 @@ public class AverageTests : EnumerableBasedTests [Fact] public void NullNFloatSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullNFloatSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullNFloatFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -54,20 +54,20 @@ public void NullableFloatFromSelector() [Fact] public void NullIntSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullIntSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullIntFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -96,20 +96,20 @@ public void MultipleIntFromSelector() [Fact] public void NullNIntSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullNIntSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullNIntFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -138,20 +138,20 @@ public void NullableIntFromSelector() [Fact] public void NullLongSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullLongSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullLongFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -180,20 +180,20 @@ public void MultipleLongFromSelector() [Fact] public void NullNLongSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullNLongSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullNLongFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -222,20 +222,20 @@ public void NullableLongFromSelector() [Fact] public void NullDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullDoubleSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullDoubleFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } @@ -265,20 +265,20 @@ public void MultipleDoubleFromSelector() [Fact] public void NullNDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullNDoubleSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullNDoubleFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -307,20 +307,20 @@ public void NullableDoubleFromSelector() [Fact] public void NullDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullDecimalSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullDecimalFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -349,20 +349,20 @@ public void MultipleDecimalFromSelector() [Fact] public void NullNDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullNDecimalSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullNDecimalFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] @@ -391,20 +391,20 @@ public void NullableDecimalFromSelector() [Fact] public void NullFloatSource() { - Assert.Throws("source", () => ((IQueryable)null).Average()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average()); } [Fact] public void NullFloatSourceWithFunc() { - Assert.Throws("source", () => ((IQueryable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Average(i => i)); } [Fact] public void NullFloatFunc() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Average(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/CastTests.cs b/src/System.Linq.Queryable/tests/CastTests.cs index f16dc7e7582f..451f4855fbee 100644 --- a/src/System.Linq.Queryable/tests/CastTests.cs +++ b/src/System.Linq.Queryable/tests/CastTests.cs @@ -204,7 +204,7 @@ public void CastingNullToNonnullableIsNullReferenceException() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).Cast()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Cast()); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ConcatTests.cs b/src/System.Linq.Queryable/tests/ConcatTests.cs index 054158d73665..100cf156db58 100644 --- a/src/System.Linq.Queryable/tests/ConcatTests.cs +++ b/src/System.Linq.Queryable/tests/ConcatTests.cs @@ -29,13 +29,13 @@ public void NonEmptyAndNonEmpty() [Fact] public void FirstNull() { - Assert.Throws("source1", () => ((IQueryable)null).Concat(Enumerable.Range(0, 0).AsQueryable())); + AssertExtensions.Throws("source1", () => ((IQueryable)null).Concat(Enumerable.Range(0, 0).AsQueryable())); } [Fact] public void SecondNull() { - Assert.Throws("source2", () => Enumerable.Range(0, 0).AsQueryable().Concat(null)); + AssertExtensions.Throws("source2", () => Enumerable.Range(0, 0).AsQueryable().Concat(null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ContainsTests.cs b/src/System.Linq.Queryable/tests/ContainsTests.cs index eea21c3fdb96..eb38770a7dd9 100644 --- a/src/System.Linq.Queryable/tests/ContainsTests.cs +++ b/src/System.Linq.Queryable/tests/ContainsTests.cs @@ -56,8 +56,8 @@ public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.Contains(42)); - Assert.Throws("source", () => source.Contains(42, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => source.Contains(42)); + AssertExtensions.Throws("source", () => source.Contains(42, EqualityComparer.Default)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/CountTests.cs b/src/System.Linq.Queryable/tests/CountTests.cs index 4061c4715f66..e35f0be37701 100644 --- a/src/System.Linq.Queryable/tests/CountTests.cs +++ b/src/System.Linq.Queryable/tests/CountTests.cs @@ -38,20 +38,20 @@ public void PredicateTrueFirstAndLast() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).Count()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Count()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).Count(i => i != 0)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Count(i => i != 0)); } [Fact] public void NullPredicateUsed() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Count(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Count(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/DefaultIfEmptyTests.cs b/src/System.Linq.Queryable/tests/DefaultIfEmptyTests.cs index 2e6f21d6bc01..2f35684c67ad 100644 --- a/src/System.Linq.Queryable/tests/DefaultIfEmptyTests.cs +++ b/src/System.Linq.Queryable/tests/DefaultIfEmptyTests.cs @@ -59,8 +59,8 @@ public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.DefaultIfEmpty()); - Assert.Throws("source", () => source.DefaultIfEmpty(42)); + AssertExtensions.Throws("source", () => source.DefaultIfEmpty()); + AssertExtensions.Throws("source", () => source.DefaultIfEmpty(42)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/DistinctTests.cs b/src/System.Linq.Queryable/tests/DistinctTests.cs index f87646573c2e..4b9c8a853dd8 100644 --- a/src/System.Linq.Queryable/tests/DistinctTests.cs +++ b/src/System.Linq.Queryable/tests/DistinctTests.cs @@ -55,14 +55,14 @@ public void AllUnique() public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.Distinct()); + AssertExtensions.Throws("source", () => source.Distinct()); } [Fact] public void NullSourceCustomComparer() { IQueryable source = null; - Assert.Throws("source", () => source.Distinct(StringComparer.Ordinal)); + AssertExtensions.Throws("source", () => source.Distinct(StringComparer.Ordinal)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ElementAtOrDefaultTests.cs b/src/System.Linq.Queryable/tests/ElementAtOrDefaultTests.cs index d10e59b6b18c..cda4037e6f03 100644 --- a/src/System.Linq.Queryable/tests/ElementAtOrDefaultTests.cs +++ b/src/System.Linq.Queryable/tests/ElementAtOrDefaultTests.cs @@ -51,7 +51,7 @@ public void ManyElementsIndexTargetsLast() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).ElementAtOrDefault(2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).ElementAtOrDefault(2)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ElementAtTests.cs b/src/System.Linq.Queryable/tests/ElementAtTests.cs index 9bde64310523..77e3a0337003 100644 --- a/src/System.Linq.Queryable/tests/ElementAtTests.cs +++ b/src/System.Linq.Queryable/tests/ElementAtTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Linq.Tests @@ -13,7 +14,7 @@ public void IndexNegative() { int?[] source = { 9, 8 }; - Assert.Throws("index", () => source.AsQueryable().ElementAt(-1)); + AssertExtensions.Throws("index", () => source.AsQueryable().ElementAt(-1)); } [Fact] @@ -21,7 +22,7 @@ public void IndexEqualsCount() { int[] source = { 1, 2, 3, 4 }; - Assert.Throws("index", () => source.AsQueryable().ElementAt(source.Length)); + AssertExtensions.Throws("index", () => source.AsQueryable().ElementAt(source.Length)); } [Fact] @@ -29,7 +30,7 @@ public void EmptyIndexZero() { int[] source = { }; - Assert.Throws("index", () => source.AsQueryable().ElementAt(0)); + AssertExtensions.Throws("index", () => source.AsQueryable().ElementAt(0)); } [Fact] @@ -51,7 +52,7 @@ public void ManyElementsIndexTargetsLast() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).ElementAt(2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).ElementAt(2)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs b/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs index 235c2836bda3..f79c3d418059 100644 --- a/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs +++ b/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs @@ -136,14 +136,14 @@ public void CreateQueryNonGeneric() public void CreateQueryNull() { IQueryProvider provider = Enumerable.Empty().AsQueryable().Provider; - Assert.Throws("expression", () => provider.CreateQuery(null)); + AssertExtensions.Throws("expression", () => provider.CreateQuery(null)); } [Fact] public void CreateQueryNullNonGeneric() { IQueryProvider provider = Enumerable.Empty().AsQueryable().Provider; - Assert.Throws("expression", () => provider.CreateQuery(null)); + AssertExtensions.Throws("expression", () => provider.CreateQuery(null)); } [Fact] @@ -190,14 +190,14 @@ public void ExecuteNonGeneric() public void ExecuteNull() { IQueryProvider provider = Enumerable.Empty().AsQueryable().Provider; - Assert.Throws("expression", () => provider.Execute(null)); + AssertExtensions.Throws("expression", () => provider.Execute(null)); } [Fact] public void ExecuteNullNonGeneric() { IQueryProvider provider = Enumerable.Empty().AsQueryable().Provider; - Assert.Throws("expression", () => provider.Execute(null)); + AssertExtensions.Throws("expression", () => provider.Execute(null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ExceptTests.cs b/src/System.Linq.Queryable/tests/ExceptTests.cs index 0414da28e0f7..39c9037cc1d2 100644 --- a/src/System.Linq.Queryable/tests/ExceptTests.cs +++ b/src/System.Linq.Queryable/tests/ExceptTests.cs @@ -43,7 +43,7 @@ public void FirstNullCustomComparer() IQueryable first = null; string[] second = { "bBo", "shriC" }; - Assert.Throws("source1", () => first.Except(second.AsQueryable(), new AnagramEqualityComparer())); + AssertExtensions.Throws("source1", () => first.Except(second.AsQueryable(), new AnagramEqualityComparer())); } [Fact] @@ -52,7 +52,7 @@ public void SecondNullCustomComparer() string[] first = { "Bob", "Tim", "Robert", "Chris" }; IQueryable second = null; - Assert.Throws("source2", () => first.AsQueryable().Except(second, new AnagramEqualityComparer())); + AssertExtensions.Throws("source2", () => first.AsQueryable().Except(second, new AnagramEqualityComparer())); } [Fact] @@ -61,7 +61,7 @@ public void FirstNullNoComparer() IQueryable first = null; string[] second = { "bBo", "shriC" }; - Assert.Throws("source1", () => first.Except(second.AsQueryable())); + AssertExtensions.Throws("source1", () => first.Except(second.AsQueryable())); } [Fact] @@ -70,7 +70,7 @@ public void SecondNullNoComparer() string[] first = { "Bob", "Tim", "Robert", "Chris" }; IQueryable second = null; - Assert.Throws("source2", () => first.AsQueryable().Except(second)); + AssertExtensions.Throws("source2", () => first.AsQueryable().Except(second)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/FirstOrDefaultTests.cs b/src/System.Linq.Queryable/tests/FirstOrDefaultTests.cs index c54fd39165a0..21126aa8665c 100644 --- a/src/System.Linq.Queryable/tests/FirstOrDefaultTests.cs +++ b/src/System.Linq.Queryable/tests/FirstOrDefaultTests.cs @@ -55,20 +55,20 @@ public void PredicateTrueForSome() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).FirstOrDefault()); + AssertExtensions.Throws("source", () => ((IQueryable)null).FirstOrDefault()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).FirstOrDefault(i => i != 2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).FirstOrDefault(i => i != 2)); } [Fact] public void NullPredicate() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().FirstOrDefault(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().FirstOrDefault(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/FirstTests.cs b/src/System.Linq.Queryable/tests/FirstTests.cs index c4d2cdbe37a9..1886d149d19c 100644 --- a/src/System.Linq.Queryable/tests/FirstTests.cs +++ b/src/System.Linq.Queryable/tests/FirstTests.cs @@ -54,20 +54,20 @@ public void PredicateTrueForSome() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).First()); + AssertExtensions.Throws("source", () => ((IQueryable)null).First()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).First(i => i != 2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).First(i => i != 2)); } [Fact] public void NullPredicate() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().First(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().First(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/GroupByTests.cs b/src/System.Linq.Queryable/tests/GroupByTests.cs index e90cc7ebe416..bae9d1e51fc1 100644 --- a/src/System.Linq.Queryable/tests/GroupByTests.cs +++ b/src/System.Linq.Queryable/tests/GroupByTests.cs @@ -98,14 +98,14 @@ public void EmptySource() public void SourceIsNull() { IQueryable source = null; - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, new AnagramEqualityComparer())); - Assert.Throws("source", () => source.GroupBy(e => e.Name, new AnagramEqualityComparer())); - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score)); - Assert.Throws("source", () => source.GroupBy(e => e.Name)); - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum())); - Assert.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score))); - Assert.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score)); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name)); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score))); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); } [Fact] @@ -122,15 +122,15 @@ public void KeySelectorNull() }; Expression> keySelector = null; - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(null, e => e.Score, new AnagramEqualityComparer())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(null, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score)); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(null, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, (k, es) => es.Sum(e => e.Score))); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(null, new AnagramEqualityComparer())); - Assert.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector)); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(null, e => e.Score, new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(null, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score)); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(null, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector, (k, es) => es.Sum(e => e.Score))); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(null, new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.AsQueryable().GroupBy(keySelector)); } [Fact] @@ -148,10 +148,10 @@ public void ElementSelectorNull() Expression> elementSelector = null; - Assert.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector)); - Assert.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, new AnagramEqualityComparer())); - Assert.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum())); - Assert.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum(), new AnagramEqualityComparer())); + AssertExtensions.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector)); + AssertExtensions.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum())); + AssertExtensions.Throws("elementSelector", () => source.AsQueryable().GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum(), new AnagramEqualityComparer())); } [Fact] @@ -168,7 +168,7 @@ public void ResultSelectorNull() Expression, long>> resultSelector = null; - Assert.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, e => e.Score, resultSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, e => e.Score, resultSelector, new AnagramEqualityComparer())); } [Fact] @@ -185,7 +185,7 @@ public void ResultSelectorNullNoComparer() Expression, long>> resultSelector = null; - Assert.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, e => e.Score, resultSelector)); + AssertExtensions.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, e => e.Score, resultSelector)); } [Fact] @@ -202,7 +202,7 @@ public void ResultSelectorNullNoElementSelector() Expression, long>> resultSelector = null; - Assert.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, resultSelector)); + AssertExtensions.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, resultSelector)); } [Fact] @@ -214,7 +214,7 @@ public void ResultSelectorNullNoElementSelectorCustomComparer() Expression, long>> resultSelector = null; - Assert.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, resultSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => source.AsQueryable().GroupBy(e => e.Name, resultSelector, new AnagramEqualityComparer())); } [Fact] diff --git a/src/System.Linq.Queryable/tests/GroupJoinTests.cs b/src/System.Linq.Queryable/tests/GroupJoinTests.cs index 9a51599d9a37..146a26d4fc18 100644 --- a/src/System.Linq.Queryable/tests/GroupJoinTests.cs +++ b/src/System.Linq.Queryable/tests/GroupJoinTests.cs @@ -122,7 +122,7 @@ public void OuterNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outer", () => outer.GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); + AssertExtensions.Throws("outer", () => outer.GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); } [Fact] @@ -136,7 +136,7 @@ public void InnerNull() }; IQueryable inner = null; - Assert.Throws("inner", () => outer.AsQueryable().GroupJoin(inner, e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); + AssertExtensions.Throws("inner", () => outer.AsQueryable().GroupJoin(inner, e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); } [Fact] @@ -154,7 +154,7 @@ public void OuterKeySelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), null, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); + AssertExtensions.Throws("outerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), null, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); } [Fact] @@ -172,7 +172,7 @@ public void InnerKeySelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("innerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, null, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); + AssertExtensions.Throws("innerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, null, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() }, new AnagramEqualityComparer())); } [Fact] @@ -190,7 +190,7 @@ public void ResultSelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("resultSelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (Expression, JoinRec>>)null, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (Expression, JoinRec>>)null, new AnagramEqualityComparer())); } [Fact] @@ -203,7 +203,7 @@ public void OuterNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outer", () => outer.GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); + AssertExtensions.Throws("outer", () => outer.GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); } [Fact] @@ -217,7 +217,7 @@ public void InnerNullNoComparer() }; IQueryable inner = null; - Assert.Throws("inner", () => outer.AsQueryable().GroupJoin(inner, e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); + AssertExtensions.Throws("inner", () => outer.AsQueryable().GroupJoin(inner, e => e.name, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); } [Fact] @@ -235,7 +235,7 @@ public void OuterKeySelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), null, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); + AssertExtensions.Throws("outerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), null, e => e.name, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); } [Fact] @@ -253,7 +253,7 @@ public void InnerKeySelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("innerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, null, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); + AssertExtensions.Throws("innerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, null, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); } [Fact] @@ -271,7 +271,7 @@ public void ResultSelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("resultSelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (Expression, JoinRec>>)null)); + AssertExtensions.Throws("resultSelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, e => e.name, (Expression, JoinRec>>)null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/IntersectTests.cs b/src/System.Linq.Queryable/tests/IntersectTests.cs index ba57b7d59740..fdc812eeafce 100644 --- a/src/System.Linq.Queryable/tests/IntersectTests.cs +++ b/src/System.Linq.Queryable/tests/IntersectTests.cs @@ -23,7 +23,7 @@ public void FirstNullCustomComparer() IQueryable first = null; string[] second = { "ekiM", "bBo" }; - var ane = Assert.Throws("source1", () => first.Intersect(second.AsQueryable(), new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("source1", () => first.Intersect(second.AsQueryable(), new AnagramEqualityComparer())); } [Fact] @@ -32,7 +32,7 @@ public void SecondNullCustomComparer() string[] first = { "Tim", "Bob", "Mike", "Robert" }; IQueryable second = null; - var ane = Assert.Throws("source2", () => first.AsQueryable().Intersect(second, new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("source2", () => first.AsQueryable().Intersect(second, new AnagramEqualityComparer())); } [Fact] @@ -41,7 +41,7 @@ public void FirstNullNoComparer() IQueryable first = null; string[] second = { "ekiM", "bBo" }; - var ane = Assert.Throws("source1", () => first.Intersect(second.AsQueryable())); + var ane = AssertExtensions.Throws("source1", () => first.Intersect(second.AsQueryable())); } [Fact] @@ -50,7 +50,7 @@ public void SecondNullNoComparer() string[] first = { "Tim", "Bob", "Mike", "Robert" }; IQueryable second = null; - var ane = Assert.Throws("source2", () => first.AsQueryable().Intersect(second)); + var ane = AssertExtensions.Throws("source2", () => first.AsQueryable().Intersect(second)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/JoinTests.cs b/src/System.Linq.Queryable/tests/JoinTests.cs index 1aed3aa681e3..0a14280ced74 100644 --- a/src/System.Linq.Queryable/tests/JoinTests.cs +++ b/src/System.Linq.Queryable/tests/JoinTests.cs @@ -113,7 +113,7 @@ public void OuterNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outer", () => outer.Join(inner.AsQueryable(), e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); + AssertExtensions.Throws("outer", () => outer.Join(inner.AsQueryable(), e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); } [Fact] @@ -127,7 +127,7 @@ public void InnerNull() }; IQueryable inner = null; - Assert.Throws("inner", () => outer.AsQueryable().Join(inner, e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); + AssertExtensions.Throws("inner", () => outer.AsQueryable().Join(inner, e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); } [Fact] @@ -145,7 +145,7 @@ public void OuterKeySelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), null, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); + AssertExtensions.Throws("outerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), null, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); } [Fact] @@ -163,7 +163,7 @@ public void InnerKeySelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("innerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, null, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); + AssertExtensions.Throws("innerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, null, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }, new AnagramEqualityComparer())); } [Fact] @@ -181,7 +181,7 @@ public void ResultSelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("resultSelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, e => e.name, (Expression>)null, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, e => e.name, (Expression>)null, new AnagramEqualityComparer())); } [Fact] @@ -194,7 +194,7 @@ public void OuterNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outer", () => outer.Join(inner.AsQueryable(), e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); + AssertExtensions.Throws("outer", () => outer.Join(inner.AsQueryable(), e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); } [Fact] @@ -208,7 +208,7 @@ public void InnerNullNoComparer() }; IQueryable inner = null; - Assert.Throws("inner", () => outer.AsQueryable().Join(inner, e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); + AssertExtensions.Throws("inner", () => outer.AsQueryable().Join(inner, e => e.name, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); } [Fact] @@ -226,7 +226,7 @@ public void OuterKeySelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), null, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); + AssertExtensions.Throws("outerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), null, e => e.name, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); } [Fact] @@ -244,7 +244,7 @@ public void InnerKeySelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("innerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, null, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); + AssertExtensions.Throws("innerKeySelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, null, (cr, or) => new JoinRec { name = cr.name, orderID = or.orderID, total = or.total })); } [Fact] @@ -262,7 +262,7 @@ public void ResultSelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("resultSelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, e => e.name, (Expression>)null)); + AssertExtensions.Throws("resultSelector", () => outer.AsQueryable().Join(inner.AsQueryable(), e => e.name, e => e.name, (Expression>)null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/LastOrDefaultTests.cs b/src/System.Linq.Queryable/tests/LastOrDefaultTests.cs index dcb2c31a0844..1b6afb37c45d 100644 --- a/src/System.Linq.Queryable/tests/LastOrDefaultTests.cs +++ b/src/System.Linq.Queryable/tests/LastOrDefaultTests.cs @@ -53,20 +53,20 @@ public void PredicateTrueForSome() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).LastOrDefault()); + AssertExtensions.Throws("source", () => ((IQueryable)null).LastOrDefault()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).LastOrDefault(i => i != 2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).LastOrDefault(i => i != 2)); } [Fact] public void NullPredicate() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().LastOrDefault(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().LastOrDefault(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/LastTests.cs b/src/System.Linq.Queryable/tests/LastTests.cs index cd40a315453b..3369f18bbcdf 100644 --- a/src/System.Linq.Queryable/tests/LastTests.cs +++ b/src/System.Linq.Queryable/tests/LastTests.cs @@ -55,20 +55,20 @@ public void PredicateTrueForSome() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).Last()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Last()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).Last(i => i != 2)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Last(i => i != 2)); } [Fact] public void NullPredicate() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Last(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().Last(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/LongCountTests.cs b/src/System.Linq.Queryable/tests/LongCountTests.cs index 899209262e3a..df4309c48d49 100644 --- a/src/System.Linq.Queryable/tests/LongCountTests.cs +++ b/src/System.Linq.Queryable/tests/LongCountTests.cs @@ -40,20 +40,20 @@ public void PredicateTrueFirstAndLast() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).LongCount()); + AssertExtensions.Throws("source", () => ((IQueryable)null).LongCount()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IQueryable)null).LongCount(i => i != 0)); + AssertExtensions.Throws("source", () => ((IQueryable)null).LongCount(i => i != 0)); } [Fact] public void NullPredicateUsed() { Expression> predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().LongCount(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).AsQueryable().LongCount(predicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/MaxTests.cs b/src/System.Linq.Queryable/tests/MaxTests.cs index c2620bc2df6e..48c27f050be5 100644 --- a/src/System.Linq.Queryable/tests/MaxTests.cs +++ b/src/System.Linq.Queryable/tests/MaxTests.cs @@ -12,7 +12,7 @@ public class MaxTests : EnumerableBasedTests [Fact] public void NullInt32Source() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -31,7 +31,7 @@ public void Int32MaxRepeated() [Fact] public void NullInt64Source() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -63,13 +63,13 @@ public void Single_MaxRepeated() [Fact] public void NullSingleSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] public void NullDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -88,7 +88,7 @@ public void DoubleMaximumRepeated() [Fact] public void NullDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -107,7 +107,7 @@ public void DecimalMaximumRepeated() [Fact] public void NullNullableInt32Source() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -126,7 +126,7 @@ public void NullableInt32MaxRepeated() [Fact] public void NullNullableInt64Source() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -158,7 +158,7 @@ public void NullableSingleMaxRepeated() [Fact] public void NullNullableDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -170,7 +170,7 @@ public void EmptyNullableDouble() [Fact] public void NullNullableDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -195,13 +195,13 @@ public void EmptyDateTime() [Fact] public void NullDateTimeSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] public void NullStringSource() { - Assert.Throws("source", () => ((IQueryable)null).Max()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max()); } [Fact] @@ -226,14 +226,14 @@ public void EmptyInt32WithSelector() [Fact] public void NullInt32SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void Int32SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -257,14 +257,14 @@ public void EmptyInt64WithSelector() [Fact] public void NullInt64SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void Int64SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -294,14 +294,14 @@ public void MaxSingleWithSelectorAccessingProperty() [Fact] public void NullSingleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void SingleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -319,14 +319,14 @@ public void EmptyDoubleWithSelector() [Fact] public void NullDoubleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void DoubleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -349,14 +349,14 @@ public void EmptyDecimalWithSelector() [Fact] public void NullDecimalSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void DecimalSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -379,14 +379,14 @@ public void EmptyNullableInt32WithSelector() [Fact] public void NullNullableInt32SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableInt32SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -410,14 +410,14 @@ public void EmptyNullableInt64WithSelector() [Fact] public void NullNullableInt64SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableInt64SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -440,14 +440,14 @@ public void EmptyNullableSingleWithSelector() [Fact] public void NullNullableSingleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableSingleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -471,14 +471,14 @@ public void EmptyNullableDoubleWithSelector() [Fact] public void NullNullableDoubleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableDoubleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -501,14 +501,14 @@ public void EmptyNullableDecimalWithSelector() [Fact] public void NullNullableDecimalSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableDecimalSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] @@ -531,14 +531,14 @@ public void EmptyNullableDateTimeWithSelector() [Fact] public void NullNullableDateTimeSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void NullableDateTimeSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } public void EmptyStringSourceWithSelector() @@ -549,14 +549,14 @@ public void EmptyStringSourceWithSelector() [Fact] public void NullStringSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Max(i => i)); } [Fact] public void StringSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Max(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/MinTests.cs b/src/System.Linq.Queryable/tests/MinTests.cs index 5038d24da59d..2ac4459afeca 100644 --- a/src/System.Linq.Queryable/tests/MinTests.cs +++ b/src/System.Linq.Queryable/tests/MinTests.cs @@ -18,7 +18,7 @@ public void EmptyInt32Source() [Fact] public void NullInt32Source() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -37,7 +37,7 @@ public void EmptyInt64Source() [Fact] public void NullInt64Source() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -50,7 +50,7 @@ public void Int64MinimumRepeated() [Fact] public void NullSingleSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -75,7 +75,7 @@ public void EmptyDoubleSource() [Fact] public void NullDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -94,7 +94,7 @@ public void EmptyDecimalSource() [Fact] public void NullDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -126,7 +126,7 @@ public void EmptyNullableInt64Source() [Fact] public void NullNullableInt64Source() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -158,7 +158,7 @@ public void EmptyNullableDoubleSource() [Fact] public void NullNullableDoubleSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -191,7 +191,7 @@ public void EmptyNullableDecimalSource() [Fact] public void NullNullableDecimalSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -210,7 +210,7 @@ public void EmptyDateTimeSource() [Fact] public void NullNullableDateTimeSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -222,7 +222,7 @@ public void EmptyStringSource() [Fact] public void NullStringSource() { - Assert.Throws("source", () => ((IQueryable)null).Min()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min()); } [Fact] @@ -252,14 +252,14 @@ public void EmptyInt32WithSelector() [Fact] public void NullInt32SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void Int32SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -283,14 +283,14 @@ public void EmptyInt64WithSelector() [Fact] public void NullInt64SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void Int64SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -302,7 +302,7 @@ public void EmptySingleWithSelector() [Fact] public void NullSingleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] @@ -336,14 +336,14 @@ public void EmptyDoubleWithSelector() [Fact] public void NullDoubleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void DoubleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -366,14 +366,14 @@ public void EmptyDecimalWithSelector() [Fact] public void NullDecimalSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void DecimalSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -390,14 +390,14 @@ public void MinNullableInt32WithSelectorAccessingProperty() [Fact] public void NullNullableInt32SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void NullableInt32SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -414,14 +414,14 @@ public void MinNullableInt64WithSelectorAccessingProperty() [Fact] public void NullNullableInt64SourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void NullableInt64SourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -439,14 +439,14 @@ public void MinNullableSingleWithSelectorAccessingProperty() [Fact] public void NullNullableSingleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void NullableSingleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -462,14 +462,14 @@ public void MinNullableDoubleWithSelectorAccessingProperty() [Fact] public void NullNullableDoubleSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void NullableDoubleSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -486,14 +486,14 @@ public void MinNullableDecimalWithSelectorAccessingProperty() [Fact] public void NullNullableDecimalSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void NullableDecimalSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -505,14 +505,14 @@ public void EmptyDateTimeWithSelector() [Fact] public void NullDateTimeSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void DateTimeSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] @@ -529,14 +529,14 @@ public void MinStringWitSelectorAccessingProperty() [Fact] public void NullStringSourceWithSelector() { - Assert.Throws("source", () => ((IQueryable)null).Min(i => i)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Min(i => i)); } [Fact] public void StringSourceWithNullSelector() { Expression> selector = null; - Assert.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().AsQueryable().Min(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/OfTypeTests.cs b/src/System.Linq.Queryable/tests/OfTypeTests.cs index 9de04e7e95ef..01c84a67e542 100644 --- a/src/System.Linq.Queryable/tests/OfTypeTests.cs +++ b/src/System.Linq.Queryable/tests/OfTypeTests.cs @@ -27,7 +27,7 @@ public void HeterogenousSourceOnlyFirstOfType() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IQueryable)null).OfType()); + AssertExtensions.Throws("source", () => ((IQueryable)null).OfType()); } [Fact] diff --git a/src/System.Linq.Queryable/tests/OrderByDescendingTests.cs b/src/System.Linq.Queryable/tests/OrderByDescendingTests.cs index 9580b129f3d4..94d2fad5c4b3 100644 --- a/src/System.Linq.Queryable/tests/OrderByDescendingTests.cs +++ b/src/System.Linq.Queryable/tests/OrderByDescendingTests.cs @@ -54,28 +54,28 @@ public void FirstAndLastAreDuplicatesNullPassedAsComparer() public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.OrderByDescending(i => i)); + AssertExtensions.Throws("source", () => source.OrderByDescending(i => i)); } [Fact] public void NullKeySelector() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderByDescending(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderByDescending(keySelector)); } [Fact] public void NullSourceComparer() { IQueryable source = null; - Assert.Throws("source", () => source.OrderByDescending(i => i, Comparer.Default)); + AssertExtensions.Throws("source", () => source.OrderByDescending(i => i, Comparer.Default)); } [Fact] public void NullKeySelectorComparer() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderByDescending(keySelector, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderByDescending(keySelector, Comparer.Default)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/OrderByTests.cs b/src/System.Linq.Queryable/tests/OrderByTests.cs index a79af2d4530a..8e091fc376cf 100644 --- a/src/System.Linq.Queryable/tests/OrderByTests.cs +++ b/src/System.Linq.Queryable/tests/OrderByTests.cs @@ -51,28 +51,28 @@ public void FirstAndLastAreDuplicatesNullPassedAsComparer() public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.OrderBy(i => i)); + AssertExtensions.Throws("source", () => source.OrderBy(i => i)); } [Fact] public void NullKeySelector() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(keySelector)); } [Fact] public void NullSourceComparer() { IQueryable source = null; - Assert.Throws("source", () => source.OrderBy(i => i, Comparer.Default)); + AssertExtensions.Throws("source", () => source.OrderBy(i => i, Comparer.Default)); } [Fact] public void NullKeySelectorComparer() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(keySelector, Comparer.Default)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(keySelector, Comparer.Default)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/Queryable.cs b/src/System.Linq.Queryable/tests/Queryable.cs index e08ccf6aba1e..9bd79a534db3 100644 --- a/src/System.Linq.Queryable/tests/Queryable.cs +++ b/src/System.Linq.Queryable/tests/Queryable.cs @@ -28,13 +28,13 @@ public void AsQueryableT() [Fact] public void NullAsQueryableT() { - Assert.Throws("source", () => ((IEnumerable)null).AsQueryable()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).AsQueryable()); } [Fact] public void NullAsQueryable() { - Assert.Throws("source", () => ((IEnumerable)null).AsQueryable()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).AsQueryable()); } private class NonGenericEnumerableSoWeDontNeedADependencyOnTheAssemblyWithNonGeneric : IEnumerable diff --git a/src/System.Linq.Queryable/tests/ReverseTests.cs b/src/System.Linq.Queryable/tests/ReverseTests.cs index 6eb937c398a9..70b314a74f3c 100644 --- a/src/System.Linq.Queryable/tests/ReverseTests.cs +++ b/src/System.Linq.Queryable/tests/ReverseTests.cs @@ -11,7 +11,7 @@ public class ReverseTests : EnumerableBasedTests [Fact] public void InvalidArguments() { - Assert.Throws("source", () => ((IQueryable)null).Reverse()); + AssertExtensions.Throws("source", () => ((IQueryable)null).Reverse()); } [Theory] diff --git a/src/System.Linq.Queryable/tests/SelectManyTests.cs b/src/System.Linq.Queryable/tests/SelectManyTests.cs index 316137c87a71..9daf47d3ad27 100644 --- a/src/System.Linq.Queryable/tests/SelectManyTests.cs +++ b/src/System.Linq.Queryable/tests/SelectManyTests.cs @@ -60,70 +60,70 @@ public void ResultSelector() public void NullResultSelector() { Expression> resultSelector = null; - Assert.Throws("resultSelector", () => Enumerable.Empty().AsQueryable().SelectMany(e => e.total, resultSelector)); + AssertExtensions.Throws("resultSelector", () => Enumerable.Empty().AsQueryable().SelectMany(e => e.total, resultSelector)); } [Fact] public void NullResultSelectorIndexedSelector() { Expression> resultSelector = null; - Assert.Throws("resultSelector", () => Enumerable.Empty().AsQueryable().SelectMany((e, i) => e.total, resultSelector)); + AssertExtensions.Throws("resultSelector", () => Enumerable.Empty().AsQueryable().SelectMany((e, i) => e.total, resultSelector)); } [Fact] public void NullSourceWithResultSelector() { IQueryable source = null; - Assert.Throws("source", () => source.SelectMany(e => e.total, (e, f) => f.ToString())); + AssertExtensions.Throws("source", () => source.SelectMany(e => e.total, (e, f) => f.ToString())); } [Fact] public void NullCollectionSelector() { Expression>> collectionSelector = null; - Assert.Throws("collectionSelector", () => Enumerable.Empty().AsQueryable().SelectMany(collectionSelector, (e, f) => f.ToString())); + AssertExtensions.Throws("collectionSelector", () => Enumerable.Empty().AsQueryable().SelectMany(collectionSelector, (e, f) => f.ToString())); } [Fact] public void NullIndexedCollectionSelector() { Expression>> collectionSelector = null; - Assert.Throws("collectionSelector", () => Enumerable.Empty().AsQueryable().SelectMany(collectionSelector, (e, f) => f.ToString())); + AssertExtensions.Throws("collectionSelector", () => Enumerable.Empty().AsQueryable().SelectMany(collectionSelector, (e, f) => f.ToString())); } [Fact] public void NullSource() { IQueryable source = null; - Assert.Throws("source", () => source.SelectMany(e => e.total)); + AssertExtensions.Throws("source", () => source.SelectMany(e => e.total)); } [Fact] public void NullSourceIndexedSelector() { IQueryable source = null; - Assert.Throws("source", () => source.SelectMany((e, i) => e.total)); + AssertExtensions.Throws("source", () => source.SelectMany((e, i) => e.total)); } [Fact] public void NullSourceIndexedSelectorWithResultSelector() { IQueryable source = null; - Assert.Throws("source", () => source.SelectMany((e, i) => e.total, (e, f) => f.ToString())); + AssertExtensions.Throws("source", () => source.SelectMany((e, i) => e.total, (e, f) => f.ToString())); } [Fact] public void NullSelector() { Expression>> selector = null; - Assert.Throws("selector", () => new StringWithIntArray[0].AsQueryable().SelectMany(selector)); + AssertExtensions.Throws("selector", () => new StringWithIntArray[0].AsQueryable().SelectMany(selector)); } [Fact] public void NullIndexedSelector() { Expression>> selector = null; - Assert.Throws("selector", () => new StringWithIntArray[0].AsQueryable().SelectMany(selector)); + AssertExtensions.Throws("selector", () => new StringWithIntArray[0].AsQueryable().SelectMany(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SelectTests.cs b/src/System.Linq.Queryable/tests/SelectTests.cs index 17249a24fe52..2f6a50698ee7 100644 --- a/src/System.Linq.Queryable/tests/SelectTests.cs +++ b/src/System.Linq.Queryable/tests/SelectTests.cs @@ -39,7 +39,7 @@ public void SelectPropertyUsingIndex() public void Select_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable source = null; - Assert.Throws("source", () => source.Select(i => i + 1)); + AssertExtensions.Throws("source", () => source.Select(i => i + 1)); } [Fact] @@ -48,14 +48,14 @@ public void Select_SelectorIsNull_ArgumentNullExceptionThrown_Indexed() IQueryable source = Enumerable.Range(1, 10).AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => source.Select(selector)); + AssertExtensions.Throws("selector", () => source.Select(selector)); } [Fact] public void Select_SourceIsNull_ArgumentNullExceptionThrown_Indexed() { IQueryable source = null; - Assert.Throws("source", () => source.Select((e, i) => i + 1)); + AssertExtensions.Throws("source", () => source.Select((e, i) => i + 1)); } [Fact] @@ -64,7 +64,7 @@ public void Select_SelectorIsNull_ArgumentNullExceptionThrown() IQueryable source = Enumerable.Range(1, 10).AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => source.Select(selector)); + AssertExtensions.Throws("selector", () => source.Select(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SequenceEqualTests.cs b/src/System.Linq.Queryable/tests/SequenceEqualTests.cs index 5af6692697c6..1b136806ec09 100644 --- a/src/System.Linq.Queryable/tests/SequenceEqualTests.cs +++ b/src/System.Linq.Queryable/tests/SequenceEqualTests.cs @@ -42,8 +42,8 @@ public void FirstSourceNull() { IQueryable first = null; int[] second = { }; - Assert.Throws("source1", () => first.SequenceEqual(second.AsQueryable())); - Assert.Throws("source1", () => first.SequenceEqual(second.AsQueryable(), null)); + AssertExtensions.Throws("source1", () => first.SequenceEqual(second.AsQueryable())); + AssertExtensions.Throws("source1", () => first.SequenceEqual(second.AsQueryable(), null)); } [Fact] @@ -51,8 +51,8 @@ public void SecondSourceNull() { int[] first = { }; IQueryable second = null; - Assert.Throws("source2", () => first.AsQueryable().SequenceEqual(second)); - Assert.Throws("source2", () => first.AsQueryable().SequenceEqual(second, null)); + AssertExtensions.Throws("source2", () => first.AsQueryable().SequenceEqual(second)); + AssertExtensions.Throws("source2", () => first.AsQueryable().SequenceEqual(second, null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SingleOrDefaultTests.cs b/src/System.Linq.Queryable/tests/SingleOrDefaultTests.cs index 0987862799fe..f76fc566fab9 100644 --- a/src/System.Linq.Queryable/tests/SingleOrDefaultTests.cs +++ b/src/System.Linq.Queryable/tests/SingleOrDefaultTests.cs @@ -41,8 +41,8 @@ public void FindSingleMatch(int target, int range) public void ThrowsOnNullSource() { IQueryable source = null; - Assert.Throws("source", () => source.SingleOrDefault()); - Assert.Throws("source", () => source.SingleOrDefault(i => i % 2 == 0)); + AssertExtensions.Throws("source", () => source.SingleOrDefault()); + AssertExtensions.Throws("source", () => source.SingleOrDefault(i => i % 2 == 0)); } [Fact] @@ -50,7 +50,7 @@ public void ThrowsOnNullPredicate() { int[] source = { }; Expression> nullPredicate = null; - Assert.Throws("predicate", () => source.AsQueryable().SingleOrDefault(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.AsQueryable().SingleOrDefault(nullPredicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SingleTests.cs b/src/System.Linq.Queryable/tests/SingleTests.cs index d8de9554858f..c1c8ea6c0db5 100644 --- a/src/System.Linq.Queryable/tests/SingleTests.cs +++ b/src/System.Linq.Queryable/tests/SingleTests.cs @@ -63,8 +63,8 @@ public void FindSingleMatch(int target, int range) public void ThrowsOnNullSource() { IQueryable source = null; - Assert.Throws("source", () => source.Single()); - Assert.Throws("source", () => source.Single(i => i % 2 == 0)); + AssertExtensions.Throws("source", () => source.Single()); + AssertExtensions.Throws("source", () => source.Single(i => i % 2 == 0)); } [Fact] @@ -72,7 +72,7 @@ public void ThrowsOnNullPredicate() { int[] source = { }; Expression> nullPredicate = null; - Assert.Throws("predicate", () => source.AsQueryable().Single(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.AsQueryable().Single(nullPredicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SkipLastTests.cs b/src/System.Linq.Queryable/tests/SkipLastTests.cs index 07be904a0ed2..39de7f55794b 100644 --- a/src/System.Linq.Queryable/tests/SkipLastTests.cs +++ b/src/System.Linq.Queryable/tests/SkipLastTests.cs @@ -22,7 +22,7 @@ public void SkipLast(IQueryable source, int count) [Fact] public void SkipLastThrowsOnNull() { - Assert.Throws("source", () => ((IQueryable)null).SkipLast(3)); + AssertExtensions.Throws("source", () => ((IQueryable)null).SkipLast(3)); } } -} \ No newline at end of file +} diff --git a/src/System.Linq.Queryable/tests/SkipTests.cs b/src/System.Linq.Queryable/tests/SkipTests.cs index d2b5274f97d9..665c31c194e4 100644 --- a/src/System.Linq.Queryable/tests/SkipTests.cs +++ b/src/System.Linq.Queryable/tests/SkipTests.cs @@ -23,7 +23,7 @@ public void SkipExcessive() [Fact] public void SkipThrowsOnNull() { - Assert.Throws("source", () => ((IQueryable)null).Skip(3)); + AssertExtensions.Throws("source", () => ((IQueryable)null).Skip(3)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SkipWhileTests.cs b/src/System.Linq.Queryable/tests/SkipWhileTests.cs index 83dfa30c740e..3d48721c02ac 100644 --- a/src/System.Linq.Queryable/tests/SkipWhileTests.cs +++ b/src/System.Linq.Queryable/tests/SkipWhileTests.cs @@ -26,10 +26,10 @@ public void SkipWhileAllFalse() [Fact] public void SkipWhileThrowsOnNull() { - Assert.Throws("source", () => ((IQueryable)null).SkipWhile(i => i < 40)); - Assert.Throws("source", () => ((IQueryable)null).SkipWhile((i, idx) => i == idx)); - Assert.Throws("predicate", () => Enumerable.Range(0, 20).AsQueryable().SkipWhile((Expression>)null)); - Assert.Throws("predicate", () => Enumerable.Range(0, 20).AsQueryable().SkipWhile((Expression>)null)); + AssertExtensions.Throws("source", () => ((IQueryable)null).SkipWhile(i => i < 40)); + AssertExtensions.Throws("source", () => ((IQueryable)null).SkipWhile((i, idx) => i == idx)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 20).AsQueryable().SkipWhile((Expression>)null)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 20).AsQueryable().SkipWhile((Expression>)null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/SumTests.cs b/src/System.Linq.Queryable/tests/SumTests.cs index 24f874b3f5bc..bb6578ef7c56 100644 --- a/src/System.Linq.Queryable/tests/SumTests.cs +++ b/src/System.Linq.Queryable/tests/SumTests.cs @@ -13,80 +13,80 @@ public class SumTests : EnumerableBasedTests public void SumOfInt_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceInt = null; - Assert.Throws("source", () => sourceInt.Sum()); - Assert.Throws("source", () => sourceInt.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceInt.Sum()); + AssertExtensions.Throws("source", () => sourceInt.Sum(x => x)); } [Fact] public void SumOfNullableOfInt_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableInt = null; - Assert.Throws("source", () => sourceNullableInt.Sum()); - Assert.Throws("source", () => sourceNullableInt.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableInt.Sum()); + AssertExtensions.Throws("source", () => sourceNullableInt.Sum(x => x)); } [Fact] public void SumOfLong_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceLong = null; - Assert.Throws("source", () => sourceLong.Sum()); - Assert.Throws("source", () => sourceLong.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceLong.Sum()); + AssertExtensions.Throws("source", () => sourceLong.Sum(x => x)); } [Fact] public void SumOfNullableOfLong_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableLong = null; - Assert.Throws("source", () => sourceNullableLong.Sum()); - Assert.Throws("source", () => sourceNullableLong.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableLong.Sum()); + AssertExtensions.Throws("source", () => sourceNullableLong.Sum(x => x)); } [Fact] public void SumOfFloat_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceFloat = null; - Assert.Throws("source", () => sourceFloat.Sum()); - Assert.Throws("source", () => sourceFloat.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceFloat.Sum()); + AssertExtensions.Throws("source", () => sourceFloat.Sum(x => x)); } [Fact] public void SumOfNullableOfFloat_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableFloat = null; - Assert.Throws("source", () => sourceNullableFloat.Sum()); - Assert.Throws("source", () => sourceNullableFloat.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableFloat.Sum()); + AssertExtensions.Throws("source", () => sourceNullableFloat.Sum(x => x)); } [Fact] public void SumOfDouble_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceDouble = null; - Assert.Throws("source", () => sourceDouble.Sum()); - Assert.Throws("source", () => sourceDouble.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceDouble.Sum()); + AssertExtensions.Throws("source", () => sourceDouble.Sum(x => x)); } [Fact] public void SumOfNullableOfDouble_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableDouble = null; - Assert.Throws("source", () => sourceNullableDouble.Sum()); - Assert.Throws("source", () => sourceNullableDouble.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableDouble.Sum()); + AssertExtensions.Throws("source", () => sourceNullableDouble.Sum(x => x)); } [Fact] public void SumOfDecimal_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceDecimal = null; - Assert.Throws("source", () => sourceDecimal.Sum()); - Assert.Throws("source", () => sourceDecimal.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceDecimal.Sum()); + AssertExtensions.Throws("source", () => sourceDecimal.Sum(x => x)); } [Fact] public void SumOfNullableOfDecimal_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableDecimal = null; - Assert.Throws("source", () => sourceNullableDecimal.Sum()); - Assert.Throws("source", () => sourceNullableDecimal.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableDecimal.Sum()); + AssertExtensions.Throws("source", () => sourceNullableDecimal.Sum(x => x)); } [Fact] @@ -94,7 +94,7 @@ public void SumOfInt_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceInt = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceInt.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceInt.Sum(selector)); } [Fact] @@ -102,7 +102,7 @@ public void SumOfNullableOfInt_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableInt = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceNullableInt.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableInt.Sum(selector)); } [Fact] @@ -110,7 +110,7 @@ public void SumOfLong_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceLong = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceLong.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceLong.Sum(selector)); } [Fact] @@ -118,7 +118,7 @@ public void SumOfNullableOfLong_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableLong = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceNullableLong.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableLong.Sum(selector)); } [Fact] @@ -126,7 +126,7 @@ public void SumOfFloat_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceFloat = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceFloat.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceFloat.Sum(selector)); } [Fact] @@ -134,7 +134,7 @@ public void SumOfNullableOfFloat_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableFloat = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceNullableFloat.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableFloat.Sum(selector)); } [Fact] @@ -142,7 +142,7 @@ public void SumOfDouble_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceDouble = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceDouble.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceDouble.Sum(selector)); } [Fact] @@ -150,7 +150,7 @@ public void SumOfNullableOfDouble_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableDouble = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceNullableDouble.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableDouble.Sum(selector)); } [Fact] @@ -158,7 +158,7 @@ public void SumOfDecimal_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceDecimal = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceDecimal.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceDecimal.Sum(selector)); } [Fact] @@ -166,7 +166,7 @@ public void SumOfNullableOfDecimal_SelectorIsNull_ArgumentNullExceptionThrown() { IQueryable sourceNullableDecimal = Enumerable.Empty().AsQueryable(); Expression> selector = null; - Assert.Throws("selector", () => sourceNullableDecimal.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableDecimal.Sum(selector)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/System.Linq.Queryable.Tests.csproj b/src/System.Linq.Queryable/tests/System.Linq.Queryable.Tests.csproj index 7d888f29eafa..d4ba876f4f68 100644 --- a/src/System.Linq.Queryable/tests/System.Linq.Queryable.Tests.csproj +++ b/src/System.Linq.Queryable/tests/System.Linq.Queryable.Tests.csproj @@ -62,6 +62,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Linq\SkipTakeData.cs diff --git a/src/System.Linq.Queryable/tests/TakeLastTests.cs b/src/System.Linq.Queryable/tests/TakeLastTests.cs index d70305a13295..fa6ddf9fb3c9 100644 --- a/src/System.Linq.Queryable/tests/TakeLastTests.cs +++ b/src/System.Linq.Queryable/tests/TakeLastTests.cs @@ -22,7 +22,7 @@ public void TakeLast(IQueryable equivalent, int count) [Fact] public void TakeLastThrowsOnNull() { - Assert.Throws("source", () => ((IQueryable)null).TakeLast(3)); + AssertExtensions.Throws("source", () => ((IQueryable)null).TakeLast(3)); } } -} \ No newline at end of file +} diff --git a/src/System.Linq.Queryable/tests/TakeTests.cs b/src/System.Linq.Queryable/tests/TakeTests.cs index fe812fd8be26..47cde2ad81b4 100644 --- a/src/System.Linq.Queryable/tests/TakeTests.cs +++ b/src/System.Linq.Queryable/tests/TakeTests.cs @@ -21,7 +21,7 @@ public void SourceNonEmptyTakeAllButOne() public void ThrowsOnNullSource() { IQueryable source = null; - Assert.Throws("source", () => source.Take(5)); + AssertExtensions.Throws("source", () => source.Take(5)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/TakeWhileTests.cs b/src/System.Linq.Queryable/tests/TakeWhileTests.cs index a793bfb0beac..68d2316c3be9 100644 --- a/src/System.Linq.Queryable/tests/TakeWhileTests.cs +++ b/src/System.Linq.Queryable/tests/TakeWhileTests.cs @@ -31,7 +31,7 @@ public void SourceNonEmptyPredicateTrueSomeFalseSecondWithIndex() public void ThrowsOnNullSource() { IQueryable source = null; - Assert.Throws("source", () => source.TakeWhile(x => true)); + AssertExtensions.Throws("source", () => source.TakeWhile(x => true)); } [Fact] @@ -39,14 +39,14 @@ public void ThrowsOnNullPredicate() { IQueryable source = new[] { 1, 2, 3 }.AsQueryable(); Expression> nullPredicate = null; - Assert.Throws("predicate", () => source.TakeWhile(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.TakeWhile(nullPredicate)); } [Fact] public void ThrowsOnNullSourceIndexed() { IQueryable source = null; - Assert.Throws("source", () => source.TakeWhile((x, i) => true)); + AssertExtensions.Throws("source", () => source.TakeWhile((x, i) => true)); } [Fact] @@ -54,7 +54,7 @@ public void ThrowsOnNullPredicateIndexed() { IQueryable source = new[] { 1, 2, 3 }.AsQueryable(); Expression> nullPredicate = null; - Assert.Throws("predicate", () => source.TakeWhile(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.TakeWhile(nullPredicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ThenByDescendingTests.cs b/src/System.Linq.Queryable/tests/ThenByDescendingTests.cs index 9fe971788efb..09ed1d903340 100644 --- a/src/System.Linq.Queryable/tests/ThenByDescendingTests.cs +++ b/src/System.Linq.Queryable/tests/ThenByDescendingTests.cs @@ -37,28 +37,28 @@ public void AscendingKeyThenDescendingKey() public void NullSource() { IOrderedQueryable source = null; - Assert.Throws("source", () => source.ThenByDescending(i => i)); + AssertExtensions.Throws("source", () => source.ThenByDescending(i => i)); } [Fact] public void NullKeySelector() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenByDescending(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenByDescending(keySelector)); } [Fact] public void NullSourceComparer() { IOrderedQueryable source = null; - Assert.Throws("source", () => source.ThenByDescending(i => i, null)); + AssertExtensions.Throws("source", () => source.ThenByDescending(i => i, null)); } [Fact] public void NullKeySelectorComparer() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenByDescending(keySelector, null)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenByDescending(keySelector, null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ThenByTests.cs b/src/System.Linq.Queryable/tests/ThenByTests.cs index c2ad461617b4..44da0abe6f8f 100644 --- a/src/System.Linq.Queryable/tests/ThenByTests.cs +++ b/src/System.Linq.Queryable/tests/ThenByTests.cs @@ -37,28 +37,28 @@ public void SecondaryKeysAreUnique() public void NullSource() { IOrderedQueryable source = null; - Assert.Throws("source", () => source.ThenBy(i => i)); + AssertExtensions.Throws("source", () => source.ThenBy(i => i)); } [Fact] public void NullKeySelector() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenBy(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenBy(keySelector)); } [Fact] public void NullSourceComparer() { IOrderedQueryable source = null; - Assert.Throws("source", () => source.ThenBy(i => i, null)); + AssertExtensions.Throws("source", () => source.ThenBy(i => i, null)); } [Fact] public void NullKeySelectorComparer() { Expression> keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenBy(keySelector, null)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().AsQueryable().OrderBy(e => e).ThenBy(keySelector, null)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/UnionTests.cs b/src/System.Linq.Queryable/tests/UnionTests.cs index a1e95256c329..cdd198693bc8 100644 --- a/src/System.Linq.Queryable/tests/UnionTests.cs +++ b/src/System.Linq.Queryable/tests/UnionTests.cs @@ -27,7 +27,7 @@ public void FirstNullCustomComparer() IQueryable first = null; string[] second = { "ttaM", "Charlie", "Bbo" }; - var ane = Assert.Throws("source1", () => first.Union(second.AsQueryable(), new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("source1", () => first.Union(second.AsQueryable(), new AnagramEqualityComparer())); } [Fact] @@ -36,7 +36,7 @@ public void SecondNullCustomComparer() string[] first = { "Bob", "Robert", "Tim", "Matt", "miT" }; IQueryable second = null; - var ane = Assert.Throws("source2", () => first.AsQueryable().Union(second, new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("source2", () => first.AsQueryable().Union(second, new AnagramEqualityComparer())); } [Fact] @@ -45,7 +45,7 @@ public void FirstNullNoComparer() IQueryable first = null; string[] second = { "ttaM", "Charlie", "Bbo" }; - var ane = Assert.Throws("source1", () => first.Union(second.AsQueryable())); + var ane = AssertExtensions.Throws("source1", () => first.Union(second.AsQueryable())); } [Fact] @@ -54,7 +54,7 @@ public void SecondNullNoComparer() string[] first = { "Bob", "Robert", "Tim", "Matt", "miT" }; IQueryable second = null; - var ane = Assert.Throws("source2", () => first.AsQueryable().Union(second)); + var ane = AssertExtensions.Throws("source2", () => first.AsQueryable().Union(second)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/WhereTests.cs b/src/System.Linq.Queryable/tests/WhereTests.cs index 4cee096603fc..7c6c4181412d 100644 --- a/src/System.Linq.Queryable/tests/WhereTests.cs +++ b/src/System.Linq.Queryable/tests/WhereTests.cs @@ -13,8 +13,8 @@ public class WhereTests : EnumerableBasedTests public void Where_SourceIsNull_ArgumentNullExceptionThrown() { IQueryable source = null; - Assert.Throws("source", () => source.Where(i => true)); - Assert.Throws("source", () => source.Where((v, i) => true)); + AssertExtensions.Throws("source", () => source.Where(i => true)); + AssertExtensions.Throws("source", () => source.Where((v, i) => true)); } [Fact] @@ -24,8 +24,8 @@ public void Where_PredicateIsNull_ArgumentNullExceptionThrown() Expression> simplePredicate = null; Expression> complexPredicate = null; - Assert.Throws("predicate", () => source.Where(simplePredicate)); - Assert.Throws("predicate", () => source.Where(complexPredicate)); + AssertExtensions.Throws("predicate", () => source.Where(simplePredicate)); + AssertExtensions.Throws("predicate", () => source.Where(complexPredicate)); } [Fact] diff --git a/src/System.Linq.Queryable/tests/ZipTests.cs b/src/System.Linq.Queryable/tests/ZipTests.cs index 669d82c3e502..924bc50f81eb 100644 --- a/src/System.Linq.Queryable/tests/ZipTests.cs +++ b/src/System.Linq.Queryable/tests/ZipTests.cs @@ -23,7 +23,7 @@ public void FirstIsNull() { IQueryable first = null; int[] second = new int[] { 2, 5, 9 }; - Assert.Throws("source1", () => first.Zip(second.AsQueryable(), (x, y) => x + y)); + AssertExtensions.Throws("source1", () => first.Zip(second.AsQueryable(), (x, y) => x + y)); } [Fact] @@ -31,7 +31,7 @@ public void SecondIsNull() { int[] first = new int[] { 1, 2, 3 }; IQueryable second = null; - Assert.Throws("source2", () => first.AsQueryable().Zip(second, (x, y) => x + y)); + AssertExtensions.Throws("source2", () => first.AsQueryable().Zip(second, (x, y) => x + y)); } [Fact] @@ -40,7 +40,7 @@ public void FuncIsNull() IQueryable first = new int[] { 1, 2, 3 }.AsQueryable(); IQueryable second = new int[] { 2, 4, 6 }.AsQueryable(); Expression> func = null; - Assert.Throws("resultSelector", () => first.Zip(second, func)); + AssertExtensions.Throws("resultSelector", () => first.Zip(second, func)); } [Fact] diff --git a/src/System.Linq/tests/AggregateTests.cs b/src/System.Linq/tests/AggregateTests.cs index 5d6d5873c0d3..3c663e0dc4ba 100644 --- a/src/System.Linq/tests/AggregateTests.cs +++ b/src/System.Linq/tests/AggregateTests.cs @@ -186,25 +186,25 @@ public void MultipleElementsSeedResultSelectorRunOnce() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).Aggregate((x, y) => x + y)); - Assert.Throws("source", () => ((IEnumerable)null).Aggregate(0, (x, y) => x + y)); - Assert.Throws("source", () => ((IEnumerable)null).Aggregate(0, (x, y) => x + y, i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Aggregate((x, y) => x + y)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Aggregate(0, (x, y) => x + y)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Aggregate(0, (x, y) => x + y, i => i)); } [Fact] public void NullFunc() { Func func = null; - Assert.Throws("func", () => Enumerable.Range(0, 3).Aggregate(func)); - Assert.Throws("func", () => Enumerable.Range(0, 3).Aggregate(0, func)); - Assert.Throws("func", () => Enumerable.Range(0, 3).Aggregate(0, func, i => i)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).Aggregate(func)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).Aggregate(0, func)); + AssertExtensions.Throws("func", () => Enumerable.Range(0, 3).Aggregate(0, func, i => i)); } [Fact] public void NullResultSelector() { Func resultSelector = null; - Assert.Throws("resultSelector", () => Enumerable.Range(0, 3).Aggregate(0, (x, y) => x + y, resultSelector)); + AssertExtensions.Throws("resultSelector", () => Enumerable.Range(0, 3).Aggregate(0, (x, y) => x + y, resultSelector)); } } } diff --git a/src/System.Linq/tests/AllTests.cs b/src/System.Linq/tests/AllTests.cs index 4c1f069bfc66..54a0e673c597 100644 --- a/src/System.Linq/tests/AllTests.cs +++ b/src/System.Linq/tests/AllTests.cs @@ -66,14 +66,14 @@ public void AllRunOnce(IEnumerable source, Func predicate, bool [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).All(i => i != 0)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).All(i => i != 0)); } [Fact] public void NullPredicate_ThrowsArgumentNullException() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).All(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).All(predicate)); } } } diff --git a/src/System.Linq/tests/AnyTests.cs b/src/System.Linq/tests/AnyTests.cs index 9355ba83ab1b..9337da19f22f 100644 --- a/src/System.Linq/tests/AnyTests.cs +++ b/src/System.Linq/tests/AnyTests.cs @@ -88,15 +88,15 @@ public void NullObjectsInArray_Included() [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Any()); - Assert.Throws("source", () => ((IEnumerable)null).Any(i => i != 0)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Any()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Any(i => i != 0)); } [Fact] public void NullPredicate_ThrowsArgumentNullException() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).Any(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).Any(predicate)); } } } diff --git a/src/System.Linq/tests/AppendPrependTests.cs b/src/System.Linq/tests/AppendPrependTests.cs index d701fe3af9d4..b39bc7064552 100644 --- a/src/System.Linq/tests/AppendPrependTests.cs +++ b/src/System.Linq/tests/AppendPrependTests.cs @@ -114,8 +114,8 @@ public void ForcedToEnumeratorDoesntEnumerateMultipleAppendsAndPrepends() [Fact] public void SourceNull() { - Assert.Throws("source", () => ((IEnumerable)null).Append(1)); - Assert.Throws("source", () => ((IEnumerable)null).Prepend(1)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Append(1)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Prepend(1)); } [Fact] diff --git a/src/System.Linq/tests/AverageTests.cs b/src/System.Linq/tests/AverageTests.cs index 4d84492581f7..630bea11aa26 100644 --- a/src/System.Linq/tests/AverageTests.cs +++ b/src/System.Linq/tests/AverageTests.cs @@ -58,15 +58,15 @@ public void NullableFoatRunOnce(float?[] source, float? expected) [Fact] public void NullableFloat_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void NullableFloat_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } [Fact] @@ -95,15 +95,15 @@ public void Int_EmptySource_ThrowsInvalidOperationException() [Fact] public void Int_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void Int_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } public static IEnumerable Int_TestData() @@ -163,15 +163,15 @@ public void NullableInt(int?[] source, double? expected) [Fact] public void NullableInt_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void NullableInt_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } [Fact] @@ -200,15 +200,15 @@ public void Long_EmptySource_ThrowsInvalidOperationException() [Fact] public void Long_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void Long_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } public static IEnumerable Long_TestData() @@ -269,15 +269,15 @@ public void NullableLong(long?[] source, double? expected) [Fact] public void NullableLong_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void NullableLong_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } [Fact] @@ -306,15 +306,15 @@ public void Double_EmptySource_ThrowsInvalidOperationException() [Fact] public void Double_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void Double_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } public static IEnumerable Double_TestData() @@ -369,15 +369,15 @@ public void NullableDouble(double?[] source, double? expected) [Fact] public void NullableDouble_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void NullableDouble_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } [Fact] @@ -406,15 +406,15 @@ public void Decimal_EmptySource_ThrowsInvalidOperationException() [Fact] public void Decimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void Decimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } public static IEnumerable Decimal_TestData() @@ -467,15 +467,15 @@ public void NullableDecimal(decimal?[] source, decimal? expected) [Fact] public void NullableDecimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void NullableDecimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } [Fact] @@ -512,15 +512,15 @@ public void Float_EmptySource_ThrowsInvalidOperationException() [Fact] public void Float_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Average()); - Assert.Throws("source", () => ((IEnumerable)null).Average(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Average(i => i)); } [Fact] public void Float_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Average(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Average(selector)); } public static IEnumerable Float_TestData() diff --git a/src/System.Linq/tests/CastTests.cs b/src/System.Linq/tests/CastTests.cs index 0d74305956c2..7606c312906b 100644 --- a/src/System.Linq/tests/CastTests.cs +++ b/src/System.Linq/tests/CastTests.cs @@ -225,7 +225,7 @@ public void CastingNullToNonnullableIsNullReferenceException() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).Cast()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Cast()); } [Fact] diff --git a/src/System.Linq/tests/ConcatTests.cs b/src/System.Linq/tests/ConcatTests.cs index 68394debe70e..1d5e99697a2f 100644 --- a/src/System.Linq/tests/ConcatTests.cs +++ b/src/System.Linq/tests/ConcatTests.cs @@ -58,14 +58,14 @@ public void ForcedToEnumeratorDoesntEnumerate() [Fact] public void FirstNull() { - Assert.Throws("first", () => ((IEnumerable)null).Concat(Enumerable.Range(0, 0))); - Assert.Throws("first", () => ((IEnumerable)null).Concat(null)); // If both inputs are null, throw for "first" first + AssertExtensions.Throws("first", () => ((IEnumerable)null).Concat(Enumerable.Range(0, 0))); + AssertExtensions.Throws("first", () => ((IEnumerable)null).Concat(null)); // If both inputs are null, throw for "first" first } [Fact] public void SecondNull() { - Assert.Throws("second", () => Enumerable.Range(0, 0).Concat(null)); + AssertExtensions.Throws("second", () => Enumerable.Range(0, 0).Concat(null)); } [Theory] diff --git a/src/System.Linq/tests/ContainsTests.cs b/src/System.Linq/tests/ContainsTests.cs index 74731360452b..1ae6ce88e63d 100644 --- a/src/System.Linq/tests/ContainsTests.cs +++ b/src/System.Linq/tests/ContainsTests.cs @@ -111,8 +111,8 @@ public void NullSource_ThrowsArgumentNullException() { IEnumerable source = null; - Assert.Throws("source", () => source.Contains(42)); - Assert.Throws("source", () => source.Contains(42, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => source.Contains(42)); + AssertExtensions.Throws("source", () => source.Contains(42, EqualityComparer.Default)); } [Fact] diff --git a/src/System.Linq/tests/CountTests.cs b/src/System.Linq/tests/CountTests.cs index dc402c0dfd15..ae1f8918bc3f 100644 --- a/src/System.Linq/tests/CountTests.cs +++ b/src/System.Linq/tests/CountTests.cs @@ -119,15 +119,15 @@ public static IEnumerable CountsAndTallies() [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Count()); - Assert.Throws("source", () => ((IEnumerable)null).Count(i => i != 0)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Count()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Count(i => i != 0)); } [Fact] public void NullPredicate_ThrowsArgumentNullException() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).Count(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).Count(predicate)); } } } diff --git a/src/System.Linq/tests/DefaultIfEmptyTests.cs b/src/System.Linq/tests/DefaultIfEmptyTests.cs index b3fd7c96857c..87f582dd0fc8 100644 --- a/src/System.Linq/tests/DefaultIfEmptyTests.cs +++ b/src/System.Linq/tests/DefaultIfEmptyTests.cs @@ -94,8 +94,8 @@ public void NullSource_ThrowsArgumentNullException() { IEnumerable source = null; - Assert.Throws("source", () => source.DefaultIfEmpty()); - Assert.Throws("source", () => source.DefaultIfEmpty(42)); + AssertExtensions.Throws("source", () => source.DefaultIfEmpty()); + AssertExtensions.Throws("source", () => source.DefaultIfEmpty(42)); } [Fact] diff --git a/src/System.Linq/tests/DistinctTests.cs b/src/System.Linq/tests/DistinctTests.cs index 47a8bdbf4f52..de7863f21aab 100644 --- a/src/System.Linq/tests/DistinctTests.cs +++ b/src/System.Linq/tests/DistinctTests.cs @@ -149,7 +149,7 @@ public void NullSource() { string[] source = null; - Assert.Throws("source", () => source.Distinct()); + AssertExtensions.Throws("source", () => source.Distinct()); } [Fact] @@ -157,7 +157,7 @@ public void NullSourceCustomComparer() { string[] source = null; - Assert.Throws("source", () => source.Distinct(StringComparer.Ordinal)); + AssertExtensions.Throws("source", () => source.Distinct(StringComparer.Ordinal)); } [Fact] diff --git a/src/System.Linq/tests/ElementAtOrDefaultTests.cs b/src/System.Linq/tests/ElementAtOrDefaultTests.cs index 697b4c64b78e..8d374f3234d2 100644 --- a/src/System.Linq/tests/ElementAtOrDefaultTests.cs +++ b/src/System.Linq/tests/ElementAtOrDefaultTests.cs @@ -78,7 +78,7 @@ public void NullableArray_ValidIndex_ReturnsCorrectObjecvt() [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).ElementAtOrDefault(2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).ElementAtOrDefault(2)); } } } diff --git a/src/System.Linq/tests/ElementAtTests.cs b/src/System.Linq/tests/ElementAtTests.cs index c2421d08420a..7868a029fdb9 100644 --- a/src/System.Linq/tests/ElementAtTests.cs +++ b/src/System.Linq/tests/ElementAtTests.cs @@ -56,13 +56,13 @@ public void ElementAtRunOnce(IEnumerable source, int index, int expected) [Fact] public void InvalidIndex_ThrowsArgumentOutOfRangeException() { - Assert.Throws("index", () => new int?[] { 9, 8 }.ElementAt(-1)); - Assert.Throws("index", () => new int[] { 1, 2, 3, 4 }.ElementAt(4)); - Assert.Throws("index", () => new int[0].ElementAt(0)); + AssertExtensions.Throws("index", () => new int?[] { 9, 8 }.ElementAt(-1)); + AssertExtensions.Throws("index", () => new int[] { 1, 2, 3, 4 }.ElementAt(4)); + AssertExtensions.Throws("index", () => new int[0].ElementAt(0)); - Assert.Throws("index", () => NumberRangeGuaranteedNotCollectionType(-4, 5).ElementAt(-1)); - Assert.Throws("index", () => NumberRangeGuaranteedNotCollectionType(5, 5).ElementAt(5)); - Assert.Throws("index", () => NumberRangeGuaranteedNotCollectionType(0, 0).ElementAt(0)); + AssertExtensions.Throws("index", () => NumberRangeGuaranteedNotCollectionType(-4, 5).ElementAt(-1)); + AssertExtensions.Throws("index", () => NumberRangeGuaranteedNotCollectionType(5, 5).ElementAt(5)); + AssertExtensions.Throws("index", () => NumberRangeGuaranteedNotCollectionType(0, 0).ElementAt(0)); } @@ -78,7 +78,7 @@ public void NullableArray_ValidIndex_ReturnsCorrectObject() [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).ElementAt(2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).ElementAt(2)); } } } diff --git a/src/System.Linq/tests/EmptyPartitionTests.cs b/src/System.Linq/tests/EmptyPartitionTests.cs index 1559fe729930..4553e57da009 100644 --- a/src/System.Linq/tests/EmptyPartitionTests.cs +++ b/src/System.Linq/tests/EmptyPartitionTests.cs @@ -51,7 +51,7 @@ public void TakeSame() [Fact] public void ElementAtThrows() { - Assert.Throws("index", () => GetEmptyPartition().ElementAt(0)); + AssertExtensions.Throws("index", () => GetEmptyPartition().ElementAt(0)); } [Fact] diff --git a/src/System.Linq/tests/ExceptTests.cs b/src/System.Linq/tests/ExceptTests.cs index 7711c0bbb439..814cd9aad251 100644 --- a/src/System.Linq/tests/ExceptTests.cs +++ b/src/System.Linq/tests/ExceptTests.cs @@ -103,8 +103,8 @@ public void FirstNull_ThrowsArgumentNullException() string[] first = null; string[] second = { "bBo", "shriC" }; - Assert.Throws("first", () => first.Except(second)); - Assert.Throws("first", () => first.Except(second, new AnagramEqualityComparer())); + AssertExtensions.Throws("first", () => first.Except(second)); + AssertExtensions.Throws("first", () => first.Except(second, new AnagramEqualityComparer())); } [Fact] @@ -113,8 +113,8 @@ public void SecondNull_ThrowsArgumentNullException() string[] first = { "Bob", "Tim", "Robert", "Chris" }; string[] second = null; - Assert.Throws("second", () => first.Except(second)); - Assert.Throws("second", () => first.Except(second, new AnagramEqualityComparer())); + AssertExtensions.Throws("second", () => first.Except(second)); + AssertExtensions.Throws("second", () => first.Except(second, new AnagramEqualityComparer())); } [Fact] diff --git a/src/System.Linq/tests/FirstOrDefaultTests.cs b/src/System.Linq/tests/FirstOrDefaultTests.cs index e8aa5f9b6105..e4e592723351 100644 --- a/src/System.Linq/tests/FirstOrDefaultTests.cs +++ b/src/System.Linq/tests/FirstOrDefaultTests.cs @@ -190,20 +190,20 @@ public void PredicateTrueForSomeRunOnce() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).FirstOrDefault()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).FirstOrDefault()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IEnumerable)null).FirstOrDefault(i => i != 2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).FirstOrDefault(i => i != 2)); } [Fact] public void NullPredicate() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).FirstOrDefault(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).FirstOrDefault(predicate)); } } } diff --git a/src/System.Linq/tests/FirstTests.cs b/src/System.Linq/tests/FirstTests.cs index 4ec47d0325c6..fed8b1f6caf2 100644 --- a/src/System.Linq/tests/FirstTests.cs +++ b/src/System.Linq/tests/FirstTests.cs @@ -187,20 +187,20 @@ public void PredicateTrueForSomeRunOnce() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).First()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).First()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IEnumerable)null).First(i => i != 2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).First(i => i != 2)); } [Fact] public void NullPredicate() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).First(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).First(predicate)); } } } diff --git a/src/System.Linq/tests/GroupByTests.cs b/src/System.Linq/tests/GroupByTests.cs index 6a218eb6c5d8..be12a60b0ed2 100644 --- a/src/System.Linq/tests/GroupByTests.cs +++ b/src/System.Linq/tests/GroupByTests.cs @@ -147,8 +147,8 @@ public void Grouping_IList_IndexGetterOutOfRange() Assert.True(e.MoveNext()); IList odds = (IList)e.Current; - Assert.Throws("index", () => odds[-1]); - Assert.Throws("index", () => odds[23]); + AssertExtensions.Throws("index", () => odds[-1]); + AssertExtensions.Throws("index", () => odds[23]); } [Fact] @@ -224,29 +224,29 @@ public void EmptySourceRunOnce() public void SourceIsNull() { Record[] source = null; - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, new AnagramEqualityComparer())); - Assert.Throws("source", () => source.GroupBy(e => e.Name, new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, new AnagramEqualityComparer())); } [Fact] public void SourceIsNullResultSelectorUsed() { Record[] source = null; - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); } [Fact] public void SourceIsNullResultSelectorUsedNoComparer() { Record[] source = null; - Assert.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum())); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, e => e.Score, (k, es) => es.Sum())); } [Fact] public void SourceIsNullResultSelectorUsedNoComparerOrElementSelector() { Record[] source = null; - Assert.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score))); + AssertExtensions.Throws("source", () => source.GroupBy(e => e.Name, (k, es) => es.Sum(e => e.Score))); } [Fact] @@ -262,8 +262,8 @@ public void KeySelectorNull() new Record { Name = "Tim", Score = 25 } }; - Assert.Throws("keySelector", () => source.GroupBy(null, e => e.Score, new AnagramEqualityComparer())); - Assert.Throws("keySelector", () => source.GroupBy(null, new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.GroupBy(null, e => e.Score, new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.GroupBy(null, new AnagramEqualityComparer())); } [Fact] @@ -279,7 +279,7 @@ public void KeySelectorNullResultSelectorUsed() new Record { Name = "Tim", Score = 25 } }; - Assert.Throws("keySelector", () => source.GroupBy(null, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.GroupBy(null, e => e.Score, (k, es) => es.Sum(), new AnagramEqualityComparer())); } [Fact] @@ -297,7 +297,7 @@ public void KeySelectorNullResultSelectorUsedNoComparer() Func keySelector = null; - Assert.Throws("keySelector", () => source.GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); + AssertExtensions.Throws("keySelector", () => source.GroupBy(keySelector, e => e.Score, (k, es) => es.Sum())); } [Fact] @@ -307,7 +307,7 @@ public void KeySelectorNullResultSelectorUsedNoElementSelector() int[] element = { 60, -10, 40, 100 }; var source = key.Zip(element, (k, e) => new Record { Name = k, Score = e }); - Assert.Throws("keySelector", () => source.GroupBy(null, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); + AssertExtensions.Throws("keySelector", () => source.GroupBy(null, (k, es) => es.Sum(e => e.Score), new AnagramEqualityComparer())); } [Fact] @@ -325,7 +325,7 @@ public void ElementSelectorNull() Func elementSelector = null; - Assert.Throws("elementSelector", () => source.GroupBy(e => e.Name, elementSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("elementSelector", () => source.GroupBy(e => e.Name, elementSelector, new AnagramEqualityComparer())); } [Fact] @@ -343,7 +343,7 @@ public void ElementSelectorNullResultSelectorUsedNoComparer() Func elementSelector = null; - Assert.Throws("elementSelector", () => source.GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum())); + AssertExtensions.Throws("elementSelector", () => source.GroupBy(e => e.Name, elementSelector, (k, es) => es.Sum())); } [Fact] @@ -360,7 +360,7 @@ public void ResultSelectorNull() Func, long> resultSelector = null; - Assert.Throws("resultSelector", () => source.GroupBy(e => e.Name, e => e.Score, resultSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => source.GroupBy(e => e.Name, e => e.Score, resultSelector, new AnagramEqualityComparer())); } [Fact] @@ -377,7 +377,7 @@ public void ResultSelectorNullNoComparer() Func, long> resultSelector = null; - Assert.Throws("resultSelector", () => source.GroupBy(e => e.Name, e => e.Score, resultSelector)); + AssertExtensions.Throws("resultSelector", () => source.GroupBy(e => e.Name, e => e.Score, resultSelector)); } [Fact] @@ -394,7 +394,7 @@ public void ResultSelectorNullNoElementSelector() Func, long> resultSelector = null; - Assert.Throws("resultSelector", () => source.GroupBy(e => e.Name, resultSelector)); + AssertExtensions.Throws("resultSelector", () => source.GroupBy(e => e.Name, resultSelector)); } [Fact] @@ -406,7 +406,7 @@ public void ResultSelectorNullNoElementSelectorCustomComparer() Func, long> resultSelector = null; - Assert.Throws("resultSelector", () => source.GroupBy(e => e.Name, resultSelector, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => source.GroupBy(e => e.Name, resultSelector, new AnagramEqualityComparer())); } [Fact] @@ -909,4 +909,4 @@ public static IEnumerable DebuggerAttributesValid_Data() // yield return new object[] { new int?[] { null }.GroupBy(x => x).Single(), "null", new int?(0), new int?(0) }; } } -} \ No newline at end of file +} diff --git a/src/System.Linq/tests/GroupJoinTests.cs b/src/System.Linq/tests/GroupJoinTests.cs index 3fa53f4cec91..4e732158d8b8 100644 --- a/src/System.Linq/tests/GroupJoinTests.cs +++ b/src/System.Linq/tests/GroupJoinTests.cs @@ -142,7 +142,7 @@ public void OuterNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outer", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("outer", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -156,7 +156,7 @@ public void InnerNull() }; AnagramRec[] inner = null; - Assert.Throws("inner", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("inner", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -174,7 +174,7 @@ public void OuterKeySelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outerKeySelector", () => outer.GroupJoin(inner, null, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("outerKeySelector", () => outer.GroupJoin(inner, null, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -192,7 +192,7 @@ public void InnerKeySelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("innerKeySelector", () => outer.GroupJoin(inner, e => e.name, null, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("innerKeySelector", () => outer.GroupJoin(inner, e => e.name, null, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -210,7 +210,7 @@ public void ResultSelectorNull() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("resultSelector", () => outer.GroupJoin(inner, e => e.name, e => e.name, (Func, JoinRec>)null, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => outer.GroupJoin(inner, e => e.name, e => e.name, (Func, JoinRec>)null, new AnagramEqualityComparer())); } [Fact] @@ -223,7 +223,7 @@ public void OuterNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outer", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec)); + AssertExtensions.Throws("outer", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec)); } [Fact] @@ -237,7 +237,7 @@ public void InnerNullNoComparer() }; AnagramRec[] inner = null; - Assert.Throws("inner", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec)); + AssertExtensions.Throws("inner", () => outer.GroupJoin(inner, e => e.name, e => e.name, createJoinRec)); } [Fact] @@ -255,7 +255,7 @@ public void OuterKeySelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("outerKeySelector", () => outer.GroupJoin(inner, null, e => e.name, createJoinRec)); + AssertExtensions.Throws("outerKeySelector", () => outer.GroupJoin(inner, null, e => e.name, createJoinRec)); } [Fact] @@ -273,7 +273,7 @@ public void InnerKeySelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("innerKeySelector", () => outer.GroupJoin(inner, e => e.name, null, createJoinRec)); + AssertExtensions.Throws("innerKeySelector", () => outer.GroupJoin(inner, e => e.name, null, createJoinRec)); } [Fact] @@ -291,7 +291,7 @@ public void ResultSelectorNullNoComparer() new AnagramRec{ name = "miT", orderID = 93489, total = 45 } }; - Assert.Throws("resultSelector", () => outer.GroupJoin(inner, e => e.name, e => e.name, (Func, JoinRec>)null)); + AssertExtensions.Throws("resultSelector", () => outer.GroupJoin(inner, e => e.name, e => e.name, (Func, JoinRec>)null)); } [Fact] diff --git a/src/System.Linq/tests/IntersectTests.cs b/src/System.Linq/tests/IntersectTests.cs index dde5ea3f2296..fba2336d9896 100644 --- a/src/System.Linq/tests/IntersectTests.cs +++ b/src/System.Linq/tests/IntersectTests.cs @@ -97,8 +97,8 @@ public void FirstNull_ThrowsArgumentNullException() string[] first = null; string[] second = { "ekiM", "bBo" }; - Assert.Throws("first", () => first.Intersect(second)); - Assert.Throws("first", () => first.Intersect(second, new AnagramEqualityComparer())); + AssertExtensions.Throws("first", () => first.Intersect(second)); + AssertExtensions.Throws("first", () => first.Intersect(second, new AnagramEqualityComparer())); } [Fact] @@ -107,8 +107,8 @@ public void SecondNull_ThrowsArgumentNullException() string[] first = { "Tim", "Bob", "Mike", "Robert" }; string[] second = null; - Assert.Throws("second", () => first.Intersect(second)); - Assert.Throws("second", () => first.Intersect(second, new AnagramEqualityComparer())); + AssertExtensions.Throws("second", () => first.Intersect(second)); + AssertExtensions.Throws("second", () => first.Intersect(second, new AnagramEqualityComparer())); } [Fact] diff --git a/src/System.Linq/tests/JoinTests.cs b/src/System.Linq/tests/JoinTests.cs index 0195d849bfd0..72ebf031d64f 100644 --- a/src/System.Linq/tests/JoinTests.cs +++ b/src/System.Linq/tests/JoinTests.cs @@ -135,7 +135,7 @@ public void OuterNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outer", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("outer", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -149,7 +149,7 @@ public void InnerNull() }; AnagramRec[] inner = null; - Assert.Throws("inner", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("inner", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -167,7 +167,7 @@ public void OuterKeySelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outerKeySelector", () => outer.Join(inner, null, e => e.name, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("outerKeySelector", () => outer.Join(inner, null, e => e.name, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -185,7 +185,7 @@ public void InnerKeySelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("innerKeySelector", () => outer.Join(inner, e => e.name, null, createJoinRec, new AnagramEqualityComparer())); + AssertExtensions.Throws("innerKeySelector", () => outer.Join(inner, e => e.name, null, createJoinRec, new AnagramEqualityComparer())); } [Fact] @@ -203,7 +203,7 @@ public void ResultSelectorNull() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("resultSelector", () => outer.Join(inner, e => e.name, e => e.name, (Func)null, new AnagramEqualityComparer())); + AssertExtensions.Throws("resultSelector", () => outer.Join(inner, e => e.name, e => e.name, (Func)null, new AnagramEqualityComparer())); } [Fact] @@ -216,7 +216,7 @@ public void OuterNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outer", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec)); + AssertExtensions.Throws("outer", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec)); } [Fact] @@ -230,7 +230,7 @@ public void InnerNullNoComparer() }; AnagramRec[] inner = null; - Assert.Throws("inner", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec)); + AssertExtensions.Throws("inner", () => outer.Join(inner, e => e.name, e => e.name, createJoinRec)); } [Fact] @@ -248,7 +248,7 @@ public void OuterKeySelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("outerKeySelector", () => outer.Join(inner, null, e => e.name, createJoinRec)); + AssertExtensions.Throws("outerKeySelector", () => outer.Join(inner, null, e => e.name, createJoinRec)); } [Fact] @@ -266,7 +266,7 @@ public void InnerKeySelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("innerKeySelector", () => outer.Join(inner, e => e.name, null, createJoinRec)); + AssertExtensions.Throws("innerKeySelector", () => outer.Join(inner, e => e.name, null, createJoinRec)); } [Fact] @@ -284,7 +284,7 @@ public void ResultSelectorNullNoComparer() new AnagramRec{ name = "Prakash", orderID = 323232, total = 9 } }; - Assert.Throws("resultSelector", () => outer.Join(inner, e => e.name, e => e.name, (Func)null)); + AssertExtensions.Throws("resultSelector", () => outer.Join(inner, e => e.name, e => e.name, (Func)null)); } [Fact] diff --git a/src/System.Linq/tests/LastOrDefaultTests.cs b/src/System.Linq/tests/LastOrDefaultTests.cs index b1363dae2b92..a436286e7533 100644 --- a/src/System.Linq/tests/LastOrDefaultTests.cs +++ b/src/System.Linq/tests/LastOrDefaultTests.cs @@ -250,20 +250,20 @@ public void NotIListPredicateTrueForSomeRunOnce() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).LastOrDefault()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).LastOrDefault()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IEnumerable)null).LastOrDefault(i => i != 2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).LastOrDefault(i => i != 2)); } [Fact] public void NullPredicate() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).LastOrDefault(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).LastOrDefault(predicate)); } } } diff --git a/src/System.Linq/tests/LastTests.cs b/src/System.Linq/tests/LastTests.cs index b8864d9ff493..090de092d4bd 100644 --- a/src/System.Linq/tests/LastTests.cs +++ b/src/System.Linq/tests/LastTests.cs @@ -245,20 +245,20 @@ public void NotIListPredicateTrueForSomeRunOnce() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).Last()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Last()); } [Fact] public void NullSourcePredicateUsed() { - Assert.Throws("source", () => ((IEnumerable)null).Last(i => i != 2)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Last(i => i != 2)); } [Fact] public void NullPredicate() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).Last(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).Last(predicate)); } } } diff --git a/src/System.Linq/tests/LongCountTests.cs b/src/System.Linq/tests/LongCountTests.cs index dbbf2b6d44ca..699b1314ba16 100644 --- a/src/System.Linq/tests/LongCountTests.cs +++ b/src/System.Linq/tests/LongCountTests.cs @@ -80,15 +80,15 @@ public void NullableArray_IncludesNullValues() [Fact] public void NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).LongCount()); - Assert.Throws("source", () => ((IEnumerable)null).LongCount(i => i != 0)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).LongCount()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).LongCount(i => i != 0)); } [Fact] public void NullPredicate_ThrowsArgumentNullException() { Func predicate = null; - Assert.Throws("predicate", () => Enumerable.Range(0, 3).LongCount(predicate)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 3).LongCount(predicate)); } } } diff --git a/src/System.Linq/tests/MaxTests.cs b/src/System.Linq/tests/MaxTests.cs index 8d06f5856bfe..725089f259e4 100644 --- a/src/System.Linq/tests/MaxTests.cs +++ b/src/System.Linq/tests/MaxTests.cs @@ -32,8 +32,8 @@ public void SameResultsRepeatCallsStringQuery() [Fact] public void Max_Int_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -92,8 +92,8 @@ public void Max_Long(IEnumerable source, long expected) [Fact] public void Max_Long_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -144,8 +144,8 @@ public void Max_Float(IEnumerable source, float expected) [Fact] public void Max_Float_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -215,8 +215,8 @@ public void Max_Double(IEnumerable source, double expected) [Fact] public void Max_Double_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -272,8 +272,8 @@ public void Max_Decimal(IEnumerable source, decimal expected) [Fact] public void Max_Decimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -318,8 +318,8 @@ public void Max_NullableIntRunOnce(IEnumerable source, int? expected) [Fact] public void Max_NullableInt_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } public static IEnumerable Max_NullableLong_TestData() @@ -350,8 +350,8 @@ public void Max_NullableLong(IEnumerable source, long? expected) [Fact] public void Max_NullableLong_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } public static IEnumerable Max_NullableFloat_TestData() @@ -391,8 +391,8 @@ public void Max_NullableFloat(IEnumerable source, float? expected) [Fact] public void Max_NullableFloat_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } public static IEnumerable Max_NullableDouble_TestData() @@ -432,8 +432,8 @@ public void Max_NullableDouble(IEnumerable source, double? expected) [Fact] public void Max_NullableDouble_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } public static IEnumerable Max_NullableDecimal_TestData() @@ -464,8 +464,8 @@ public void Max_NullableDecimal(IEnumerable source, decimal? expected) [Fact] public void Max_NullableDecimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } public static IEnumerable Max_DateTime_TestData() @@ -495,8 +495,8 @@ public void Max_DateTime(IEnumerable source, DateTime expected) [Fact] public void Max_DateTime_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] @@ -539,15 +539,15 @@ public void Max_StringRunOnce(IEnumerable source, string expected) [Fact] public void Max_String_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Max()); - Assert.Throws("source", () => ((IEnumerable)null).Max(i => i)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Max(i => i)); } [Fact] public void Max_Int_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -567,7 +567,7 @@ public void Max_Int_WithSelectorAccessingProperty() public void Max_Long_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -599,14 +599,14 @@ public void Max_Float_WithSelectorAccessingProperty() public void Max_Float_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] public void Max_Double_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -625,7 +625,7 @@ public void Max_Double_WithSelectorAccessingField() public void Max_Decimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -643,7 +643,7 @@ public void Max_Decimal_WithSelectorAccessingProperty() public void Max_NullableInt_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -662,7 +662,7 @@ public void Max_NullableInt_WithSelectorAccessingField() public void Max_NullableLong_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -681,7 +681,7 @@ public void Max_NullableLong_WithSelectorAccessingField() public void Max_NullableFloat_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -700,7 +700,7 @@ public void Max_NullableFloat_WithSelectorAccessingProperty() public void Max_NullableDouble_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -719,7 +719,7 @@ public void Max_NullableDouble_WithSelectorAccessingProperty() public void Max_NullableDecimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] @@ -744,14 +744,14 @@ public void Max_NullableDateTime_EmptySourceWithSelector() public void Max_NullableDateTime_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] public void Max_String_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Max(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Max(selector)); } [Fact] diff --git a/src/System.Linq/tests/MinTests.cs b/src/System.Linq/tests/MinTests.cs index c75eaa2a89a9..d96947da43ca 100644 --- a/src/System.Linq/tests/MinTests.cs +++ b/src/System.Linq/tests/MinTests.cs @@ -56,8 +56,8 @@ public void Min_Int(IEnumerable source, int expected) [Fact] public void Min_Int_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -93,8 +93,8 @@ public void Min_Long(IEnumerable source, long expected) [Fact] public void Min_Long_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -155,8 +155,8 @@ public void Min_Float(IEnumerable source, float expected) [Fact] public void Min_Float_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -216,8 +216,8 @@ public void Min_Double(IEnumerable source, double expected) [Fact] public void Min_Double_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -260,8 +260,8 @@ public void Min_Decimal_EmptySource_ThrowsInvalidOperationException() [Fact] public void Min_Decimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } public static IEnumerable Min_NullableInt_TestData() @@ -297,8 +297,8 @@ public void Min_NullableIntRunOnce(IEnumerable source, int? expected) [Fact] public void Min_NullableInt_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } public static IEnumerable Min_NullableLong_TestData() @@ -328,8 +328,8 @@ public void Min_NullableLong(IEnumerable source, long? expected) [Fact] public void Min_NullableLong_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } public static IEnumerable Min_NullableFloat_TestData() @@ -378,8 +378,8 @@ public void Min_NullableFloat(IEnumerable source, float? expected) [Fact] public void Min_NullableFloat_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } public static IEnumerable Min_NullableDouble_TestData() @@ -428,7 +428,7 @@ public void Min_NullableDouble(IEnumerable source, double? expected) [Fact] public void Min_NullableDouble_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); } public static IEnumerable Min_NullableDecimal_TestData() @@ -459,8 +459,8 @@ public void Min_NullableDecimal(IEnumerable source, decimal? expected) [Fact] public void Min_NullableDecimal_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } public static IEnumerable Min_DateTime_TestData() @@ -490,8 +490,8 @@ public void Min_DateTime(IEnumerable source, DateTime expected) [Fact] public void Min_DateTime_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -534,8 +534,8 @@ public void Min_StringRunOnce(IEnumerable source, string expected) [Fact] public void Min_String_NullSource_ThrowsArgumentNullException() { - Assert.Throws("source", () => ((IEnumerable)null).Min()); - Assert.Throws("source", () => ((IEnumerable)null).Min(x => x)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Min(x => x)); } [Fact] @@ -554,7 +554,7 @@ public void Min_Int_WithSelectorAccessingProperty() public void Min_Int_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -574,7 +574,7 @@ public void Min_Long_WithSelectorAccessingProperty() public void Min_Long_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -593,7 +593,7 @@ public void Min_Float_WithSelectorAccessingProperty() public void Min_Float_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -612,7 +612,7 @@ public void Min_Double_WithSelectorAccessingProperty() public void Min_Double_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -631,7 +631,7 @@ public void Min_Decimal_WithSelectorAccessingProperty() public void Min_Decimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -650,7 +650,7 @@ public void Min_NullableInt_WithSelectorAccessingProperty() public void Min_NullableInt_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -669,7 +669,7 @@ public void Min_NullableLong_WithSelectorAccessingProperty() public void Min_NullableLong_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -689,7 +689,7 @@ public void Min_NullableFloat_WithSelectorAccessingProperty() public void Min_NullableFloat_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -708,7 +708,7 @@ public void Min_NullableDouble_WithSelectorAccessingProperty() public void Min_NullableDouble_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -727,14 +727,14 @@ public void Min_NullableDecimal_WithSelectorAccessingProperty() public void Min_NullableDecimal_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] public void Min_DateTime_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] @@ -753,7 +753,7 @@ public void Min_String_WithSelectorAccessingProperty() public void Min_String_NullSelector_ThrowsArgumentNullException() { Func selector = null; - Assert.Throws("selector", () => Enumerable.Empty().Min(selector)); + AssertExtensions.Throws("selector", () => Enumerable.Empty().Min(selector)); } [Fact] diff --git a/src/System.Linq/tests/OfTypeTests.cs b/src/System.Linq/tests/OfTypeTests.cs index 67992d0f5196..e7c164a317cb 100644 --- a/src/System.Linq/tests/OfTypeTests.cs +++ b/src/System.Linq/tests/OfTypeTests.cs @@ -123,7 +123,7 @@ public void LongFromDouble() [Fact] public void NullSource() { - Assert.Throws("source", () => ((IEnumerable)null).OfType()); + AssertExtensions.Throws("source", () => ((IEnumerable)null).OfType()); } [Fact] diff --git a/src/System.Linq/tests/OrderByDescendingTests.cs b/src/System.Linq/tests/OrderByDescendingTests.cs index 44352051da15..d2e1b6a749b6 100644 --- a/src/System.Linq/tests/OrderByDescendingTests.cs +++ b/src/System.Linq/tests/OrderByDescendingTests.cs @@ -175,14 +175,14 @@ public void OrderByExtremeComparer() public void NullSource() { IEnumerable source = null; - Assert.Throws("source", () => source.OrderByDescending(i => i)); + AssertExtensions.Throws("source", () => source.OrderByDescending(i => i)); } [Fact] public void NullKeySelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderByDescending(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderByDescending(keySelector)); } } } diff --git a/src/System.Linq/tests/OrderByTests.cs b/src/System.Linq/tests/OrderByTests.cs index 9dbff46c38bd..c98bb251bafb 100644 --- a/src/System.Linq/tests/OrderByTests.cs +++ b/src/System.Linq/tests/OrderByTests.cs @@ -264,14 +264,14 @@ public void OrderByExtremeComparer() public void NullSource() { IEnumerable source = null; - Assert.Throws("source", () => source.OrderBy(i => i)); + AssertExtensions.Throws("source", () => source.OrderBy(i => i)); } [Fact] public void NullKeySelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderBy(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderBy(keySelector)); } [Fact] diff --git a/src/System.Linq/tests/OrderedSubsetting.cs b/src/System.Linq/tests/OrderedSubsetting.cs index 544dd143278d..eebbc65692a2 100644 --- a/src/System.Linq/tests/OrderedSubsetting.cs +++ b/src/System.Linq/tests/OrderedSubsetting.cs @@ -428,7 +428,7 @@ public void SelectElementAt() Assert.Equal(6, source.ElementAt(2)); Assert.Equal(8, source.ElementAtOrDefault(3)); Assert.Equal(0, source.ElementAtOrDefault(8)); - Assert.Throws("index", () => source.ElementAt(-2)); + AssertExtensions.Throws("index", () => source.ElementAt(-2)); } [Fact] diff --git a/src/System.Linq/tests/RangeTests.cs b/src/System.Linq/tests/RangeTests.cs index 1acb731fac16..dfa06d75dc76 100644 --- a/src/System.Linq/tests/RangeTests.cs +++ b/src/System.Linq/tests/RangeTests.cs @@ -59,16 +59,16 @@ public void Range_ZeroCountLeadToEmptySequence() [Fact] public void Range_ThrowExceptionOnNegativeCount() { - Assert.Throws("count", () => Enumerable.Range(1, -1)); - Assert.Throws("count", () => Enumerable.Range(1, int.MinValue)); + AssertExtensions.Throws("count", () => Enumerable.Range(1, -1)); + AssertExtensions.Throws("count", () => Enumerable.Range(1, int.MinValue)); } [Fact] public void Range_ThrowExceptionOnOverflow() { - Assert.Throws("count", () => Enumerable.Range(1000, int.MaxValue)); - Assert.Throws("count", () => Enumerable.Range(int.MaxValue, 1000)); - Assert.Throws("count", () => Enumerable.Range(Int32.MaxValue - 10, 20)); + AssertExtensions.Throws("count", () => Enumerable.Range(1000, int.MaxValue)); + AssertExtensions.Throws("count", () => Enumerable.Range(int.MaxValue, 1000)); + AssertExtensions.Throws("count", () => Enumerable.Range(Int32.MaxValue - 10, 20)); } [Fact] @@ -185,7 +185,7 @@ public void ElementAt() [Fact] public void ElementAtExcessiveThrows() { - Assert.Throws("index", () => Enumerable.Range(0, 10).ElementAt(100)); + AssertExtensions.Throws("index", () => Enumerable.Range(0, 10).ElementAt(100)); } [Fact] diff --git a/src/System.Linq/tests/RepeatTests.cs b/src/System.Linq/tests/RepeatTests.cs index e24403edcaa6..371f51535780 100644 --- a/src/System.Linq/tests/RepeatTests.cs +++ b/src/System.Linq/tests/RepeatTests.cs @@ -76,7 +76,7 @@ public void Repeat_ZeroCountLeadToEmptySequence() [Fact] public void Repeat_ThrowExceptionOnNegativeCount() { - Assert.Throws("count", () => Enumerable.Repeat(1, -1)); + AssertExtensions.Throws("count", () => Enumerable.Repeat(1, -1)); } @@ -226,7 +226,7 @@ public void ElementAtOrDefault() [Fact] public void ElementAtExcessive() { - Assert.Throws("index", () => Enumerable.Repeat(3, 3).ElementAt(100)); + AssertExtensions.Throws("index", () => Enumerable.Repeat(3, 3).ElementAt(100)); } [Fact] diff --git a/src/System.Linq/tests/ReverseTests.cs b/src/System.Linq/tests/ReverseTests.cs index c8b9cb604867..826a39add996 100644 --- a/src/System.Linq/tests/ReverseTests.cs +++ b/src/System.Linq/tests/ReverseTests.cs @@ -12,7 +12,7 @@ public class ReverseTests : EnumerableTests [Fact] public void InvalidArguments() { - Assert.Throws("source", () => Enumerable.Reverse(null)); + AssertExtensions.Throws("source", () => Enumerable.Reverse(null)); } [Theory] diff --git a/src/System.Linq/tests/SelectManyTests.cs b/src/System.Linq/tests/SelectManyTests.cs index 96218a28f6cd..10eb908b7249 100644 --- a/src/System.Linq/tests/SelectManyTests.cs +++ b/src/System.Linq/tests/SelectManyTests.cs @@ -245,70 +245,70 @@ public void ResultSelector() public void NullResultSelector() { Func resultSelector = null; - Assert.Throws("resultSelector", () => Enumerable.Empty().SelectMany(e => e.total, resultSelector)); + AssertExtensions.Throws("resultSelector", () => Enumerable.Empty().SelectMany(e => e.total, resultSelector)); } [Fact] public void NullResultSelectorIndexedSelector() { Func resultSelector = null; - Assert.Throws("resultSelector", () => Enumerable.Empty().SelectMany((e, i) => e.total, resultSelector)); + AssertExtensions.Throws("resultSelector", () => Enumerable.Empty().SelectMany((e, i) => e.total, resultSelector)); } [Fact] public void NullSourceWithResultSelector() { StringWithIntArray[] source = null; - Assert.Throws("source", () => source.SelectMany(e => e.total, (e, f) => f.ToString())); + AssertExtensions.Throws("source", () => source.SelectMany(e => e.total, (e, f) => f.ToString())); } [Fact] public void NullCollectionSelector() { Func> collectionSelector = null; - Assert.Throws("collectionSelector", () => Enumerable.Empty().SelectMany(collectionSelector, (e, f) => f.ToString())); + AssertExtensions.Throws("collectionSelector", () => Enumerable.Empty().SelectMany(collectionSelector, (e, f) => f.ToString())); } [Fact] public void NullIndexedCollectionSelector() { Func> collectionSelector = null; - Assert.Throws("collectionSelector", () => Enumerable.Empty().SelectMany(collectionSelector, (e, f) => f.ToString())); + AssertExtensions.Throws("collectionSelector", () => Enumerable.Empty().SelectMany(collectionSelector, (e, f) => f.ToString())); } [Fact] public void NullSource() { StringWithIntArray[] source = null; - Assert.Throws("source", () => source.SelectMany(e => e.total)); + AssertExtensions.Throws("source", () => source.SelectMany(e => e.total)); } [Fact] public void NullSourceIndexedSelector() { StringWithIntArray[] source = null; - Assert.Throws("source", () => source.SelectMany((e, i) => e.total)); + AssertExtensions.Throws("source", () => source.SelectMany((e, i) => e.total)); } [Fact] public void NullSourceIndexedSelectorWithResultSelector() { StringWithIntArray[] source = null; - Assert.Throws("source", () => source.SelectMany((e, i) => e.total, (e, f) => f.ToString())); + AssertExtensions.Throws("source", () => source.SelectMany((e, i) => e.total, (e, f) => f.ToString())); } [Fact] public void NullSelector() { Func selector = null; - Assert.Throws("selector", () => new StringWithIntArray[0].SelectMany(selector)); + AssertExtensions.Throws("selector", () => new StringWithIntArray[0].SelectMany(selector)); } [Fact] public void NullIndexedSelector() { Func selector = null; - Assert.Throws("selector", () => new StringWithIntArray[0].SelectMany(selector)); + AssertExtensions.Throws("selector", () => new StringWithIntArray[0].SelectMany(selector)); } [Fact] diff --git a/src/System.Linq/tests/SelectTests.cs b/src/System.Linq/tests/SelectTests.cs index c8ebbe64b5d1..ca84c7e92811 100644 --- a/src/System.Linq/tests/SelectTests.cs +++ b/src/System.Linq/tests/SelectTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -159,7 +160,7 @@ public void Select_SourceIsNull_ArgumentNullExceptionThrown() IEnumerable source = null; Func selector = i => i + 1; - Assert.Throws("source", () => source.Select(selector)); + AssertExtensions.Throws("source", () => source.Select(selector)); } [Fact] @@ -168,7 +169,7 @@ public void Select_SelectorIsNull_ArgumentNullExceptionThrown_Indexed() IEnumerable source = Enumerable.Range(1, 10); Func selector = null; - Assert.Throws("selector", () => source.Select(selector)); + AssertExtensions.Throws("selector", () => source.Select(selector)); } [Fact] @@ -177,7 +178,7 @@ public void Select_SourceIsNull_ArgumentNullExceptionThrown_Indexed() IEnumerable source = null; Func selector = (e, i) => i + 1; - Assert.Throws("source", () => source.Select(selector)); + AssertExtensions.Throws("source", () => source.Select(selector)); } [Fact] @@ -186,7 +187,7 @@ public void Select_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable source = Enumerable.Range(1, 10); Func selector = null; - Assert.Throws("selector", () => source.Select(selector)); + AssertExtensions.Throws("selector", () => source.Select(selector)); } [Fact] public void Select_SourceIsAnArray_ExecutionIsDeferred() @@ -908,12 +909,12 @@ public void Select_SourceIsArray_ElementAt() var source = new[] { 1, 2, 3, 4 }.Select(i => i * 2); for (int i = 0; i != 4; ++i) Assert.Equal(i * 2 + 2, source.ElementAt(i)); - Assert.Throws("index", () => source.ElementAt(-1)); - Assert.Throws("index", () => source.ElementAt(4)); - Assert.Throws("index", () => source.ElementAt(40)); + AssertExtensions.Throws("index", () => source.ElementAt(-1)); + AssertExtensions.Throws("index", () => source.ElementAt(4)); + AssertExtensions.Throws("index", () => source.ElementAt(40)); Assert.Equal(6, source.Skip(1).ElementAt(1)); - Assert.Throws("index", () => source.Skip(2).ElementAt(9)); + AssertExtensions.Throws("index", () => source.Skip(2).ElementAt(9)); } [Fact] @@ -922,12 +923,12 @@ public void Select_SourceIsList_ElementAt() var source = new List { 1, 2, 3, 4 }.Select(i => i * 2); for (int i = 0; i != 4; ++i) Assert.Equal(i * 2 + 2, source.ElementAt(i)); - Assert.Throws("index", () => source.ElementAt(-1)); - Assert.Throws("index", () => source.ElementAt(4)); - Assert.Throws("index", () => source.ElementAt(40)); + AssertExtensions.Throws("index", () => source.ElementAt(-1)); + AssertExtensions.Throws("index", () => source.ElementAt(4)); + AssertExtensions.Throws("index", () => source.ElementAt(40)); Assert.Equal(6, source.Skip(1).ElementAt(1)); - Assert.Throws("index", () => source.Skip(2).ElementAt(9)); + AssertExtensions.Throws("index", () => source.Skip(2).ElementAt(9)); } [Fact] @@ -936,12 +937,12 @@ public void Select_SourceIsIList_ElementAt() var source = new List { 1, 2, 3, 4 }.AsReadOnly().Select(i => i * 2); for (int i = 0; i != 4; ++i) Assert.Equal(i * 2 + 2, source.ElementAt(i)); - Assert.Throws("index", () => source.ElementAt(-1)); - Assert.Throws("index", () => source.ElementAt(4)); - Assert.Throws("index", () => source.ElementAt(40)); + AssertExtensions.Throws("index", () => source.ElementAt(-1)); + AssertExtensions.Throws("index", () => source.ElementAt(4)); + AssertExtensions.Throws("index", () => source.ElementAt(40)); Assert.Equal(6, source.Skip(1).ElementAt(1)); - Assert.Throws("index", () => source.Skip(2).ElementAt(9)); + AssertExtensions.Throws("index", () => source.Skip(2).ElementAt(9)); } [Fact] diff --git a/src/System.Linq/tests/SequenceEqualTests.cs b/src/System.Linq/tests/SequenceEqualTests.cs index 8426455b40d0..1f96cf96a09e 100644 --- a/src/System.Linq/tests/SequenceEqualTests.cs +++ b/src/System.Linq/tests/SequenceEqualTests.cs @@ -204,7 +204,7 @@ public void FirstSourceNull() int[] first = null; int[] second = { }; - Assert.Throws("first", () => first.SequenceEqual(second)); + AssertExtensions.Throws("first", () => first.SequenceEqual(second)); } [Fact] @@ -213,7 +213,7 @@ public void SecondSourceNull() int[] first = { }; int[] second = null; - Assert.Throws("second", () => first.SequenceEqual(second)); + AssertExtensions.Throws("second", () => first.SequenceEqual(second)); } } } diff --git a/src/System.Linq/tests/SingleOrDefaultTests.cs b/src/System.Linq/tests/SingleOrDefaultTests.cs index 021121f43ea5..0dbcfc18dfa4 100644 --- a/src/System.Linq/tests/SingleOrDefaultTests.cs +++ b/src/System.Linq/tests/SingleOrDefaultTests.cs @@ -153,8 +153,8 @@ public void RunOnce(int target, int range) public void ThrowsOnNullSource() { int[] source = null; - Assert.Throws("source", () => source.SingleOrDefault()); - Assert.Throws("source", () => source.SingleOrDefault(i => i % 2 == 0)); + AssertExtensions.Throws("source", () => source.SingleOrDefault()); + AssertExtensions.Throws("source", () => source.SingleOrDefault(i => i % 2 == 0)); } [Fact] @@ -162,7 +162,7 @@ public void ThrowsOnNullPredicate() { int[] source = { }; Func nullPredicate = null; - Assert.Throws("predicate", () => source.SingleOrDefault(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.SingleOrDefault(nullPredicate)); } } } diff --git a/src/System.Linq/tests/SingleTests.cs b/src/System.Linq/tests/SingleTests.cs index 7de92a49e2d6..a7238301bad0 100644 --- a/src/System.Linq/tests/SingleTests.cs +++ b/src/System.Linq/tests/SingleTests.cs @@ -157,8 +157,8 @@ public void RunOnce(int target, int range) public void ThrowsOnNullSource() { int[] source = null; - Assert.Throws("source", () => source.Single()); - Assert.Throws("source", () => source.Single(i => i % 2 == 0)); + AssertExtensions.Throws("source", () => source.Single()); + AssertExtensions.Throws("source", () => source.Single(i => i % 2 == 0)); } [Fact] @@ -166,7 +166,7 @@ public void ThrowsOnNullPredicate() { int[] source = { }; Func nullPredicate = null; - Assert.Throws("predicate", () => source.Single(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.Single(nullPredicate)); } } } diff --git a/src/System.Linq/tests/SkipTests.cs b/src/System.Linq/tests/SkipTests.cs index e12ab97f00b3..e876a24aab3d 100644 --- a/src/System.Linq/tests/SkipTests.cs +++ b/src/System.Linq/tests/SkipTests.cs @@ -75,14 +75,14 @@ public void SkipAllExactlyIList() [Fact] public void SkipThrowsOnNull() { - Assert.Throws("source", () => ((IEnumerable)null).Skip(3)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).Skip(3)); } [Fact] public void SkipThrowsOnNullIList() { - Assert.Throws("source", () => ((List)null).Skip(3)); - Assert.Throws("source", () => ((IList)null).Skip(3)); + AssertExtensions.Throws("source", () => ((List)null).Skip(3)); + AssertExtensions.Throws("source", () => ((IList)null).Skip(3)); } [Fact] @@ -285,8 +285,8 @@ public void ElementAt() Assert.Equal(3, remaining.ElementAt(0)); Assert.Equal(4, remaining.ElementAt(1)); Assert.Equal(6, remaining.ElementAt(3)); - Assert.Throws("index", () => remaining.ElementAt(-1)); - Assert.Throws("index", () => remaining.ElementAt(4)); + AssertExtensions.Throws("index", () => remaining.ElementAt(-1)); + AssertExtensions.Throws("index", () => remaining.ElementAt(4)); } [Fact] @@ -297,8 +297,8 @@ public void ElementAtNotIList() Assert.Equal(3, remaining.ElementAt(0)); Assert.Equal(4, remaining.ElementAt(1)); Assert.Equal(6, remaining.ElementAt(3)); - Assert.Throws("index", () => remaining.ElementAt(-1)); - Assert.Throws("index", () => remaining.ElementAt(4)); + AssertExtensions.Throws("index", () => remaining.ElementAt(-1)); + AssertExtensions.Throws("index", () => remaining.ElementAt(4)); } [Fact] diff --git a/src/System.Linq/tests/SkipWhileTests.cs b/src/System.Linq/tests/SkipWhileTests.cs index 6cf64ece03e4..8ab78edf43ad 100644 --- a/src/System.Linq/tests/SkipWhileTests.cs +++ b/src/System.Linq/tests/SkipWhileTests.cs @@ -28,10 +28,10 @@ public void SkipWhileAllFalse() [Fact] public void SkipWhileThrowsOnNull() { - Assert.Throws("source", () => ((IEnumerable)null).SkipWhile(i => i < 40)); - Assert.Throws("source", () => ((IEnumerable)null).SkipWhile((i, idx) => i == idx)); - Assert.Throws("predicate", () => Enumerable.Range(0, 20).SkipWhile((Func)null)); - Assert.Throws("predicate", () => Enumerable.Range(0, 20).SkipWhile((Func)null)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).SkipWhile(i => i < 40)); + AssertExtensions.Throws("source", () => ((IEnumerable)null).SkipWhile((i, idx) => i == idx)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 20).SkipWhile((Func)null)); + AssertExtensions.Throws("predicate", () => Enumerable.Range(0, 20).SkipWhile((Func)null)); } [ConditionalFact(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsSubsystemForLinux))] // https://github.com/Microsoft/BashOnWindows/issues/513 diff --git a/src/System.Linq/tests/SumTests.cs b/src/System.Linq/tests/SumTests.cs index 47353f763457..18c3c507cd26 100644 --- a/src/System.Linq/tests/SumTests.cs +++ b/src/System.Linq/tests/SumTests.cs @@ -15,80 +15,80 @@ public class SumTests : EnumerableTests public void SumOfInt_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceInt = null; - Assert.Throws("source", () => sourceInt.Sum()); - Assert.Throws("source", () => sourceInt.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceInt.Sum()); + AssertExtensions.Throws("source", () => sourceInt.Sum(x => x)); } [Fact] public void SumOfNullableOfInt_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceNullableInt = null; - Assert.Throws("source", () => sourceNullableInt.Sum()); - Assert.Throws("source", () => sourceNullableInt.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableInt.Sum()); + AssertExtensions.Throws("source", () => sourceNullableInt.Sum(x => x)); } [Fact] public void SumOfLong_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceLong = null; - Assert.Throws("source", () => sourceLong.Sum()); - Assert.Throws("source", () => sourceLong.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceLong.Sum()); + AssertExtensions.Throws("source", () => sourceLong.Sum(x => x)); } [Fact] public void SumOfNullableOfLong_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceNullableLong = null; - Assert.Throws("source", () => sourceNullableLong.Sum()); - Assert.Throws("source", () => sourceNullableLong.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableLong.Sum()); + AssertExtensions.Throws("source", () => sourceNullableLong.Sum(x => x)); } [Fact] public void SumOfFloat_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceFloat = null; - Assert.Throws("source", () => sourceFloat.Sum()); - Assert.Throws("source", () => sourceFloat.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceFloat.Sum()); + AssertExtensions.Throws("source", () => sourceFloat.Sum(x => x)); } [Fact] public void SumOfNullableOfFloat_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceNullableFloat = null; - Assert.Throws("source", () => sourceNullableFloat.Sum()); - Assert.Throws("source", () => sourceNullableFloat.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableFloat.Sum()); + AssertExtensions.Throws("source", () => sourceNullableFloat.Sum(x => x)); } [Fact] public void SumOfDouble_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceDouble = null; - Assert.Throws("source", () => sourceDouble.Sum()); - Assert.Throws("source", () => sourceDouble.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceDouble.Sum()); + AssertExtensions.Throws("source", () => sourceDouble.Sum(x => x)); } [Fact] public void SumOfNullableOfDouble_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceNullableDouble = null; - Assert.Throws("source", () => sourceNullableDouble.Sum()); - Assert.Throws("source", () => sourceNullableDouble.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableDouble.Sum()); + AssertExtensions.Throws("source", () => sourceNullableDouble.Sum(x => x)); } [Fact] public void SumOfDecimal_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceDecimal = null; - Assert.Throws("source", () => sourceDecimal.Sum()); - Assert.Throws("source", () => sourceDecimal.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceDecimal.Sum()); + AssertExtensions.Throws("source", () => sourceDecimal.Sum(x => x)); } [Fact] public void SumOfNullableOfDecimal_SourceIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceNullableDecimal = null; - Assert.Throws("source", () => sourceNullableDecimal.Sum()); - Assert.Throws("source", () => sourceNullableDecimal.Sum(x => x)); + AssertExtensions.Throws("source", () => sourceNullableDecimal.Sum()); + AssertExtensions.Throws("source", () => sourceNullableDecimal.Sum(x => x)); } #endregion @@ -100,7 +100,7 @@ public void SumOfInt_SelectorIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceInt = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceInt.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceInt.Sum(selector)); } [Fact] @@ -109,7 +109,7 @@ public void SumOfNullableOfInt_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable sourceNullableInt = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceNullableInt.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableInt.Sum(selector)); } [Fact] @@ -117,7 +117,7 @@ public void SumOfLong_SelectorIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceLong = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceLong.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceLong.Sum(selector)); } [Fact] @@ -126,7 +126,7 @@ public void SumOfNullableOfLong_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable sourceNullableLong = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceNullableLong.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableLong.Sum(selector)); } [Fact] @@ -134,7 +134,7 @@ public void SumOfFloat_SelectorIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceFloat = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceFloat.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceFloat.Sum(selector)); } [Fact] @@ -143,7 +143,7 @@ public void SumOfNullableOfFloat_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable sourceNullableFloat = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceNullableFloat.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableFloat.Sum(selector)); } [Fact] @@ -151,7 +151,7 @@ public void SumOfDouble_SelectorIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceDouble = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceDouble.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceDouble.Sum(selector)); } [Fact] @@ -160,7 +160,7 @@ public void SumOfNullableOfDouble_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable sourceNullableDouble = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceNullableDouble.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableDouble.Sum(selector)); } [Fact] @@ -168,7 +168,7 @@ public void SumOfDecimal_SelectorIsNull_ArgumentNullExceptionThrown() { IEnumerable sourceDecimal = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceDecimal.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceDecimal.Sum(selector)); } [Fact] @@ -177,7 +177,7 @@ public void SumOfNullableOfDecimal_SelectorIsNull_ArgumentNullExceptionThrown() IEnumerable sourceNullableDecimal = Enumerable.Empty(); Func selector = null; - Assert.Throws("selector", () => sourceNullableDecimal.Sum(selector)); + AssertExtensions.Throws("selector", () => sourceNullableDecimal.Sum(selector)); } #endregion diff --git a/src/System.Linq/tests/System.Linq.Tests.csproj b/src/System.Linq/tests/System.Linq.Tests.csproj index d9376de9740d..236ad0a2c7c5 100644 --- a/src/System.Linq/tests/System.Linq.Tests.csproj +++ b/src/System.Linq/tests/System.Linq.Tests.csproj @@ -76,6 +76,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\DebuggerAttributes.cs diff --git a/src/System.Linq/tests/TakeTests.cs b/src/System.Linq/tests/TakeTests.cs index 6ceb19e23b32..1e72dbe5e49d 100644 --- a/src/System.Linq/tests/TakeTests.cs +++ b/src/System.Linq/tests/TakeTests.cs @@ -179,7 +179,7 @@ public void SourceNonEmptyTakeExcessiveNotIList() public void ThrowsOnNullSource() { int[] source = null; - Assert.Throws("source", () => source.Take(5)); + AssertExtensions.Throws("source", () => source.Take(5)); } [Fact] @@ -247,8 +247,8 @@ public void ElementAt() var taken = source.Take(3); Assert.Equal(1, taken.ElementAt(0)); Assert.Equal(3, taken.ElementAt(2)); - Assert.Throws("index", () => taken.ElementAt(-1)); - Assert.Throws("index", () => taken.ElementAt(3)); + AssertExtensions.Throws("index", () => taken.ElementAt(-1)); + AssertExtensions.Throws("index", () => taken.ElementAt(3)); } [Fact] @@ -258,8 +258,8 @@ public void ElementAtNotIList() var taken = source.Take(3); Assert.Equal(1, taken.ElementAt(0)); Assert.Equal(3, taken.ElementAt(2)); - Assert.Throws("index", () => taken.ElementAt(-1)); - Assert.Throws("index", () => taken.ElementAt(3)); + AssertExtensions.Throws("index", () => taken.ElementAt(-1)); + AssertExtensions.Throws("index", () => taken.ElementAt(3)); } [Fact] diff --git a/src/System.Linq/tests/TakeWhileTests.cs b/src/System.Linq/tests/TakeWhileTests.cs index 619859aa728b..86d6b7981ab3 100644 --- a/src/System.Linq/tests/TakeWhileTests.cs +++ b/src/System.Linq/tests/TakeWhileTests.cs @@ -135,7 +135,7 @@ public void IndexTakeWhileOverflowBeyondIntMaxValueElements() public void ThrowsOnNullSource() { int[] source = null; - Assert.Throws("source", () => source.TakeWhile(x => true)); + AssertExtensions.Throws("source", () => source.TakeWhile(x => true)); } [Fact] @@ -144,14 +144,14 @@ public void ThrowsOnNullPredicate() int[] source = { 1, 2, 3 }; Func nullPredicate = null; - Assert.Throws("predicate", () => source.TakeWhile(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.TakeWhile(nullPredicate)); } [Fact] public void ThrowsOnNullSourceIndexed() { int[] source = null; - Assert.Throws("source", () => source.TakeWhile((x, i) => true)); + AssertExtensions.Throws("source", () => source.TakeWhile((x, i) => true)); } [Fact] @@ -160,7 +160,7 @@ public void ThrowsOnNullPredicateIndexed() int[] source = { 1, 2, 3 }; Func nullPredicate = null; - Assert.Throws("predicate", () => source.TakeWhile(nullPredicate)); + AssertExtensions.Throws("predicate", () => source.TakeWhile(nullPredicate)); } [Fact] diff --git a/src/System.Linq/tests/ThenByDescendingTests.cs b/src/System.Linq/tests/ThenByDescendingTests.cs index 4dd504c6c49c..0610faa7a2f5 100644 --- a/src/System.Linq/tests/ThenByDescendingTests.cs +++ b/src/System.Linq/tests/ThenByDescendingTests.cs @@ -142,28 +142,28 @@ The Carriage held but just Ourselves — public void NullSource() { IOrderedEnumerable source = null; - Assert.Throws("source", () => source.ThenByDescending(i => i)); + AssertExtensions.Throws("source", () => source.ThenByDescending(i => i)); } [Fact] public void NullKeySelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenByDescending(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenByDescending(keySelector)); } [Fact] public void NullSourceComparer() { IOrderedEnumerable source = null; - Assert.Throws("source", () => source.ThenByDescending(i => i, null)); + AssertExtensions.Throws("source", () => source.ThenByDescending(i => i, null)); } [Fact] public void NullKeySelectorComparer() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenByDescending(keySelector, null)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenByDescending(keySelector, null)); } } } diff --git a/src/System.Linq/tests/ThenByTests.cs b/src/System.Linq/tests/ThenByTests.cs index e4c682b5ab19..6b9955a8050c 100644 --- a/src/System.Linq/tests/ThenByTests.cs +++ b/src/System.Linq/tests/ThenByTests.cs @@ -147,28 +147,28 @@ The Carriage held but just Ourselves — public void NullSource() { IOrderedEnumerable source = null; - Assert.Throws("source", () => source.ThenBy(i => i)); + AssertExtensions.Throws("source", () => source.ThenBy(i => i)); } [Fact] public void NullKeySelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenBy(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenBy(keySelector)); } [Fact] public void NullSourceComparer() { IOrderedEnumerable source = null; - Assert.Throws("source", () => source.ThenBy(i => i, null)); + AssertExtensions.Throws("source", () => source.ThenBy(i => i, null)); } [Fact] public void NullKeySelectorComparer() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenBy(keySelector, null)); + AssertExtensions.Throws("keySelector", () => Enumerable.Empty().OrderBy(e => e).ThenBy(keySelector, null)); } } } diff --git a/src/System.Linq/tests/ToArrayTests.cs b/src/System.Linq/tests/ToArrayTests.cs index 4ee327cd8a44..da956675dc71 100644 --- a/src/System.Linq/tests/ToArrayTests.cs +++ b/src/System.Linq/tests/ToArrayTests.cs @@ -120,7 +120,7 @@ public void ToArray_TouchCountWithICollection() public void ToArray_ThrowArgumentNullExceptionWhenSourceIsNull() { int[] source = null; - Assert.Throws("source", () => source.ToArray()); + AssertExtensions.Throws("source", () => source.ToArray()); } // Generally the optimal approach. Anything that breaks this should be confirmed as not harming performance. diff --git a/src/System.Linq/tests/ToDictionaryTests.cs b/src/System.Linq/tests/ToDictionaryTests.cs index 3202305eaeb4..54dbb88eadf3 100644 --- a/src/System.Linq/tests/ToDictionaryTests.cs +++ b/src/System.Linq/tests/ToDictionaryTests.cs @@ -129,7 +129,7 @@ public void ToDictionary_KeyValueSelectorsWork() public void ToDictionary_ThrowArgumentNullExceptionWhenSourceIsNull() { int[] source = null; - Assert.Throws("source", () => source.ToDictionary(key => key)); + AssertExtensions.Throws("source", () => source.ToDictionary(key => key)); } @@ -138,7 +138,7 @@ public void ToDictionary_ThrowArgumentNullExceptionWhenKeySelectorIsNull() { int[] source = new int[0]; Func keySelector = null; - Assert.Throws("keySelector", () => source.ToDictionary(keySelector)); + AssertExtensions.Throws("keySelector", () => source.ToDictionary(keySelector)); } [Fact] @@ -147,14 +147,14 @@ public void ToDictionary_ThrowArgumentNullExceptionWhenValueSelectorIsNull() int[] source = new int[0]; Func keySelector = key => key; Func valueSelector = null; - Assert.Throws("elementSelector", () => source.ToDictionary(keySelector, valueSelector)); + AssertExtensions.Throws("elementSelector", () => source.ToDictionary(keySelector, valueSelector)); } [Fact] public void ToDictionary_ThrowArgumentNullExceptionWhenSourceIsNullElementSelector() { int[] source = null; - Assert.Throws("source", () => source.ToDictionary(key => key, e => e)); + AssertExtensions.Throws("source", () => source.ToDictionary(key => key, e => e)); } @@ -163,7 +163,7 @@ public void ToDictionary_ThrowArgumentNullExceptionWhenKeySelectorIsNullElementS { int[] source = new int[0]; Func keySelector = null; - Assert.Throws("keySelector", () => source.ToDictionary(keySelector, e => e)); + AssertExtensions.Throws("keySelector", () => source.ToDictionary(keySelector, e => e)); } [Fact] @@ -187,7 +187,7 @@ public void ToDictionary_ThrowWhenKeySelectorReturnNull() int[] source = new int[] { 1, 2, 3 }; Func keySelector = key => null; - Assert.Throws("key", () => source.ToDictionary(keySelector)); + AssertExtensions.Throws("key", () => source.ToDictionary(keySelector)); } [Fact] @@ -233,7 +233,7 @@ public void ThrowsOnNullKey() new { Name = default(string), Score = 55 } }; - Assert.Throws("key", () => source.ToDictionary(e => e.Name)); + AssertExtensions.Throws("key", () => source.ToDictionary(e => e.Name)); } [Fact] @@ -255,7 +255,7 @@ public void ThrowsOnNullKeyCustomComparer() new { Name = default(string), Score = 55 } }; - Assert.Throws("key", () => source.ToDictionary(e => e.Name, new AnagramEqualityComparer())); + AssertExtensions.Throws("key", () => source.ToDictionary(e => e.Name, new AnagramEqualityComparer())); } [Fact] @@ -277,7 +277,7 @@ public void ThrowsOnNullKeyValueSelector() new { Name = default(string), Score = 55 } }; - Assert.Throws("key", () => source.ToDictionary(e => e.Name, e => e)); + AssertExtensions.Throws("key", () => source.ToDictionary(e => e.Name, e => e)); } [Fact] @@ -299,7 +299,7 @@ public void ThrowsOnNullKeyCustomComparerValueSelector() new { Name = default(string), Score = 55 } }; - Assert.Throws("key", () => source.ToDictionary(e => e.Name, e => e, new AnagramEqualityComparer())); + AssertExtensions.Throws("key", () => source.ToDictionary(e => e.Name, e => e, new AnagramEqualityComparer())); } [Fact] diff --git a/src/System.Linq/tests/ToListTests.cs b/src/System.Linq/tests/ToListTests.cs index f37419cefb91..e9282ef23fde 100644 --- a/src/System.Linq/tests/ToListTests.cs +++ b/src/System.Linq/tests/ToListTests.cs @@ -88,7 +88,7 @@ public void ToList_TouchCountWithICollection() public void ToList_ThrowArgumentNullExceptionWhenSourceIsNull() { int[] source = null; - Assert.Throws("source", () => source.ToList()); + AssertExtensions.Throws("source", () => source.ToList()); } // Generally the optimal approach. Anything that breaks this should be confirmed as not harming performance. diff --git a/src/System.Linq/tests/ToLookupTests.cs b/src/System.Linq/tests/ToLookupTests.cs index 663420df1d92..9849ddbdf259 100644 --- a/src/System.Linq/tests/ToLookupTests.cs +++ b/src/System.Linq/tests/ToLookupTests.cs @@ -169,70 +169,70 @@ public void SingleNullKeyAndElement() public void NullSource() { IEnumerable source = null; - Assert.Throws("source", () => source.ToLookup(i => i / 10)); + AssertExtensions.Throws("source", () => source.ToLookup(i => i / 10)); } [Fact] public void NullSourceExplicitComparer() { IEnumerable source = null; - Assert.Throws("source", () => source.ToLookup(i => i / 10, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => source.ToLookup(i => i / 10, EqualityComparer.Default)); } [Fact] public void NullSourceElementSelector() { IEnumerable source = null; - Assert.Throws("source", () => source.ToLookup(i => i / 10, i => i + 2)); + AssertExtensions.Throws("source", () => source.ToLookup(i => i / 10, i => i + 2)); } [Fact] public void NullSourceElementSelectorExplicitComparer() { IEnumerable source = null; - Assert.Throws("source", () => source.ToLookup(i => i / 10, i => i + 2, EqualityComparer.Default)); + AssertExtensions.Throws("source", () => source.ToLookup(i => i / 10, i => i + 2, EqualityComparer.Default)); } [Fact] public void NullKeySelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector)); + AssertExtensions.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector)); } [Fact] public void NullKeySelectorExplicitComparer() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, EqualityComparer.Default)); } [Fact] public void NullKeySelectorElementSelector() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, i => i + 2)); + AssertExtensions.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, i => i + 2)); } [Fact] public void NullKeySelectorElementSelectorExplicitComparer() { Func keySelector = null; - Assert.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, i => i + 2, EqualityComparer.Default)); + AssertExtensions.Throws("keySelector", () => Enumerable.Range(0, 1000).ToLookup(keySelector, i => i + 2, EqualityComparer.Default)); } [Fact] public void NullElementSelector() { Func elementSelector = null; - Assert.Throws("elementSelector", () => Enumerable.Range(0, 1000).ToLookup(i => i / 10, elementSelector)); + AssertExtensions.Throws("elementSelector", () => Enumerable.Range(0, 1000).ToLookup(i => i / 10, elementSelector)); } [Fact] public void NullElementSelectorExplicitComparer() { Func elementSelector = null; - Assert.Throws("elementSelector", () => Enumerable.Range(0, 1000).ToLookup(i => i / 10, elementSelector, EqualityComparer.Default)); + AssertExtensions.Throws("elementSelector", () => Enumerable.Range(0, 1000).ToLookup(i => i / 10, elementSelector, EqualityComparer.Default)); } [Theory] diff --git a/src/System.Linq/tests/UnionTests.cs b/src/System.Linq/tests/UnionTests.cs index 804ef33ea520..ab8f085d08e0 100644 --- a/src/System.Linq/tests/UnionTests.cs +++ b/src/System.Linq/tests/UnionTests.cs @@ -118,7 +118,7 @@ public void FirstNullCustomComparer() string[] first = null; string[] second = { "ttaM", "Charlie", "Bbo" }; - var ane = Assert.Throws("first", () => first.Union(second, new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("first", () => first.Union(second, new AnagramEqualityComparer())); } [Fact] @@ -127,7 +127,7 @@ public void SecondNullCustomComparer() string[] first = { "Bob", "Robert", "Tim", "Matt", "miT" }; string[] second = null; - var ane = Assert.Throws("second", () => first.Union(second, new AnagramEqualityComparer())); + var ane = AssertExtensions.Throws("second", () => first.Union(second, new AnagramEqualityComparer())); } [Fact] @@ -136,7 +136,7 @@ public void FirstNullNoComparer() string[] first = null; string[] second = { "ttaM", "Charlie", "Bbo" }; - var ane = Assert.Throws("first", () => first.Union(second)); + var ane = AssertExtensions.Throws("first", () => first.Union(second)); } [Fact] @@ -145,7 +145,7 @@ public void SecondNullNoComparer() string[] first = { "Bob", "Robert", "Tim", "Matt", "miT" }; string[] second = null; - var ane = Assert.Throws("second", () => first.Union(second)); + var ane = AssertExtensions.Throws("second", () => first.Union(second)); } [Fact] diff --git a/src/System.Linq/tests/WhereTests.cs b/src/System.Linq/tests/WhereTests.cs index a04444f13161..0f7fa2cf58d3 100644 --- a/src/System.Linq/tests/WhereTests.cs +++ b/src/System.Linq/tests/WhereTests.cs @@ -20,8 +20,8 @@ public void Where_SourceIsNull_ArgumentNullExceptionThrown() Func simplePredicate = (value) => true; Func complexPredicate = (value, index) => true; - Assert.Throws("source", () => source.Where(simplePredicate)); - Assert.Throws("source", () => source.Where(complexPredicate)); + AssertExtensions.Throws("source", () => source.Where(simplePredicate)); + AssertExtensions.Throws("source", () => source.Where(complexPredicate)); } [Fact] @@ -31,8 +31,8 @@ public void Where_PredicateIsNull_ArgumentNullExceptionThrown() Func simplePredicate = null; Func complexPredicate = null; - Assert.Throws("predicate", () => source.Where(simplePredicate)); - Assert.Throws("predicate", () => source.Where(complexPredicate)); + AssertExtensions.Throws("predicate", () => source.Where(simplePredicate)); + AssertExtensions.Throws("predicate", () => source.Where(complexPredicate)); } #endregion diff --git a/src/System.Linq/tests/ZipTests.cs b/src/System.Linq/tests/ZipTests.cs index ce0fbbd8cf5c..1d94dc155dc6 100644 --- a/src/System.Linq/tests/ZipTests.cs +++ b/src/System.Linq/tests/ZipTests.cs @@ -37,7 +37,7 @@ public void FirstIsNull() IEnumerable first = null; IEnumerable second = new int[] { 2, 5, 9 }; - Assert.Throws("first", () => first.Zip(second, (x, y) => x + y)); + AssertExtensions.Throws("first", () => first.Zip(second, (x, y) => x + y)); } [Fact] @@ -46,7 +46,7 @@ public void SecondIsNull() IEnumerable first = new int[] { 1, 2, 3 }; IEnumerable second = null; - Assert.Throws("second", () => first.Zip(second, (x, y) => x + y)); + AssertExtensions.Throws("second", () => first.Zip(second, (x, y) => x + y)); } [Fact] @@ -56,7 +56,7 @@ public void FuncIsNull() IEnumerable second = new int[] { 2, 4, 6 }; Func func = null; - Assert.Throws("resultSelector", () => first.Zip(second, func)); + AssertExtensions.Throws("resultSelector", () => first.Zip(second, func)); } [Fact] diff --git a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs index 7ad14421e612..6cecc4237134 100644 --- a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs +++ b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs @@ -32,7 +32,7 @@ public void ClientCertificateOptions_InvalidArg_ThrowsException(ClientCertificat { using (var handler = new HttpClientHandler()) { - Assert.Throws("value", () => handler.ClientCertificateOptions = option); + AssertExtensions.Throws("value", () => handler.ClientCertificateOptions = option); } } diff --git a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs index 623eac5d8b17..8237ba9ca6d2 100644 --- a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs +++ b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs @@ -33,7 +33,7 @@ public void InvalidValue_ThrowsException(int invalidValue) { using (var handler = new HttpClientHandler()) { - Assert.Throws("value", () => handler.MaxResponseHeadersLength = invalidValue); + AssertExtensions.Throws("value", () => handler.MaxResponseHeadersLength = invalidValue); } } diff --git a/src/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs b/src/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs index f27cd0e60515..269b81630eb9 100644 --- a/src/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs +++ b/src/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs @@ -59,8 +59,8 @@ public void BaseAddress_InvalidUri_Throws() { using (var client = new HttpClient()) { - Assert.Throws("value", () => client.BaseAddress = new Uri("ftp://onlyhttpsupported")); - Assert.Throws("value", () => client.BaseAddress = new Uri("/onlyabsolutesupported", UriKind.Relative)); + AssertExtensions.Throws("value", () => client.BaseAddress = new Uri("ftp://onlyhttpsupported")); + AssertExtensions.Throws("value", () => client.BaseAddress = new Uri("/onlyabsolutesupported", UriKind.Relative)); } } @@ -82,9 +82,9 @@ public void Timeout_OutOfRange_Throws() { using (var client = new HttpClient()) { - Assert.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(-2)); - Assert.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(0)); - Assert.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(int.MaxValue)); + AssertExtensions.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(-2)); + AssertExtensions.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(0)); + AssertExtensions.Throws("value", () => client.Timeout = TimeSpan.FromSeconds(int.MaxValue)); } } @@ -108,9 +108,9 @@ public void MaxResponseContentBufferSize_OutOfRange_Throws() { using (var client = new HttpClient()) { - Assert.Throws("value", () => client.MaxResponseContentBufferSize = -1); - Assert.Throws("value", () => client.MaxResponseContentBufferSize = 0); - Assert.Throws("value", () => client.MaxResponseContentBufferSize = 1 + (long)int.MaxValue); + AssertExtensions.Throws("value", () => client.MaxResponseContentBufferSize = -1); + AssertExtensions.Throws("value", () => client.MaxResponseContentBufferSize = 0); + AssertExtensions.Throws("value", () => client.MaxResponseContentBufferSize = 1 + (long)int.MaxValue); } } @@ -309,7 +309,7 @@ public void SendAsync_NullRequest_ThrowsException() { using (var client = new HttpClient(new CustomResponseHandler((r,c) => Task.FromResult(null)))) { - Assert.Throws("request", () => { client.SendAsync(null); }); + AssertExtensions.Throws("request", () => { client.SendAsync(null); }); } } diff --git a/src/System.Net.Http/tests/FunctionalTests/MultipartContentTest.cs b/src/System.Net.Http/tests/FunctionalTests/MultipartContentTest.cs index 217ba6066af5..b8e4bfc466b8 100644 --- a/src/System.Net.Http/tests/FunctionalTests/MultipartContentTest.cs +++ b/src/System.Net.Http/tests/FunctionalTests/MultipartContentTest.cs @@ -304,19 +304,19 @@ public async Task ReadAsStreamAsync_InvalidArgs_Throw() Assert.False(s.CanWrite); Assert.True(s.CanSeek); - Assert.Throws("buffer", () => s.Read(null, 0, 0)); - Assert.Throws("offset", () => s.Read(new byte[1], -1, 0)); - Assert.Throws("count", () => s.Read(new byte[1], 0, -1)); - Assert.Throws("buffer", () => s.Read(new byte[1], 1, 1)); - - Assert.Throws("buffer", () => { s.ReadAsync(null, 0, 0); }); - Assert.Throws("offset", () => { s.ReadAsync(new byte[1], -1, 0); }); - Assert.Throws("count", () => { s.ReadAsync(new byte[1], 0, -1); }); - Assert.Throws("buffer", () => { s.ReadAsync(new byte[1], 1, 1); }); - - Assert.Throws("value", () => s.Position = -1); - Assert.Throws("value", () => s.Seek(-1, SeekOrigin.Begin)); - Assert.Throws("origin", () => s.Seek(0, (SeekOrigin)42)); + AssertExtensions.Throws("buffer", () => s.Read(null, 0, 0)); + AssertExtensions.Throws("offset", () => s.Read(new byte[1], -1, 0)); + AssertExtensions.Throws("count", () => s.Read(new byte[1], 0, -1)); + AssertExtensions.Throws("buffer", () => s.Read(new byte[1], 1, 1)); + + AssertExtensions.Throws("buffer", () => { s.ReadAsync(null, 0, 0); }); + AssertExtensions.Throws("offset", () => { s.ReadAsync(new byte[1], -1, 0); }); + AssertExtensions.Throws("count", () => { s.ReadAsync(new byte[1], 0, -1); }); + AssertExtensions.Throws("buffer", () => { s.ReadAsync(new byte[1], 1, 1); }); + + AssertExtensions.Throws("value", () => s.Position = -1); + AssertExtensions.Throws("value", () => s.Seek(-1, SeekOrigin.Begin)); + AssertExtensions.Throws("origin", () => s.Seek(0, (SeekOrigin)42)); Assert.Throws(() => s.Write(new byte[1], 0, 0)); Assert.Throws(() => { s.WriteAsync(new byte[1], 0, 0); }); diff --git a/src/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj b/src/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj index 9ef6cbf2144a..b6b501cf5943 100644 --- a/src/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj +++ b/src/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj @@ -9,6 +9,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs b/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs index 8c7eef6197de..a8e79f7e331e 100644 --- a/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs +++ b/src/System.Net.HttpListener/tests/HttpRequestStreamTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -336,7 +336,7 @@ public async Task Read_NullBuffer_ThrowsArgumentNullException(bool chunked) HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { - Assert.Throws("buffer", () => inputStream.Read(null, 0, 0)); + AssertExtensions.Throws("buffer", () => inputStream.Read(null, 0, 0)); await Assert.ThrowsAsync("buffer", () => inputStream.ReadAsync(null, 0, 0)); } } @@ -351,7 +351,7 @@ public async Task Read_InvalidOffset_ThrowsArgumentOutOfRangeException(int offse HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { - Assert.Throws("offset", () => inputStream.Read(new byte[2], offset, 0)); + AssertExtensions.Throws("offset", () => inputStream.Read(new byte[2], offset, 0)); await Assert.ThrowsAsync("offset", () => inputStream.ReadAsync(new byte[2], offset, 0)); } } @@ -368,7 +368,7 @@ public async Task Read_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int o HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { - Assert.Throws("size", () => inputStream.Read(new byte[2], offset, size)); + AssertExtensions.Throws("size", () => inputStream.Read(new byte[2], offset, size)); await Assert.ThrowsAsync("size", () => inputStream.ReadAsync(new byte[2], offset, size)); } } @@ -381,7 +381,7 @@ public async Task EndRead_NullAsyncResult_ThrowsArgumentNullException(bool chunk HttpListenerRequest request = await _helper.GetRequest(chunked); using (Stream inputStream = request.InputStream) { - Assert.Throws("asyncResult", () => inputStream.EndRead(null)); + AssertExtensions.Throws("asyncResult", () => inputStream.EndRead(null)); } } @@ -399,8 +399,8 @@ public async Task EndRead_InvalidAsyncResult_ThrowsArgumentException(bool chunke { IAsyncResult beginReadResult = inputStream1.BeginRead(new byte[0], 0, 0, null, null); - Assert.Throws("asyncResult", () => inputStream2.EndRead(new CustomAsyncResult())); - Assert.Throws("asyncResult", () => inputStream2.EndRead(beginReadResult)); + AssertExtensions.Throws("asyncResult", () => inputStream2.EndRead(new CustomAsyncResult())); + AssertExtensions.Throws("asyncResult", () => inputStream2.EndRead(beginReadResult)); } } diff --git a/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs b/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs index 49c28b831705..bda72b3c53e5 100644 --- a/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs +++ b/src/System.Net.HttpListener/tests/HttpResponseStreamTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.IO; using System.Net.Http; using System.Net.Sockets; @@ -279,7 +280,7 @@ public async Task Write_NullBuffer_ThrowsArgumentNullException() using (HttpListenerResponse response = await _helper.GetResponse()) using (Stream outputStream = response.OutputStream) { - Assert.Throws("buffer", () => outputStream.Write(null, 0, 0)); + AssertExtensions.Throws("buffer", () => outputStream.Write(null, 0, 0)); await Assert.ThrowsAsync("buffer", () => outputStream.WriteAsync(null, 0, 0)); } } @@ -292,7 +293,7 @@ public async Task Write_InvalidOffset_ThrowsArgumentOutOfRangeException(int offs using (HttpListenerResponse response = await _helper.GetResponse()) using (Stream outputStream = response.OutputStream) { - Assert.Throws("offset", () => outputStream.Write(new byte[2], offset, 0)); + AssertExtensions.Throws("offset", () => outputStream.Write(new byte[2], offset, 0)); await Assert.ThrowsAsync("offset", () => outputStream.WriteAsync(new byte[2], offset, 0)); } } @@ -306,7 +307,7 @@ public async Task Write_InvalidOffsetSize_ThrowsArgumentOutOfRangeException(int using (HttpListenerResponse response = await _helper.GetResponse()) using (Stream outputStream = response.OutputStream) { - Assert.Throws("size", () => outputStream.Write(new byte[2], offset, size)); + AssertExtensions.Throws("size", () => outputStream.Write(new byte[2], offset, size)); await Assert.ThrowsAsync("size", () => outputStream.WriteAsync(new byte[2], offset, size)); } } @@ -547,7 +548,7 @@ public async Task EndWrite_NullAsyncResult_ThrowsArgumentNullException(bool igno using (HttpListenerResponse response = await _helper.GetResponse()) using (Stream outputStream = response.OutputStream) { - Assert.Throws("asyncResult", () => outputStream.EndWrite(null)); + AssertExtensions.Throws("asyncResult", () => outputStream.EndWrite(null)); } } @@ -562,8 +563,8 @@ public async Task EndWrite_InvalidAsyncResult_ThrowsArgumentException() { IAsyncResult beginWriteResult = outputStream1.BeginWrite(new byte[0], 0, 0, null, null); - Assert.Throws("asyncResult", () => outputStream2.EndWrite(new CustomAsyncResult())); - Assert.Throws("asyncResult", () => outputStream2.EndWrite(beginWriteResult)); + AssertExtensions.Throws("asyncResult", () => outputStream2.EndWrite(new CustomAsyncResult())); + AssertExtensions.Throws("asyncResult", () => outputStream2.EndWrite(beginWriteResult)); } } @@ -582,4 +583,4 @@ public async Task EndWrite_CalledTwice_ThrowsInvalidOperationException() } } } - \ No newline at end of file + diff --git a/src/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj b/src/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj index 0d6c43d4ec1d..76bf8ad850be 100644 --- a/src/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj +++ b/src/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj @@ -17,6 +17,9 @@ + + Common\System\AssertExtensions.cs + Common\tests\System\PlatformDetection.cs diff --git a/src/System.Net.Mail/tests/Functional/ContentTypeTest.cs b/src/System.Net.Mail/tests/Functional/ContentTypeTest.cs index 50fcbbea5de4..ffd6d1c5a522 100644 --- a/src/System.Net.Mail/tests/Functional/ContentTypeTest.cs +++ b/src/System.Net.Mail/tests/Functional/ContentTypeTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Net.Mime.Tests @@ -154,8 +155,8 @@ public static void Name_Roundtrip() public static void MediaType_Set_InvalidArgs_Throws() { var ct = new ContentType(); - Assert.Throws("value", () => ct.MediaType = null); - Assert.Throws("value", () => ct.MediaType = ""); + AssertExtensions.Throws("value", () => ct.MediaType = null); + AssertExtensions.Throws("value", () => ct.MediaType = ""); } [Fact] diff --git a/src/System.Net.Mail/tests/Functional/System.Net.Mail.Functional.Tests.csproj b/src/System.Net.Mail/tests/Functional/System.Net.Mail.Functional.Tests.csproj index d135372e61ee..5ea28c39c447 100644 --- a/src/System.Net.Mail/tests/Functional/System.Net.Mail.Functional.Tests.csproj +++ b/src/System.Net.Mail/tests/Functional/System.Net.Mail.Functional.Tests.csproj @@ -22,6 +22,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs b/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs index 95d5afbfb8e6..460dd5c8591b 100644 --- a/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs +++ b/src/System.Net.Ping/tests/FunctionalTests/PingTest.cs @@ -40,44 +40,44 @@ public async Task SendPingAsync_InvalidArgs() Ping p = new Ping(); // Null address - Assert.Throws("address", () => { p.SendPingAsync((IPAddress)null); }); - Assert.Throws("hostNameOrAddress", () => { p.SendPingAsync((string)null); }); - Assert.Throws("address", () => { p.SendAsync((IPAddress)null, null); }); - Assert.Throws("hostNameOrAddress", () => { p.SendAsync((string)null, null); }); - Assert.Throws("address", () => { p.Send((IPAddress)null); }); - Assert.Throws("hostNameOrAddress", () => { p.Send((string)null); }); + AssertExtensions.Throws("address", () => { p.SendPingAsync((IPAddress)null); }); + AssertExtensions.Throws("hostNameOrAddress", () => { p.SendPingAsync((string)null); }); + AssertExtensions.Throws("address", () => { p.SendAsync((IPAddress)null, null); }); + AssertExtensions.Throws("hostNameOrAddress", () => { p.SendAsync((string)null, null); }); + AssertExtensions.Throws("address", () => { p.Send((IPAddress)null); }); + AssertExtensions.Throws("hostNameOrAddress", () => { p.Send((string)null); }); // Invalid address - Assert.Throws("address", () => { p.SendPingAsync(IPAddress.Any); }); - Assert.Throws("address", () => { p.SendPingAsync(IPAddress.IPv6Any); }); - Assert.Throws("address", () => { p.SendAsync(IPAddress.Any, null); }); - Assert.Throws("address", () => { p.SendAsync(IPAddress.IPv6Any, null); }); - Assert.Throws("address", () => { p.Send(IPAddress.Any); }); - Assert.Throws("address", () => { p.Send(IPAddress.IPv6Any); }); + AssertExtensions.Throws("address", () => { p.SendPingAsync(IPAddress.Any); }); + AssertExtensions.Throws("address", () => { p.SendPingAsync(IPAddress.IPv6Any); }); + AssertExtensions.Throws("address", () => { p.SendAsync(IPAddress.Any, null); }); + AssertExtensions.Throws("address", () => { p.SendAsync(IPAddress.IPv6Any, null); }); + AssertExtensions.Throws("address", () => { p.Send(IPAddress.Any); }); + AssertExtensions.Throws("address", () => { p.Send(IPAddress.IPv6Any); }); // Negative timeout - Assert.Throws("timeout", () => { p.SendPingAsync(localIpAddress, -1); }); - Assert.Throws("timeout", () => { p.SendPingAsync(TestSettings.LocalHost, -1); }); - Assert.Throws("timeout", () => { p.SendAsync(localIpAddress, -1, null); }); - Assert.Throws("timeout", () => { p.SendAsync(TestSettings.LocalHost, -1, null); }); - Assert.Throws("timeout", () => { p.Send(localIpAddress, -1); }); - Assert.Throws("timeout", () => { p.Send(TestSettings.LocalHost, -1); }); + AssertExtensions.Throws("timeout", () => { p.SendPingAsync(localIpAddress, -1); }); + AssertExtensions.Throws("timeout", () => { p.SendPingAsync(TestSettings.LocalHost, -1); }); + AssertExtensions.Throws("timeout", () => { p.SendAsync(localIpAddress, -1, null); }); + AssertExtensions.Throws("timeout", () => { p.SendAsync(TestSettings.LocalHost, -1, null); }); + AssertExtensions.Throws("timeout", () => { p.Send(localIpAddress, -1); }); + AssertExtensions.Throws("timeout", () => { p.Send(TestSettings.LocalHost, -1); }); // Null byte[] - Assert.Throws("buffer", () => { p.SendPingAsync(localIpAddress, 0, null); }); - Assert.Throws("buffer", () => { p.SendPingAsync(TestSettings.LocalHost, 0, null); }); - Assert.Throws("buffer", () => { p.SendAsync(localIpAddress, 0, null, null); }); - Assert.Throws("buffer", () => { p.SendAsync(TestSettings.LocalHost, 0, null, null); }); - Assert.Throws("buffer", () => { p.Send(localIpAddress, 0, null); }); - Assert.Throws("buffer", () => { p.Send(TestSettings.LocalHost, 0, null); }); + AssertExtensions.Throws("buffer", () => { p.SendPingAsync(localIpAddress, 0, null); }); + AssertExtensions.Throws("buffer", () => { p.SendPingAsync(TestSettings.LocalHost, 0, null); }); + AssertExtensions.Throws("buffer", () => { p.SendAsync(localIpAddress, 0, null, null); }); + AssertExtensions.Throws("buffer", () => { p.SendAsync(TestSettings.LocalHost, 0, null, null); }); + AssertExtensions.Throws("buffer", () => { p.Send(localIpAddress, 0, null); }); + AssertExtensions.Throws("buffer", () => { p.Send(TestSettings.LocalHost, 0, null); }); // Too large byte[] - Assert.Throws("buffer", () => { p.SendPingAsync(localIpAddress, 1, new byte[65501]); }); - Assert.Throws("buffer", () => { p.SendPingAsync(TestSettings.LocalHost, 1, new byte[65501]); }); - Assert.Throws("buffer", () => { p.SendAsync(localIpAddress, 1, new byte[65501], null); }); - Assert.Throws("buffer", () => { p.SendAsync(TestSettings.LocalHost, 1, new byte[65501], null); }); - Assert.Throws("buffer", () => { p.Send(localIpAddress, 1, new byte[65501]); }); - Assert.Throws("buffer", () => { p.Send(TestSettings.LocalHost, 1, new byte[65501]); }); + AssertExtensions.Throws("buffer", () => { p.SendPingAsync(localIpAddress, 1, new byte[65501]); }); + AssertExtensions.Throws("buffer", () => { p.SendPingAsync(TestSettings.LocalHost, 1, new byte[65501]); }); + AssertExtensions.Throws("buffer", () => { p.SendAsync(localIpAddress, 1, new byte[65501], null); }); + AssertExtensions.Throws("buffer", () => { p.SendAsync(TestSettings.LocalHost, 1, new byte[65501], null); }); + AssertExtensions.Throws("buffer", () => { p.Send(localIpAddress, 1, new byte[65501]); }); + AssertExtensions.Throws("buffer", () => { p.Send(TestSettings.LocalHost, 1, new byte[65501]); }); } [Fact] diff --git a/src/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj b/src/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj index 9702976cf0ea..b60da1120443 100644 --- a/src/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj +++ b/src/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj @@ -24,6 +24,9 @@ Common\System\Net\NetworkInformation\UnixCommandLinePing.cs + + Common\System\AssertExtensions.cs + Common\System\Net\Capability.RawSocketPermissions.cs diff --git a/src/System.Net.Primitives/tests/FunctionalTests/CredentialCacheTest.cs b/src/System.Net.Primitives/tests/FunctionalTests/CredentialCacheTest.cs index cab63a553ce7..cb2c97c540b0 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/CredentialCacheTest.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/CredentialCacheTest.cs @@ -121,8 +121,8 @@ public static void Add_UriAuthenticationTypeCredential_Invalid() Assert.Null(cc.GetCredential(new Uri("http://invalid.uri"), authenticationType1)); //No such uriPrefix Assert.Null(cc.GetCredential(uriPrefix1, "invalid-authentication-type")); //No such authenticationType - Assert.Throws("uriPrefix", () => cc.Add(null, "some", new NetworkCredential())); //Null uriPrefix - Assert.Throws("authType", () => cc.Add(new Uri("http://microsoft:80"), null, new NetworkCredential())); //Null authenticationType + AssertExtensions.Throws("uriPrefix", () => cc.Add(null, "some", new NetworkCredential())); //Null uriPrefix + AssertExtensions.Throws("authType", () => cc.Add(new Uri("http://microsoft:80"), null, new NetworkCredential())); //Null authenticationType } [Fact] @@ -159,8 +159,8 @@ public static void Add_HostPortAuthenticationTypeCredential_Invalid() Assert.Null(cc.GetCredential(host1, 900, authenticationType1)); //No such port Assert.Null(cc.GetCredential(host1, port1, "invalid-authentication-type")); //No such authenticationType - Assert.Throws("host", () => cc.Add(null, 500, "authenticationType", new NetworkCredential())); //Null host - Assert.Throws("authenticationType", () => cc.Add("host", 500, null, new NetworkCredential())); //Null authenticationType + AssertExtensions.Throws("host", () => cc.Add(null, 500, "authenticationType", new NetworkCredential())); //Null host + AssertExtensions.Throws("authenticationType", () => cc.Add("host", 500, null, new NetworkCredential())); //Null authenticationType var exception = Record.Exception(() => cc.Add("", 500, "authenticationType", new NetworkCredential())); // On full framework we get exception.ParamName as null while it is "host" on netcore @@ -169,7 +169,7 @@ public static void Add_HostPortAuthenticationTypeCredential_Invalid() ArgumentException ae = exception as ArgumentException; Assert.True(ae.ParamName == "host" || ae.ParamName == null); - Assert.Throws("port", () => cc.Add("host", -1, "authenticationType", new NetworkCredential())); //Port < 0 + AssertExtensions.Throws("port", () => cc.Add("host", -1, "authenticationType", new NetworkCredential())); //Port < 0 } [Fact] @@ -238,8 +238,8 @@ public static void GetCredential_UriAuthenticationType_Invalid() { CredentialCache cc = new CredentialCache(); - Assert.Throws("uriPrefix", () => cc.GetCredential(null, "authenticationType")); //Null uriPrefix - Assert.Throws("authType", () => cc.GetCredential(new Uri("http://microsoft:80"), null)); //Null authenticationType + AssertExtensions.Throws("uriPrefix", () => cc.GetCredential(null, "authenticationType")); //Null uriPrefix + AssertExtensions.Throws("authType", () => cc.GetCredential(new Uri("http://microsoft:80"), null)); //Null authenticationType } [Fact] @@ -247,8 +247,8 @@ public static void GetCredential_HostPortAuthenticationType_Invalid() { CredentialCache cc = new CredentialCache(); - Assert.Throws("host", () => cc.GetCredential(null, 500, "authenticationType")); //Null host - Assert.Throws("authenticationType", () => cc.GetCredential("host", 500, null)); //Null authenticationType + AssertExtensions.Throws("host", () => cc.GetCredential(null, 500, "authenticationType")); //Null host + AssertExtensions.Throws("authenticationType", () => cc.GetCredential("host", 500, null)); //Null authenticationType var exception = Record.Exception(() => cc.GetCredential("", 500, "authenticationType")); //Empty host // On full framework we get exception.ParamName as null while it is "host" on netcore @@ -257,7 +257,7 @@ public static void GetCredential_HostPortAuthenticationType_Invalid() ArgumentException ae = exception as ArgumentException; Assert.True(ae.ParamName == "host" || ae.ParamName == null); - Assert.Throws("port", () => cc.GetCredential("host", -1, "authenticationType")); //Port < 0 + AssertExtensions.Throws("port", () => cc.GetCredential("host", -1, "authenticationType")); //Port < 0 } public static IEnumerable GetEnumeratorWithCountTestData @@ -402,7 +402,7 @@ public static void AddRemove_UriAuthenticationTypeDefaultCredentials_Success_net // The full framework throw System.ArgumentException with the message // 'Default credentials cannot be supplied for the authenticationType1 authentication scheme.' - Assert.Throws("authType", () => cc.Add(uriPrefix1, authenticationType1, nc)); + AssertExtensions.Throws("authType", () => cc.Add(uriPrefix1, authenticationType1, nc)); } [Fact] diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs index 008972c6fb07..23632875d717 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs @@ -54,7 +54,7 @@ public static void Ctor_Long_Success(long address, byte[] expectedBytes) [InlineData(MaxAddress + 1)] public static void Ctor_Long_Invalid(long address) { - Assert.Throws("newAddress", () => new IPAddress(address)); + AssertExtensions.Throws("newAddress", () => new IPAddress(address)); } [Theory] @@ -76,8 +76,8 @@ public static void Ctor_Bytes_Success(byte[] address, AddressFamily expectedFami [Fact] public static void Ctor_Bytes_Invalid() { - Assert.Throws("address", () => new IPAddress(null)); - Assert.Throws("address", () => new IPAddress(new byte[] { 0x01, 0x01, 0x02 })); + AssertExtensions.Throws("address", () => new IPAddress(null)); + AssertExtensions.Throws("address", () => new IPAddress(new byte[] { 0x01, 0x01, 0x02 })); } [Theory] @@ -105,12 +105,12 @@ public static IEnumerable IPv6AddressBytesAndScopeIds [Fact] public static void Ctor_BytesScopeId_Invalid() { - Assert.Throws("address", () => new IPAddress(null, 500)); + AssertExtensions.Throws("address", () => new IPAddress(null, 500)); - Assert.Throws("address", () => new IPAddress(new byte[] { 0x01, 0x01, 0x02 }, 500)); + AssertExtensions.Throws("address", () => new IPAddress(new byte[] { 0x01, 0x01, 0x02 }, 500)); - Assert.Throws("scopeid", () => new IPAddress(ipV6AddressBytes1, MinScopeId - 1)); - Assert.Throws("scopeid", () => new IPAddress(ipV6AddressBytes1, MaxScopeId + 1)); + AssertExtensions.Throws("scopeid", () => new IPAddress(ipV6AddressBytes1, MinScopeId - 1)); + AssertExtensions.Throws("scopeid", () => new IPAddress(ipV6AddressBytes1, MaxScopeId + 1)); } [Theory] @@ -146,7 +146,7 @@ public static void Parse_String_Invalid(string ipString) [Fact] public static void Parse_String_Invalid() { - Assert.Throws("ipString", () => { IPAddress.Parse(null); }); + AssertExtensions.Throws("ipString", () => { IPAddress.Parse(null); }); IPAddress ip; Assert.False(IPAddress.TryParse(null, out ip)); } @@ -171,8 +171,8 @@ public static void ScopeId_Set_Invalid() Assert.ThrowsAny(() => ip.ScopeId); ip = IPV6Address1(); //IpV6 - Assert.Throws("value", () => ip.ScopeId = MinScopeId - 1); - Assert.Throws("value", () => ip.ScopeId = MaxScopeId + 1); + AssertExtensions.Throws("value", () => ip.ScopeId = MinScopeId - 1); + AssertExtensions.Throws("value", () => ip.ScopeId = MaxScopeId + 1); } [Fact] @@ -215,7 +215,7 @@ public static void IsLoopback_Get_Success() [Fact] public static void IsLooback_Get_Invalid() { - Assert.Throws("address", () => IPAddress.IsLoopback(null)); + AssertExtensions.Throws("address", () => IPAddress.IsLoopback(null)); } [Fact] diff --git a/src/System.Net.Primitives/tests/FunctionalTests/RequestCachePolicyTest.cs b/src/System.Net.Primitives/tests/FunctionalTests/RequestCachePolicyTest.cs index aa6e1addc208..cd796adbc067 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/RequestCachePolicyTest.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/RequestCachePolicyTest.cs @@ -20,7 +20,7 @@ public void Ctor_ExpectedPropertyValues() [Fact] public void Ctor_InvalidArg_Throws() { - Assert.Throws("level", () => new RequestCachePolicy((RequestCacheLevel)42)); + AssertExtensions.Throws("level", () => new RequestCachePolicy((RequestCacheLevel)42)); } [Fact] diff --git a/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj b/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj index b7dcf6c1ef14..bd3e393e601c 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj +++ b/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj @@ -28,6 +28,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Net.Requests/tests/FileWebRequestTest.cs b/src/System.Net.Requests/tests/FileWebRequestTest.cs index 5d5d140416a1..6a35d47c84af 100644 --- a/src/System.Net.Requests/tests/FileWebRequestTest.cs +++ b/src/System.Net.Requests/tests/FileWebRequestTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.IO; using System.Net.Http; using System.Net.Test.Common; @@ -55,10 +56,10 @@ public void FileWebRequest_Properties_Roundtrips() public void InvalidArguments_Throws() { WebRequest request = WebRequest.Create("file://anything"); - Assert.Throws("value", () => request.ContentLength = -1); - Assert.Throws("value", () => request.Method = null); - Assert.Throws("value", () => request.Method = ""); - Assert.Throws("value", () => request.Timeout = -2); + AssertExtensions.Throws("value", () => request.ContentLength = -1); + AssertExtensions.Throws("value", () => request.Method = null); + AssertExtensions.Throws("value", () => request.Method = ""); + AssertExtensions.Throws("value", () => request.Timeout = -2); } [Fact] diff --git a/src/System.Net.Requests/tests/HttpRequestCachePolicyTest.cs b/src/System.Net.Requests/tests/HttpRequestCachePolicyTest.cs index dbc9818afc4c..d8c2553f27ad 100644 --- a/src/System.Net.Requests/tests/HttpRequestCachePolicyTest.cs +++ b/src/System.Net.Requests/tests/HttpRequestCachePolicyTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Net.Cache; @@ -46,9 +47,9 @@ public void Ctor_ExpectedPropertyValues( [Fact] public void Ctor_InvalidArgs_Throws() { - Assert.Throws("level", () => new HttpRequestCachePolicy((HttpRequestCacheLevel)42)); - Assert.Throws("cacheAgeControl", () => new HttpRequestCachePolicy(HttpCacheAgeControl.MaxAgeAndMinFresh, TimeSpan.FromSeconds(1))); - Assert.Throws("cacheAgeControl", () => new HttpRequestCachePolicy(HttpCacheAgeControl.None, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2))); + AssertExtensions.Throws("level", () => new HttpRequestCachePolicy((HttpRequestCacheLevel)42)); + AssertExtensions.Throws("cacheAgeControl", () => new HttpRequestCachePolicy(HttpCacheAgeControl.MaxAgeAndMinFresh, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("cacheAgeControl", () => new HttpRequestCachePolicy(HttpCacheAgeControl.None, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2))); } } } diff --git a/src/System.Net.Requests/tests/System.Net.Requests.Tests.csproj b/src/System.Net.Requests/tests/System.Net.Requests.Tests.csproj index f3afaeb04700..c586486171c6 100644 --- a/src/System.Net.Requests/tests/System.Net.Requests.Tests.csproj +++ b/src/System.Net.Requests/tests/System.Net.Requests.Tests.csproj @@ -13,6 +13,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs b/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs index 22af034b15d9..5893d6558470 100644 --- a/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs +++ b/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using Xunit; @@ -162,24 +163,24 @@ public static void InvalidArguments_Throw() Assert.Throws(() => ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | ssl2); #pragma warning restore Assert.Throws(() => ServicePointManager.SecurityProtocol = ssl2); - Assert.Throws("uriString", () => ServicePointManager.FindServicePoint((string)null, null)); - Assert.Throws("value", () => ServicePointManager.MaxServicePoints = -1); - Assert.Throws("value", () => ServicePointManager.DefaultConnectionLimit = 0); - Assert.Throws("value", () => ServicePointManager.MaxServicePointIdleTime = -2); - Assert.Throws("keepAliveTime", () => ServicePointManager.SetTcpKeepAlive(true, -1, 1)); - Assert.Throws("keepAliveInterval", () => ServicePointManager.SetTcpKeepAlive(true, 1, -1)); - Assert.Throws("address", () => ServicePointManager.FindServicePoint(null)); - Assert.Throws("uriString", () => ServicePointManager.FindServicePoint((string)null, null)); - Assert.Throws("address", () => ServicePointManager.FindServicePoint((Uri)null, null)); + AssertExtensions.Throws("uriString", () => ServicePointManager.FindServicePoint((string)null, null)); + AssertExtensions.Throws("value", () => ServicePointManager.MaxServicePoints = -1); + AssertExtensions.Throws("value", () => ServicePointManager.DefaultConnectionLimit = 0); + AssertExtensions.Throws("value", () => ServicePointManager.MaxServicePointIdleTime = -2); + AssertExtensions.Throws("keepAliveTime", () => ServicePointManager.SetTcpKeepAlive(true, -1, 1)); + AssertExtensions.Throws("keepAliveInterval", () => ServicePointManager.SetTcpKeepAlive(true, 1, -1)); + AssertExtensions.Throws("address", () => ServicePointManager.FindServicePoint(null)); + AssertExtensions.Throws("uriString", () => ServicePointManager.FindServicePoint((string)null, null)); + AssertExtensions.Throws("address", () => ServicePointManager.FindServicePoint((Uri)null, null)); Assert.Throws(() => ServicePointManager.FindServicePoint("http://anything", new FixedWebProxy("https://anything"))); ServicePoint sp = ServicePointManager.FindServicePoint("http://" + Guid.NewGuid().ToString("N"), null); - Assert.Throws("value", () => sp.ConnectionLeaseTimeout = -2); - Assert.Throws("value", () => sp.ConnectionLimit = 0); - Assert.Throws("value", () => sp.MaxIdleTime = -2); - Assert.Throws("value", () => sp.ReceiveBufferSize = -2); - Assert.Throws("keepAliveTime", () => sp.SetTcpKeepAlive(true, -1, 1)); - Assert.Throws("keepAliveInterval", () => sp.SetTcpKeepAlive(true, 1, -1)); + AssertExtensions.Throws("value", () => sp.ConnectionLeaseTimeout = -2); + AssertExtensions.Throws("value", () => sp.ConnectionLimit = 0); + AssertExtensions.Throws("value", () => sp.MaxIdleTime = -2); + AssertExtensions.Throws("value", () => sp.ReceiveBufferSize = -2); + AssertExtensions.Throws("keepAliveTime", () => sp.SetTcpKeepAlive(true, -1, 1)); + AssertExtensions.Throws("keepAliveInterval", () => sp.SetTcpKeepAlive(true, 1, -1)); } [Fact] diff --git a/src/System.Net.ServicePoint/tests/System.Net.ServicePoint.Tests.csproj b/src/System.Net.ServicePoint/tests/System.Net.ServicePoint.Tests.csproj index de1881acca38..c87dafdc5e31 100644 --- a/src/System.Net.ServicePoint/tests/System.Net.ServicePoint.Tests.csproj +++ b/src/System.Net.ServicePoint/tests/System.Net.ServicePoint.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs index 7afa021f622d..f886b66f01ac 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/DisconnectTest.cs @@ -30,8 +30,8 @@ public void InvalidArguments_Throw() { using (Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { - Assert.Throws("asyncResult", () => s.EndDisconnect(null)); - Assert.Throws("asyncResult", () => s.EndDisconnect(Task.CompletedTask)); + AssertExtensions.Throws("asyncResult", () => s.EndDisconnect(null)); + AssertExtensions.Throws("asyncResult", () => s.EndDisconnect(Task.CompletedTask)); s.Dispose(); Assert.Throws(() => s.Disconnect(true)); Assert.Throws(() => s.BeginDisconnect(true, null, null)); diff --git a/src/System.Net.Sockets/tests/FunctionalTests/MulticastOptionTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/MulticastOptionTest.cs index 8d8de763e1ed..6b712b21026a 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/MulticastOptionTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/MulticastOptionTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Net.Sockets.Tests @@ -11,12 +12,12 @@ public class MulticastOptionTest [Fact] public void MulticastOption_Ctor_InvalidArguments_Throws() { - Assert.Throws("group", () => new MulticastOption(null)); - Assert.Throws("group", () => new MulticastOption(null, 0)); - Assert.Throws("group", () => new MulticastOption(null, null)); - Assert.Throws("mcint", () => new MulticastOption(IPAddress.Loopback, null)); - Assert.Throws("interfaceIndex", () => new MulticastOption(IPAddress.Loopback, -1)); - Assert.Throws("interfaceIndex", () => new MulticastOption(IPAddress.Loopback, int.MaxValue)); + AssertExtensions.Throws("group", () => new MulticastOption(null)); + AssertExtensions.Throws("group", () => new MulticastOption(null, 0)); + AssertExtensions.Throws("group", () => new MulticastOption(null, null)); + AssertExtensions.Throws("mcint", () => new MulticastOption(IPAddress.Loopback, null)); + AssertExtensions.Throws("interfaceIndex", () => new MulticastOption(IPAddress.Loopback, -1)); + AssertExtensions.Throws("interfaceIndex", () => new MulticastOption(IPAddress.Loopback, int.MaxValue)); } [Fact] @@ -41,8 +42,8 @@ public void MulticastOption_InterfaceIndex_Roundtrips() option = new MulticastOption(IPAddress.Any, 42); Assert.Equal(42, option.InterfaceIndex); - Assert.Throws("value", () => option.InterfaceIndex = -1); - Assert.Throws("value", () => option.InterfaceIndex = int.MaxValue); + AssertExtensions.Throws("value", () => option.InterfaceIndex = -1); + AssertExtensions.Throws("value", () => option.InterfaceIndex = int.MaxValue); option.InterfaceIndex = 1; Assert.Equal(1, option.InterfaceIndex); @@ -69,10 +70,10 @@ public void MulticastOption_LocalAddress_Roundtrips() [Fact] public void IPv6MulticastOption_Ctor_InvalidArguments_Throws() { - Assert.Throws("group", () => new IPv6MulticastOption(null)); - Assert.Throws("group", () => new IPv6MulticastOption(null, 0)); - Assert.Throws("ifindex", () => new IPv6MulticastOption(IPAddress.Loopback, -1)); - Assert.Throws("ifindex", () => new IPv6MulticastOption(IPAddress.Loopback, long.MaxValue)); + AssertExtensions.Throws("group", () => new IPv6MulticastOption(null)); + AssertExtensions.Throws("group", () => new IPv6MulticastOption(null, 0)); + AssertExtensions.Throws("ifindex", () => new IPv6MulticastOption(IPAddress.Loopback, -1)); + AssertExtensions.Throws("ifindex", () => new IPv6MulticastOption(IPAddress.Loopback, long.MaxValue)); } [Fact] @@ -81,7 +82,7 @@ public void IPv6MulticastOption_Group_Roundtrips() var option = new IPv6MulticastOption(IPAddress.Any); Assert.Same(IPAddress.Any, option.Group); - Assert.Throws("value", () => option.Group = null); + AssertExtensions.Throws("value", () => option.Group = null); option.Group = IPAddress.Broadcast; Assert.Same(IPAddress.Broadcast, option.Group); @@ -96,8 +97,8 @@ public void IPv6MulticastOption_InterfaceIndex_Roundtrips() option = new IPv6MulticastOption(IPAddress.Any, 42); Assert.Equal(42, option.InterfaceIndex); - Assert.Throws("value", () => option.InterfaceIndex = -1); - Assert.Throws("value", () => option.InterfaceIndex = long.MaxValue); + AssertExtensions.Throws("value", () => option.InterfaceIndex = -1); + AssertExtensions.Throws("value", () => option.InterfaceIndex = long.MaxValue); option.InterfaceIndex = 1; Assert.Equal(1, option.InterfaceIndex); diff --git a/src/System.Net.Sockets/tests/FunctionalTests/NetworkStreamTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/NetworkStreamTest.cs index 594212217316..e6e36ae0685f 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/NetworkStreamTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/NetworkStreamTest.cs @@ -15,11 +15,11 @@ public class NetworkStreamTest [Fact] public void Ctor_NullSocket_ThrowsArgumentNullExceptions() { - Assert.Throws("socket", () => new NetworkStream(null)); - Assert.Throws("socket", () => new NetworkStream(null, false)); - Assert.Throws("socket", () => new NetworkStream(null, true)); - Assert.Throws("socket", () => new NetworkStream(null, FileAccess.ReadWrite)); - Assert.Throws("socket", () => new NetworkStream(null, FileAccess.ReadWrite, false)); + AssertExtensions.Throws("socket", () => new NetworkStream(null)); + AssertExtensions.Throws("socket", () => new NetworkStream(null, false)); + AssertExtensions.Throws("socket", () => new NetworkStream(null, true)); + AssertExtensions.Throws("socket", () => new NetworkStream(null, FileAccess.ReadWrite)); + AssertExtensions.Throws("socket", () => new NetworkStream(null, FileAccess.ReadWrite, false)); } [Fact] @@ -582,8 +582,8 @@ public async Task Timeout_InvalidData_ThrowsArgumentException(int invalidTimeout { await RunWithConnectedNetworkStreamsAsync((server, client) => { - Assert.Throws("value", () => server.ReadTimeout = invalidTimeout); - Assert.Throws("value", () => server.WriteTimeout = invalidTimeout); + AssertExtensions.Throws("value", () => server.ReadTimeout = invalidTimeout); + AssertExtensions.Throws("value", () => server.WriteTimeout = invalidTimeout); return Task.CompletedTask; }); } @@ -646,11 +646,11 @@ public async Task CopyToAsync_InvalidArguments_Throws() await RunWithConnectedNetworkStreamsAsync((stream, _) => { // Null destination - Assert.Throws("destination", () => { stream.CopyToAsync(null); }); + AssertExtensions.Throws("destination", () => { stream.CopyToAsync(null); }); // Buffer size out-of-range - Assert.Throws("bufferSize", () => { stream.CopyToAsync(new MemoryStream(), 0); }); - Assert.Throws("bufferSize", () => { stream.CopyToAsync(new MemoryStream(), -1, CancellationToken.None); }); + AssertExtensions.Throws("bufferSize", () => { stream.CopyToAsync(new MemoryStream(), 0); }); + AssertExtensions.Throws("bufferSize", () => { stream.CopyToAsync(new MemoryStream(), -1, CancellationToken.None); }); // Copying to non-writable stream Assert.Throws(() => { stream.CopyToAsync(new MemoryStream(new byte[0], writable: false)); }); diff --git a/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs index 2c6f8ef89150..4ccfc64074c3 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/SocketAsyncEventArgsTest.cs @@ -148,11 +148,11 @@ public void SetBuffer_InvalidArgs_Throws() { using (var saea = new SocketAsyncEventArgs()) { - Assert.Throws("offset", () => saea.SetBuffer(new byte[1], -1, 0)); - Assert.Throws("offset", () => saea.SetBuffer(new byte[1], 2, 0)); - Assert.Throws("count", () => saea.SetBuffer(new byte[1], 0, -1)); - Assert.Throws("count", () => saea.SetBuffer(new byte[1], 0, 2)); - Assert.Throws("count", () => saea.SetBuffer(new byte[1], 1, 2)); + AssertExtensions.Throws("offset", () => saea.SetBuffer(new byte[1], -1, 0)); + AssertExtensions.Throws("offset", () => saea.SetBuffer(new byte[1], 2, 0)); + AssertExtensions.Throws("count", () => saea.SetBuffer(new byte[1], 0, -1)); + AssertExtensions.Throws("count", () => saea.SetBuffer(new byte[1], 0, 2)); + AssertExtensions.Throws("count", () => saea.SetBuffer(new byte[1], 1, 2)); } } diff --git a/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs index 12ea88d725c9..5857bf202b10 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs @@ -317,7 +317,7 @@ public void SetIPProtectionLevel_ArgumentException(AddressFamily family) { using (var socket = new Socket(family, SocketType.Stream, ProtocolType.Tcp)) { - Assert.Throws("level", () => socket.SetIPProtectionLevel(IPProtectionLevel.Unspecified)); + AssertExtensions.Throws("level", () => socket.SetIPProtectionLevel(IPProtectionLevel.Unspecified)); } } } diff --git a/src/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj b/src/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj index d5237cd3737e..26fde497b6a3 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj +++ b/src/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj @@ -73,6 +73,9 @@ SocketCommon\SocketImplementationType.cs + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Net.Sockets/tests/FunctionalTests/TcpClientTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/TcpClientTest.cs index fa4b7fc006e2..22446782feb9 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/TcpClientTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/TcpClientTest.cs @@ -34,9 +34,9 @@ public void Ctor_InvalidFamily_Throws(AddressFamily family) [Fact] public void Ctor_InvalidArguments_Throws() { - Assert.Throws("localEP", () => new TcpClient(null)); - Assert.Throws("hostname", () => new TcpClient(null, 0)); - Assert.Throws("port", () => new TcpClient("localhost", -1)); + AssertExtensions.Throws("localEP", () => new TcpClient(null)); + AssertExtensions.Throws("hostname", () => new TcpClient(null, 0)); + AssertExtensions.Throws("port", () => new TcpClient("localhost", -1)); } [Fact] @@ -44,13 +44,13 @@ public void Connect_InvalidArguments_Throws() { using (var client = new TcpClient()) { - Assert.Throws("hostname", () => client.Connect((string)null, 0)); - Assert.Throws("port", () => client.Connect("localhost", -1)); + AssertExtensions.Throws("hostname", () => client.Connect((string)null, 0)); + AssertExtensions.Throws("port", () => client.Connect("localhost", -1)); - Assert.Throws("address", () => client.Connect((IPAddress)null, 0)); - Assert.Throws("port", () => client.Connect(IPAddress.Loopback, -1)); + AssertExtensions.Throws("address", () => client.Connect((IPAddress)null, 0)); + AssertExtensions.Throws("port", () => client.Connect(IPAddress.Loopback, -1)); - Assert.Throws("remoteEP", () => client.Connect(null)); + AssertExtensions.Throws("remoteEP", () => client.Connect(null)); } } diff --git a/src/System.Net.Sockets/tests/FunctionalTests/TcpListenerTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/TcpListenerTest.cs index 34f66578e9af..4adc1053d25c 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/TcpListenerTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/TcpListenerTest.cs @@ -14,13 +14,13 @@ public class TcpListenerTest [Fact] public void Ctor_InvalidArguments_Throws() { - Assert.Throws("localEP", () => new TcpListener(null)); - Assert.Throws("localaddr", () => new TcpListener(null, 0)); - Assert.Throws("port", () => new TcpListener(IPAddress.Loopback, -1)); + AssertExtensions.Throws("localEP", () => new TcpListener(null)); + AssertExtensions.Throws("localaddr", () => new TcpListener(null, 0)); + AssertExtensions.Throws("port", () => new TcpListener(IPAddress.Loopback, -1)); #pragma warning disable 0618 // ctor is obsolete - Assert.Throws("port", () => new TcpListener(66000)); + AssertExtensions.Throws("port", () => new TcpListener(66000)); #pragma warning restore 0618 - Assert.Throws("port", () => TcpListener.Create(66000)); + AssertExtensions.Throws("port", () => TcpListener.Create(66000)); } [Theory] diff --git a/src/System.Net.Sockets/tests/FunctionalTests/UdpClientTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/UdpClientTest.cs index 210d816b0021..51ad9fc10773 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/UdpClientTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/UdpClientTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; @@ -30,14 +31,14 @@ public void Ctor_ValidAddressFamily_Succeeds(AddressFamily family) [InlineData(AddressFamily.Unspecified)] public void Ctor_InvalidAddressFamily_Throws(AddressFamily family) { - Assert.Throws("family", () => new UdpClient(family)); - Assert.Throws("family", () => new UdpClient(0, family)); + AssertExtensions.Throws("family", () => new UdpClient(family)); + AssertExtensions.Throws("family", () => new UdpClient(0, family)); } [Fact] public void Ctor_InvalidHostName_Throws() { - Assert.Throws("hostname", () => new UdpClient(null, 0)); + AssertExtensions.Throws("hostname", () => new UdpClient(null, 0)); } [Theory] @@ -45,16 +46,16 @@ public void Ctor_InvalidHostName_Throws() [InlineData(66000)] public void Ctor_InvalidPort_Throws(int port) { - Assert.Throws("port", () => new UdpClient(port)); - Assert.Throws("port", () => new UdpClient(port, AddressFamily.InterNetwork)); - Assert.Throws("port", () => new UdpClient(port, AddressFamily.InterNetworkV6)); - Assert.Throws("port", () => new UdpClient("localhost", port)); + AssertExtensions.Throws("port", () => new UdpClient(port)); + AssertExtensions.Throws("port", () => new UdpClient(port, AddressFamily.InterNetwork)); + AssertExtensions.Throws("port", () => new UdpClient(port, AddressFamily.InterNetworkV6)); + AssertExtensions.Throws("port", () => new UdpClient("localhost", port)); } [Fact] public void Ctor_NullEndpoint_Throws() { - Assert.Throws("localEP", () => new UdpClient(null)); + AssertExtensions.Throws("localEP", () => new UdpClient(null)); } [OuterLoop] // TODO: Issue #11345 @@ -312,7 +313,7 @@ public void InvalidArguments_Throw() { using (var udpClient = new UdpClient("localhost", UnusedPort)) { - Assert.Throws("datagram", () => udpClient.BeginSend(null, 0, null, null)); + AssertExtensions.Throws("datagram", () => udpClient.BeginSend(null, 0, null, null)); Assert.Throws(() => udpClient.BeginSend(new byte[1], 1, "localhost", 0, null, null)); Assert.Throws(() => udpClient.BeginSend(new byte[1], 1, new IPEndPoint(IPAddress.Loopback, 0), null, null)); } @@ -327,7 +328,7 @@ public void BeginSend_NegativeBytes_Throws() byte[] sendBytes = new byte[1]; IPEndPoint remoteServer = new IPEndPoint(IPAddress.Loopback, UnusedPort); - Assert.Throws("bytes", () => + AssertExtensions.Throws("bytes", () => { udpClient.BeginSend(sendBytes, -1, remoteServer, new AsyncCallback(AsyncCompleted), udpClient); }); @@ -343,7 +344,7 @@ public void BeginSend_BytesMoreThanArrayLength_Throws() byte[] sendBytes = new byte[1]; IPEndPoint remoteServer = new IPEndPoint(IPAddress.Loopback, UnusedPort); - Assert.Throws("bytes", () => + AssertExtensions.Throws("bytes", () => { udpClient.BeginSend(sendBytes, sendBytes.Length + 1, remoteServer, new AsyncCallback(AsyncCompleted), udpClient); }); @@ -370,9 +371,9 @@ public void Send_InvalidArguments_Throws() { using (var udpClient = new DerivedUdpClient()) { - Assert.Throws("dgram", () => udpClient.Send(null, 0)); - Assert.Throws("dgram", () => udpClient.Send(null, 0, "localhost", 0)); - Assert.Throws("dgram", () => udpClient.Send(null, 0, new IPEndPoint(IPAddress.Loopback, 0))); + AssertExtensions.Throws("dgram", () => udpClient.Send(null, 0)); + AssertExtensions.Throws("dgram", () => udpClient.Send(null, 0, "localhost", 0)); + AssertExtensions.Throws("dgram", () => udpClient.Send(null, 0, new IPEndPoint(IPAddress.Loopback, 0))); Assert.Throws(() => udpClient.Send(new byte[1], 1)); udpClient.Active = true; Assert.Throws(() => udpClient.Send(new byte[1], 1, new IPEndPoint(IPAddress.Loopback, 0))); @@ -405,15 +406,15 @@ public void Connect_InvalidArguments_Throws() { using (var udpClient = new UdpClient()) { - Assert.Throws("hostname", () => udpClient.Connect((string)null, 0)); - Assert.Throws("port", () => udpClient.Connect("localhost", -1)); - Assert.Throws("port", () => udpClient.Connect("localhost", 66000)); + AssertExtensions.Throws("hostname", () => udpClient.Connect((string)null, 0)); + AssertExtensions.Throws("port", () => udpClient.Connect("localhost", -1)); + AssertExtensions.Throws("port", () => udpClient.Connect("localhost", 66000)); - Assert.Throws("addr", () => udpClient.Connect((IPAddress)null, 0)); - Assert.Throws("port", () => udpClient.Connect(IPAddress.Loopback, -1)); - Assert.Throws("port", () => udpClient.Connect(IPAddress.Loopback, 66000)); + AssertExtensions.Throws("addr", () => udpClient.Connect((IPAddress)null, 0)); + AssertExtensions.Throws("port", () => udpClient.Connect(IPAddress.Loopback, -1)); + AssertExtensions.Throws("port", () => udpClient.Connect(IPAddress.Loopback, 66000)); - Assert.Throws("endPoint", () => udpClient.Connect(null)); + AssertExtensions.Throws("endPoint", () => udpClient.Connect(null)); } } @@ -644,24 +645,24 @@ public void JoinDropMulticastGroup_InvalidArguments_Throws() { using (var udpClient = new UdpClient(AddressFamily.InterNetwork)) { - Assert.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(null)); - Assert.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(0, null)); - Assert.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(null, 0)); - Assert.Throws("ifindex", () => udpClient.JoinMulticastGroup(-1, IPAddress.Any)); - Assert.Throws("timeToLive", () => udpClient.JoinMulticastGroup(IPAddress.Loopback, -1)); + AssertExtensions.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(null)); + AssertExtensions.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(0, null)); + AssertExtensions.Throws("multicastAddr", () => udpClient.JoinMulticastGroup(null, 0)); + AssertExtensions.Throws("ifindex", () => udpClient.JoinMulticastGroup(-1, IPAddress.Any)); + AssertExtensions.Throws("timeToLive", () => udpClient.JoinMulticastGroup(IPAddress.Loopback, -1)); - Assert.Throws("multicastAddr", () => udpClient.DropMulticastGroup(null)); - Assert.Throws("multicastAddr", () => udpClient.DropMulticastGroup(null, 0)); - Assert.Throws("multicastAddr", () => udpClient.DropMulticastGroup(IPAddress.IPv6Loopback)); - Assert.Throws("ifindex", () => udpClient.DropMulticastGroup(IPAddress.Loopback, -1)); + AssertExtensions.Throws("multicastAddr", () => udpClient.DropMulticastGroup(null)); + AssertExtensions.Throws("multicastAddr", () => udpClient.DropMulticastGroup(null, 0)); + AssertExtensions.Throws("multicastAddr", () => udpClient.DropMulticastGroup(IPAddress.IPv6Loopback)); + AssertExtensions.Throws("ifindex", () => udpClient.DropMulticastGroup(IPAddress.Loopback, -1)); } } [Fact] public void UdpReceiveResult_InvalidArguments_Throws() { - Assert.Throws("buffer", () => new UdpReceiveResult(null, null)); - Assert.Throws("remoteEndPoint", () => new UdpReceiveResult(new byte[1], null)); + AssertExtensions.Throws("buffer", () => new UdpReceiveResult(null, null)); + AssertExtensions.Throws("remoteEndPoint", () => new UdpReceiveResult(new byte[1], null)); } [Fact] diff --git a/src/System.Net.WebClient/tests/System.Net.WebClient.Tests.csproj b/src/System.Net.WebClient/tests/System.Net.WebClient.Tests.csproj index 7d65e9ca3005..74a4827cb61f 100644 --- a/src/System.Net.WebClient/tests/System.Net.WebClient.Tests.csproj +++ b/src/System.Net.WebClient/tests/System.Net.WebClient.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + Common\System\PlatformDetection.cs diff --git a/src/System.Net.WebClient/tests/WebClientTest.cs b/src/System.Net.WebClient/tests/WebClientTest.cs index 4b23396f966d..27fc86a15a87 100644 --- a/src/System.Net.WebClient/tests/WebClientTest.cs +++ b/src/System.Net.WebClient/tests/WebClientTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Specialized; using System.IO; using System.Linq; @@ -37,8 +38,8 @@ public static void Properties_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("value", () => { wc.BaseAddress = "http::/invalid url"; }); - Assert.Throws("Encoding", () => { wc.Encoding = null; }); + AssertExtensions.Throws("value", () => { wc.BaseAddress = "http::/invalid url"; }); + AssertExtensions.Throws("Encoding", () => { wc.Encoding = null; }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -47,14 +48,14 @@ public static void DownloadData_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.DownloadData((string)null); }); - Assert.Throws("address", () => { wc.DownloadData((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadData((string)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadData((Uri)null); }); - Assert.Throws("address", () => { wc.DownloadDataAsync((Uri)null); }); - Assert.Throws("address", () => { wc.DownloadDataAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.DownloadDataTaskAsync((string)null); }); - Assert.Throws("address", () => { wc.DownloadDataTaskAsync((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadDataTaskAsync((string)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadDataTaskAsync((Uri)null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -63,23 +64,23 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.DownloadFile((string)null, ""); }); - Assert.Throws("address", () => { wc.DownloadFile((Uri)null, ""); }); + AssertExtensions.Throws("address", () => { wc.DownloadFile((string)null, ""); }); + AssertExtensions.Throws("address", () => { wc.DownloadFile((Uri)null, ""); }); - Assert.Throws("address", () => { wc.DownloadFileAsync((Uri)null, ""); }); - Assert.Throws("address", () => { wc.DownloadFileAsync((Uri)null, "", null); }); + AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, ""); }); + AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, "", null); }); - Assert.Throws("address", () => { wc.DownloadFileTaskAsync((string)null, ""); }); - Assert.Throws("address", () => { wc.DownloadFileTaskAsync((Uri)null, ""); }); + AssertExtensions.Throws("address", () => { wc.DownloadFileTaskAsync((string)null, ""); }); + AssertExtensions.Throws("address", () => { wc.DownloadFileTaskAsync((Uri)null, ""); }); - Assert.Throws("fileName", () => { wc.DownloadFile("http://localhost", null); }); - Assert.Throws("fileName", () => { wc.DownloadFile(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFile("http://localhost", null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFile(new Uri("http://localhost"), null); }); - Assert.Throws("fileName", () => { wc.DownloadFileAsync(new Uri("http://localhost"), null); }); - Assert.Throws("fileName", () => { wc.DownloadFileAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFileAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFileAsync(new Uri("http://localhost"), null, null); }); - Assert.Throws("fileName", () => { wc.DownloadFileTaskAsync("http://localhost", null); }); - Assert.Throws("fileName", () => { wc.DownloadFileTaskAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFileTaskAsync("http://localhost", null); }); + AssertExtensions.Throws("fileName", () => { wc.DownloadFileTaskAsync(new Uri("http://localhost"), null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -88,14 +89,14 @@ public static void DownloadString_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.DownloadString((string)null); }); - Assert.Throws("address", () => { wc.DownloadString((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadString((string)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadString((Uri)null); }); - Assert.Throws("address", () => { wc.DownloadStringAsync((Uri)null); }); - Assert.Throws("address", () => { wc.DownloadStringAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.DownloadStringTaskAsync((string)null); }); - Assert.Throws("address", () => { wc.DownloadStringTaskAsync((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadStringTaskAsync((string)null); }); + AssertExtensions.Throws("address", () => { wc.DownloadStringTaskAsync((Uri)null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -104,33 +105,33 @@ public static void UploadData_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.UploadData((string)null, null); }); - Assert.Throws("address", () => { wc.UploadData((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadData((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadData((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadData((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadData((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadData((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadData((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadDataAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null, null); }); - Assert.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null); }); - Assert.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null, null); }); - Assert.Throws("data", () => { wc.UploadData("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadData("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadData(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadData(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadData("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadData("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadData(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadData(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null, null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataAsync(new Uri("http://localhost"), null, null, null); }); - Assert.Throws("data", () => { wc.UploadDataTaskAsync("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadDataTaskAsync("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataTaskAsync("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataTaskAsync("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null, null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -139,33 +140,33 @@ public static void UploadFile_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.UploadFile((string)null, null); }); - Assert.Throws("address", () => { wc.UploadFile((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadFile((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadFile((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFile((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFile((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadFileAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null, null); }); - Assert.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null); }); - Assert.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null, null); }); - Assert.Throws("fileName", () => { wc.UploadFile("http://localhost", null); }); - Assert.Throws("fileName", () => { wc.UploadFile("http://localhost", null, null); }); - Assert.Throws("fileName", () => { wc.UploadFile(new Uri("http://localhost"), null); }); - Assert.Throws("fileName", () => { wc.UploadFile(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFile("http://localhost", null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFile("http://localhost", null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFile(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFile(new Uri("http://localhost"), null, null); }); - Assert.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null); }); - Assert.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null, null); }); - Assert.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null, null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileAsync(new Uri("http://localhost"), null, null, null); }); - Assert.Throws("fileName", () => { wc.UploadFileTaskAsync("http://localhost", null); }); - Assert.Throws("fileName", () => { wc.UploadFileTaskAsync("http://localhost", null, null); }); - Assert.Throws("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null); }); - Assert.Throws("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileTaskAsync("http://localhost", null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileTaskAsync("http://localhost", null, null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null, null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -174,33 +175,33 @@ public static void UploadString_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.UploadString((string)null, null); }); - Assert.Throws("address", () => { wc.UploadString((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadString((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadString((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadString((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadString((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadString((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadString((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadStringAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null, null); }); - Assert.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null); }); - Assert.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null, null); }); - Assert.Throws("data", () => { wc.UploadString("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadString("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadString(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadString(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadString("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadString("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadString(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadString(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null, null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringAsync(new Uri("http://localhost"), null, null, null); }); - Assert.Throws("data", () => { wc.UploadStringTaskAsync("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadStringTaskAsync("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringTaskAsync("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringTaskAsync("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null, null); }); } [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. @@ -209,33 +210,33 @@ public static void UploadValues_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.UploadValues((string)null, null); }); - Assert.Throws("address", () => { wc.UploadValues((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadValues((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadValues((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValues((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValues((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValues((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValues((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null); }); - Assert.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null, null); }); - Assert.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null); }); - Assert.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); - Assert.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null); }); - Assert.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null, null); }); - Assert.Throws("data", () => { wc.UploadValues("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadValues("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadValues(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadValues(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValues("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadValues("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValues(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadValues(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null, null); }); - Assert.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null, null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesAsync(new Uri("http://localhost"), null, null, null); }); - Assert.Throws("data", () => { wc.UploadValuesTaskAsync("http://localhost", null); }); - Assert.Throws("data", () => { wc.UploadValuesTaskAsync("http://localhost", null, null); }); - Assert.Throws("data", () => { wc.UploadValuesTaskAsync(new Uri("http://localhost"), null); }); - Assert.Throws("data", () => { wc.UploadValuesTaskAsync(new Uri("http://localhost"), null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesTaskAsync("http://localhost", null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesTaskAsync("http://localhost", null, null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesTaskAsync(new Uri("http://localhost"), null); }); + AssertExtensions.Throws("data", () => { wc.UploadValuesTaskAsync(new Uri("http://localhost"), null, null); }); } [Fact] @@ -243,10 +244,10 @@ public static void OpenWrite_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.OpenWrite((string)null); }); - Assert.Throws("address", () => { wc.OpenWrite((string)null, null); }); - Assert.Throws("address", () => { wc.OpenWrite((Uri)null); }); - Assert.Throws("address", () => { wc.OpenWrite((Uri)null, null); }); + AssertExtensions.Throws("address", () => { wc.OpenWrite((string)null); }); + AssertExtensions.Throws("address", () => { wc.OpenWrite((string)null, null); }); + AssertExtensions.Throws("address", () => { wc.OpenWrite((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.OpenWrite((Uri)null, null); }); } [Fact] @@ -254,8 +255,8 @@ public static void OpenRead_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); - Assert.Throws("address", () => { wc.OpenRead((string)null); }); - Assert.Throws("address", () => { wc.OpenRead((Uri)null); }); + AssertExtensions.Throws("address", () => { wc.OpenRead((string)null); }); + AssertExtensions.Throws("address", () => { wc.OpenRead((Uri)null); }); } [Fact] diff --git a/src/System.Net.WebHeaderCollection/tests/System.Net.WebHeaderCollection.Tests.csproj b/src/System.Net.WebHeaderCollection/tests/System.Net.WebHeaderCollection.Tests.csproj index 7b4a529f43f9..c3ec3163fa11 100644 --- a/src/System.Net.WebHeaderCollection/tests/System.Net.WebHeaderCollection.Tests.csproj +++ b/src/System.Net.WebHeaderCollection/tests/System.Net.WebHeaderCollection.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs diff --git a/src/System.Net.WebHeaderCollection/tests/WebHeaderCollectionTest.cs b/src/System.Net.WebHeaderCollection/tests/WebHeaderCollectionTest.cs index 7c0c6721ea98..afafd322623d 100644 --- a/src/System.Net.WebHeaderCollection/tests/WebHeaderCollectionTest.cs +++ b/src/System.Net.WebHeaderCollection/tests/WebHeaderCollectionTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Tests; @@ -140,7 +141,7 @@ public void Setter_ValidName_Success() public void Setter_NullOrEmptyName_Throws(string name) { WebHeaderCollection w = new WebHeaderCollection(); - Assert.Throws("name", () => w[name] = "test"); + AssertExtensions.Throws("name", () => w[name] = "test"); } public static object[][] InvalidNames = { @@ -153,7 +154,7 @@ public void Setter_NullOrEmptyName_Throws(string name) public void Setter_InvalidName_Throws(string name) { WebHeaderCollection w = new WebHeaderCollection(); - Assert.Throws("name", () => w[name] = "test"); + AssertExtensions.Throws("name", () => w[name] = "test"); } public static object[][] InvalidValues = { @@ -168,7 +169,7 @@ public void Setter_InvalidName_Throws(string name) public void Setter_InvalidValue_Throws(string value) { WebHeaderCollection w = new WebHeaderCollection(); - Assert.Throws("value", () => w["custom"] = value); + AssertExtensions.Throws("value", () => w["custom"] = value); } public static object[][] ValidValues = { @@ -210,14 +211,14 @@ public void Setter_SameHeaderTwice_Success(string firstName, string secondName) public void Remove_NullOrEmptyName_Throws(string name) { WebHeaderCollection w = new WebHeaderCollection(); - Assert.Throws("name", () => w.Remove(name)); + AssertExtensions.Throws("name", () => w.Remove(name)); } [Fact] public void Remove_IllegalCharacter_Throws() { WebHeaderCollection w = new WebHeaderCollection(); - Assert.Throws("name", () => w.Remove("{")); + AssertExtensions.Throws("name", () => w.Remove("{")); } [Fact] diff --git a/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj b/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj index 8054e9b35877..61a0265ff704 100644 --- a/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj +++ b/src/System.Net.WebProxy/tests/System.Net.WebProxy.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Net.WebProxy/tests/WebProxyTest.cs b/src/System.Net.WebProxy/tests/WebProxyTest.cs index 4038ccc4cb73..92c1dd58abad 100644 --- a/src/System.Net.WebProxy/tests/WebProxyTest.cs +++ b/src/System.Net.WebProxy/tests/WebProxyTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Net.NetworkInformation; using System.Net.Sockets; @@ -109,9 +110,9 @@ public static void Address_Roundtrip() public static void InvalidArgs_Throws() { var p = new WebProxy(); - Assert.Throws("destination", () => p.GetProxy(null)); - Assert.Throws("host", () => p.IsBypassed(null)); - Assert.Throws("c", () => p.BypassList = null); + AssertExtensions.Throws("destination", () => p.GetProxy(null)); + AssertExtensions.Throws("host", () => p.IsBypassed(null)); + AssertExtensions.Throws("c", () => p.BypassList = null); Assert.Throws(() => p.BypassList = new string[] { "*.com" }); } diff --git a/src/System.Net.WebSockets.Client/tests/ClientWebSocketOptionsTests.cs b/src/System.Net.WebSockets.Client/tests/ClientWebSocketOptionsTests.cs index fc1b4339f16d..7f8970278767 100644 --- a/src/System.Net.WebSockets.Client/tests/ClientWebSocketOptionsTests.cs +++ b/src/System.Net.WebSockets.Client/tests/ClientWebSocketOptionsTests.cs @@ -31,14 +31,14 @@ public static void UseDefaultCredentials_Roundtrips() public static void SetBuffer_InvalidArgs_Throws() { var cws = new ClientWebSocket(); - Assert.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 0)); - Assert.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 1)); - Assert.Throws("sendBufferSize", () => cws.Options.SetBuffer(1, 0)); - Assert.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 0, new ArraySegment(new byte[1]))); - Assert.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 1, new ArraySegment(new byte[1]))); - Assert.Throws("sendBufferSize", () => cws.Options.SetBuffer(1, 0, new ArraySegment(new byte[1]))); - Assert.Throws("buffer.Array", () => cws.Options.SetBuffer(1, 1, default(ArraySegment))); - Assert.Throws("buffer", () => cws.Options.SetBuffer(1, 1, new ArraySegment(new byte[0]))); + AssertExtensions.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 0)); + AssertExtensions.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 1)); + AssertExtensions.Throws("sendBufferSize", () => cws.Options.SetBuffer(1, 0)); + AssertExtensions.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 0, new ArraySegment(new byte[1]))); + AssertExtensions.Throws("receiveBufferSize", () => cws.Options.SetBuffer(0, 1, new ArraySegment(new byte[1]))); + AssertExtensions.Throws("sendBufferSize", () => cws.Options.SetBuffer(1, 0, new ArraySegment(new byte[1]))); + AssertExtensions.Throws("buffer.Array", () => cws.Options.SetBuffer(1, 1, default(ArraySegment))); + AssertExtensions.Throws("buffer", () => cws.Options.SetBuffer(1, 1, new ArraySegment(new byte[0]))); } [ConditionalFact(nameof(WebSocketsSupported))] @@ -56,7 +56,7 @@ public static void KeepAliveInterval_Roundtrips() cws.Options.KeepAliveInterval = Timeout.InfiniteTimeSpan; Assert.Equal(Timeout.InfiniteTimeSpan, cws.Options.KeepAliveInterval); - Assert.Throws("value", () => cws.Options.KeepAliveInterval = TimeSpan.MinValue); + AssertExtensions.Throws("value", () => cws.Options.KeepAliveInterval = TimeSpan.MinValue); } } } diff --git a/src/System.Net.WebSockets/tests/System.Net.WebSockets.Tests.csproj b/src/System.Net.WebSockets/tests/System.Net.WebSockets.Tests.csproj index 69a0f4487878..0a6671ff6cd4 100644 --- a/src/System.Net.WebSockets/tests/System.Net.WebSockets.Tests.csproj +++ b/src/System.Net.WebSockets/tests/System.Net.WebSockets.Tests.csproj @@ -14,6 +14,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Net.WebSockets/tests/WebSocketTests.cs b/src/System.Net.WebSockets/tests/WebSocketTests.cs index 7dceee301c45..7038a3fddc2c 100644 --- a/src/System.Net.WebSockets/tests/WebSocketTests.cs +++ b/src/System.Net.WebSockets/tests/WebSocketTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -22,7 +23,7 @@ public static void DefaultKeepAliveInterval_ValidValue() [InlineData(0)] public static void CreateClientBuffer_InvalidSendValues(int size) { - Assert.Throws("sendBufferSize", () => WebSocket.CreateClientBuffer(256, size)); + AssertExtensions.Throws("sendBufferSize", () => WebSocket.CreateClientBuffer(256, size)); } [Theory] @@ -39,7 +40,7 @@ public static void CreateClientBuffer_ValidSendValues(int size) [InlineData(0)] public static void CreateClientBuffer_InvalidReceiveValues(int size) { - Assert.Throws("receiveBufferSize", () => WebSocket.CreateClientBuffer(size, 16)); + AssertExtensions.Throws("receiveBufferSize", () => WebSocket.CreateClientBuffer(size, 16)); } [Theory] @@ -56,7 +57,7 @@ public static void CreateClientBuffer_ValidReceiveValues(int size) [InlineData(0)] public static void CreateServerBuffer_InvalidReceiveValues(int size) { - Assert.Throws("receiveBufferSize", () => WebSocket.CreateServerBuffer(size)); + AssertExtensions.Throws("receiveBufferSize", () => WebSocket.CreateServerBuffer(size)); } [Theory] diff --git a/src/System.ObjectModel/tests/ObservableCollection/ObservableCollection_ConstructorAndPropertyTests.cs b/src/System.ObjectModel/tests/ObservableCollection/ObservableCollection_ConstructorAndPropertyTests.cs index acb16bb208c2..001a86293fc4 100644 --- a/src/System.ObjectModel/tests/ObservableCollection/ObservableCollection_ConstructorAndPropertyTests.cs +++ b/src/System.ObjectModel/tests/ObservableCollection/ObservableCollection_ConstructorAndPropertyTests.cs @@ -78,7 +78,7 @@ public static void IEnumerableConstructorTest_Empty() [Fact] public static void IEnumerableConstructorTest_Negative() { - Assert.Throws("collection", () => new ObservableCollection((IEnumerable)null)); + AssertExtensions.Throws("collection", () => new ObservableCollection((IEnumerable)null)); } /// @@ -139,7 +139,7 @@ public ObservableCollectionSubclass(IEnumerable collection) : base(collection [Fact] public static void ListConstructorTest_Negative() { - Assert.Throws("list", () => new ObservableCollection((List)null)); + AssertExtensions.Throws("list", () => new ObservableCollection((List)null)); } [Fact] diff --git a/src/System.ObjectModel/tests/System.ObjectModel.Tests.csproj b/src/System.ObjectModel/tests/System.ObjectModel.Tests.csproj index 24fa08ad61d2..9cee34aefd72 100644 --- a/src/System.ObjectModel/tests/System.ObjectModel.Tests.csproj +++ b/src/System.ObjectModel/tests/System.ObjectModel.Tests.csproj @@ -9,6 +9,9 @@ + + Common\System\AssertExtensions.cs + Common\System\CollectionsIEnumerableTest.cs diff --git a/src/System.Private.Uri/tests/ExtendedFunctionalTests/System.Private.Uri.ExtendedFunctional.Tests.csproj b/src/System.Private.Uri/tests/ExtendedFunctionalTests/System.Private.Uri.ExtendedFunctional.Tests.csproj index 6461573454ef..72cbc1f50862 100644 --- a/src/System.Private.Uri/tests/ExtendedFunctionalTests/System.Private.Uri.ExtendedFunctional.Tests.csproj +++ b/src/System.Private.Uri/tests/ExtendedFunctionalTests/System.Private.Uri.ExtendedFunctional.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + Common\System\ThreadCultureChange.cs diff --git a/src/System.Private.Uri/tests/ExtendedFunctionalTests/UriTests.cs b/src/System.Private.Uri/tests/ExtendedFunctionalTests/UriTests.cs index beab7b9e7ae1..82580e86f475 100644 --- a/src/System.Private.Uri/tests/ExtendedFunctionalTests/UriTests.cs +++ b/src/System.Private.Uri/tests/ExtendedFunctionalTests/UriTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.PrivateUri.Tests @@ -189,7 +190,7 @@ public static void TestMakeRelative_Invalid() var baseUri = new Uri("http://www.domain.com/"); var relativeUri = new Uri("/path/", UriKind.Relative); #pragma warning disable 0618 - Assert.Throws("toUri", () => baseUri.MakeRelative(null)); // Uri is null + AssertExtensions.Throws("toUri", () => baseUri.MakeRelative(null)); // Uri is null Assert.Throws(() => relativeUri.MakeRelative(baseUri)); // Base uri is relative Assert.Throws(() => baseUri.MakeRelative(relativeUri)); // Uri is relative diff --git a/src/System.Private.Uri/tests/FunctionalTests/System.Private.Uri.Functional.Tests.csproj b/src/System.Private.Uri/tests/FunctionalTests/System.Private.Uri.Functional.Tests.csproj index dafeadbd5611..238c92c16069 100644 --- a/src/System.Private.Uri/tests/FunctionalTests/System.Private.Uri.Functional.Tests.csproj +++ b/src/System.Private.Uri/tests/FunctionalTests/System.Private.Uri.Functional.Tests.csproj @@ -27,6 +27,9 @@ + + Common\System\AssertExtensions.cs + Common\System\ThreadCultureChange.cs diff --git a/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs b/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs index 68f9b312fd0b..931a6890a8cc 100644 --- a/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs +++ b/src/System.Private.Uri/tests/FunctionalTests/UriBuilderTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -76,14 +77,14 @@ public void Ctor_String(string uriString, bool createUri, string scheme, string [Fact] public void Ctor_String_Invalid() { - Assert.Throws("uriString", () => new UriBuilder((string)null)); // UriString is null + AssertExtensions.Throws("uriString", () => new UriBuilder((string)null)); // UriString is null Assert.Throws(() => new UriBuilder(@"http://host\")); // UriString is invalid } [Fact] public void Ctor_Uri_Null() { - Assert.Throws("uri", () => new UriBuilder((Uri)null)); // Uri is null + AssertExtensions.Throws("uri", () => new UriBuilder((Uri)null)); // Uri is null } [Theory] diff --git a/src/System.Private.Xml.Linq/tests/misc/Annotation.cs b/src/System.Private.Xml.Linq/tests/misc/Annotation.cs index db7f249c1662..b6109bedf148 100644 --- a/src/System.Private.Xml.Linq/tests/misc/Annotation.cs +++ b/src/System.Private.Xml.Linq/tests/misc/Annotation.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Linq; using Microsoft.Test.ModuleCore; @@ -184,42 +185,42 @@ public void RemoveInheritedAnnotation(XObject xo) [MemberData(nameof(GetXObjects))] public void AddNull(XObject xo) { - Assert.Throws("annotation", () => xo.AddAnnotation(null)); + AssertExtensions.Throws("annotation", () => xo.AddAnnotation(null)); Assert.Null(xo.Annotation()); - Assert.Throws("annotation", () => xo.AddAnnotation(null)); + AssertExtensions.Throws("annotation", () => xo.AddAnnotation(null)); } [Theory] [MemberData(nameof(GetXObjects))] public void RemoveNull(XObject xo) { - Assert.Throws("type", () => xo.RemoveAnnotations(null)); - Assert.Throws("type", () => xo.RemoveAnnotations(null)); + AssertExtensions.Throws("type", () => xo.RemoveAnnotations(null)); + AssertExtensions.Throws("type", () => xo.RemoveAnnotations(null)); } [Theory] [MemberData(nameof(GetXObjects))] public void GetAllNull(XObject xo) { - Assert.Throws("type", () => xo.Annotations(null)); - Assert.Throws("type", () => xo.Annotations(null)); + AssertExtensions.Throws("type", () => xo.Annotations(null)); + AssertExtensions.Throws("type", () => xo.Annotations(null)); } [Theory] [MemberData(nameof(GetXObjects))] public void GetOneNull(XObject xo) { - Assert.Throws("type", () => xo.Annotation(null)); - Assert.Throws("type", () => xo.Annotation(null)); + AssertExtensions.Throws("type", () => xo.Annotation(null)); + AssertExtensions.Throws("type", () => xo.Annotation(null)); } [Theory] [MemberData(nameof(GetXObjects))] public void AddNullString(XObject xo) { - Assert.Throws("annotation", () => xo.AddAnnotation((string)null)); + AssertExtensions.Throws("annotation", () => xo.AddAnnotation((string)null)); Assert.Null(xo.Annotation()); - Assert.Throws("annotation", () => xo.AddAnnotation((string)null)); + AssertExtensions.Throws("annotation", () => xo.AddAnnotation((string)null)); } [Theory] diff --git a/src/System.Private.Xml.Linq/tests/misc/System.Xml.Linq.Misc.Tests.csproj b/src/System.Private.Xml.Linq/tests/misc/System.Xml.Linq.Misc.Tests.csproj index ef1335384659..8c45c26a472c 100644 --- a/src/System.Private.Xml.Linq/tests/misc/System.Xml.Linq.Misc.Tests.csproj +++ b/src/System.Private.Xml.Linq/tests/misc/System.Xml.Linq.Misc.Tests.csproj @@ -18,6 +18,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs b/src/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs index e686cd7a732a..755e76dc840d 100644 --- a/src/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs +++ b/src/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs @@ -101,25 +101,25 @@ public static void Created_Proxy_With_Different_Proxy_Type_Use_Different_Generat [Fact] public static void Create_Using_Concrete_Proxy_Type_Throws_ArgumentException() { - Assert.Throws("T", () => DispatchProxy.Create()); + AssertExtensions.Throws("T", () => DispatchProxy.Create()); } [Fact] public static void Create_Using_Sealed_BaseType_Throws_ArgumentException() { - Assert.Throws("TProxy", () => DispatchProxy.Create()); + AssertExtensions.Throws("TProxy", () => DispatchProxy.Create()); } [Fact] public static void Create_Using_Abstract_BaseType_Throws_ArgumentException() { - Assert.Throws("TProxy", () => DispatchProxy.Create()); + AssertExtensions.Throws("TProxy", () => DispatchProxy.Create()); } [Fact] public static void Create_Using_BaseType_Without_Default_Ctor_Throws_ArgumentException() { - Assert.Throws("TProxy", () => DispatchProxy.Create()); + AssertExtensions.Throws("TProxy", () => DispatchProxy.Create()); } [Fact] diff --git a/src/System.Reflection.DispatchProxy/tests/System.Reflection.DispatchProxy.Tests.csproj b/src/System.Reflection.DispatchProxy/tests/System.Reflection.DispatchProxy.Tests.csproj index d94ee6f8d177..3044af44c191 100644 --- a/src/System.Reflection.DispatchProxy/tests/System.Reflection.DispatchProxy.Tests.csproj +++ b/src/System.Reflection.DispatchProxy/tests/System.Reflection.DispatchProxy.Tests.csproj @@ -13,6 +13,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Reflection.Emit.ILGeneration/tests/CustomAttributeBuilderTests.cs b/src/System.Reflection.Emit.ILGeneration/tests/CustomAttributeBuilderTests.cs index 3f7e75fda501..fc42b19d84bf 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/CustomAttributeBuilderTests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/CustomAttributeBuilderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -514,10 +515,10 @@ public static void ClassNotSupportedAsAttribute_DoesNotThrow_DoesNotSet(Type typ [Fact] public static void NullConstructor_ThrowsArgumentNullException() { - Assert.Throws("con", () => new CustomAttributeBuilder(null, new object[0])); - Assert.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new FieldInfo[0], new object[0])); - Assert.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new PropertyInfo[0], new object[0])); - Assert.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("con", () => new CustomAttributeBuilder(null, new object[0])); + AssertExtensions.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new PropertyInfo[0], new object[0])); + AssertExtensions.Throws("con", () => new CustomAttributeBuilder(null, new object[0], new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); } [Fact] @@ -564,10 +565,10 @@ public static void NullConstructorArgs_ThrowsArgumentNullException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[] { typeof(int) }); - Assert.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null)); - Assert.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new FieldInfo[0], new object[0])); - Assert.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new PropertyInfo[0], new object[0])); - Assert.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null)); + AssertExtensions.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new PropertyInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs", () => new CustomAttributeBuilder(con, null, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); } public static IEnumerable NotSupportedObject_Constructor_TestData() @@ -672,10 +673,10 @@ public void NullValueForPrimitiveTypeInConstructorArgs_ThrowsArgumentNullExcepti ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[] { typeof(int) }); object[] constructorArgs = new object[] { null }; - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs)); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new FieldInfo[0], new object[0])); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0])); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs)); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); } public static IEnumerable NotSupportedPrimitives_TestData() @@ -692,10 +693,10 @@ public static void NotSupportedPrimitiveInConstructorArgs_ThrowsArgumentExceptio ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[] { typeof(object) }); object[] constructorArgs = new object[] { value }; - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs)); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new FieldInfo[0], new object[0])); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0])); - Assert.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs)); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0])); + AssertExtensions.Throws("constructorArgs[0]", () => new CustomAttributeBuilder(con, constructorArgs, new PropertyInfo[0], new object[0], new FieldInfo[0], new object[0])); } [Fact] @@ -717,8 +718,8 @@ public static void NullNamedFields_ThrowsArgumentNullException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); - Assert.Throws("namedFields", () => new CustomAttributeBuilder(con, new object[0], (FieldInfo[])null, new object[0])); - Assert.Throws("namedFields", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], null, new object[0])); + AssertExtensions.Throws("namedFields", () => new CustomAttributeBuilder(con, new object[0], (FieldInfo[])null, new object[0])); + AssertExtensions.Throws("namedFields", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], null, new object[0])); } [Theory] @@ -775,8 +776,8 @@ public static void NullFieldValues_ThrowsArgumentNullException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); - Assert.Throws("fieldValues", () => new CustomAttributeBuilder(con, new object[0], new FieldInfo[0], null)); - Assert.Throws("fieldValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], new FieldInfo[0], null)); + AssertExtensions.Throws("fieldValues", () => new CustomAttributeBuilder(con, new object[0], new FieldInfo[0], null)); + AssertExtensions.Throws("fieldValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], new FieldInfo[0], null)); } [Fact] @@ -785,8 +786,8 @@ public static void NullObjectInNamedFields_ThrowsArgumentNullException() ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); FieldInfo[] namedFields = new FieldInfo[] { null }; - Assert.Throws("namedFields[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, new object[1])); - Assert.Throws("namedFields[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], namedFields, new object[1])); + AssertExtensions.Throws("namedFields[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, new object[1])); + AssertExtensions.Throws("namedFields[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], namedFields, new object[1])); } [Fact] @@ -796,8 +797,8 @@ public static void NullObjectInFieldValues_ThrowsArgumentNullException() FieldInfo[] namedFields = Helpers.GetFields(typeof(TestAttribute), nameof(TestAttribute.TestInt)); object[] fieldValues = new object[] { null }; - Assert.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, fieldValues)); - Assert.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], namedFields, fieldValues)); + AssertExtensions.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, fieldValues)); + AssertExtensions.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new object[0], namedFields, fieldValues)); } [Theory] @@ -841,8 +842,8 @@ public static void NotSupportedPrimitiveInFieldValues_ThrowsArgumentException(ob FieldInfo[] namedFields = Helpers.GetFields(typeof(TestAttribute), nameof(TestAttribute.ObjectField)); object[] fieldValues = new object[] { value }; - Assert.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, fieldValues)); - Assert.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new FieldInfo[0], namedFields, fieldValues)); + AssertExtensions.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedFields, fieldValues)); + AssertExtensions.Throws("fieldValues[0]", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], new FieldInfo[0], namedFields, fieldValues)); } [Fact] @@ -879,8 +880,8 @@ public static void NullNamedProperties_ThrowsArgumentNullException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); - Assert.Throws("namedProperties", () => new CustomAttributeBuilder(con, new object[0], (PropertyInfo[])null, new object[0])); - Assert.Throws("namedProperties", () => new CustomAttributeBuilder(con, new object[0], null, new object[0], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("namedProperties", () => new CustomAttributeBuilder(con, new object[0], (PropertyInfo[])null, new object[0])); + AssertExtensions.Throws("namedProperties", () => new CustomAttributeBuilder(con, new object[0], null, new object[0], new FieldInfo[0], new object[0])); } [Fact] @@ -888,8 +889,8 @@ public static void NullPropertyValues_ThrowsArgumentNullException() { ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); - Assert.Throws("propertyValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], null)); - Assert.Throws("propertyValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], null, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("propertyValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], null)); + AssertExtensions.Throws("propertyValues", () => new CustomAttributeBuilder(con, new object[0], new PropertyInfo[0], null, new FieldInfo[0], new object[0])); } [Fact] @@ -898,8 +899,8 @@ public static void NullObjectInNamedProperties_ThrowsArgumentNullException() ConstructorInfo con = typeof(TestAttribute).GetConstructor(new Type[0]); PropertyInfo[] namedProperties = new PropertyInfo[] { null }; - Assert.Throws("namedProperties[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, new object[1])); - Assert.Throws("namedProperties[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, new object[1], new FieldInfo[0], new object[0])); + AssertExtensions.Throws("namedProperties[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, new object[1])); + AssertExtensions.Throws("namedProperties[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, new object[1], new FieldInfo[0], new object[0])); } [Fact] @@ -958,8 +959,8 @@ public static void NullObjectInPropertyValues_ThrowsArgumentNullException() PropertyInfo[] namedProperties = Helpers.GetProperties(typeof(TestAttribute), nameof(TestAttribute.TestInt32)); object[] propertyValues = new object[] { null }; - Assert.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues)); - Assert.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues)); + AssertExtensions.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues, new FieldInfo[0], new object[0])); } [Theory] @@ -1000,8 +1001,8 @@ public static void NotSupportedPrimitiveInPropertyValues_ThrowsArgumentException PropertyInfo[] namedProperties = Helpers.GetProperties(typeof(TestAttribute), nameof(TestAttribute.ObjectProperty)); object[] propertyValues = new object[] { value }; - Assert.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues)); - Assert.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues, new FieldInfo[0], new object[0])); + AssertExtensions.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues)); + AssertExtensions.Throws("propertyValues[0]", () => new CustomAttributeBuilder(con, new object[0], namedProperties, propertyValues, new FieldInfo[0], new object[0])); } [Fact] diff --git a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/DeclareLocalTests.cs b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/DeclareLocalTests.cs index 1b5fe25ce373..7006bebed11d 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/DeclareLocalTests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/DeclareLocalTests.cs @@ -90,8 +90,8 @@ public void DeclareLocal_NullLocalType_ThrowsArgumentNullException() ModuleBuilder module = Helpers.DynamicModule(); MethodBuilder method = module.DefineGlobalMethod("Method", MethodAttributes.Public | MethodAttributes.Static, typeof(Type), new Type[0]); ILGenerator ilGenerator = method.GetILGenerator(); - Assert.Throws("localType", () => ilGenerator.DeclareLocal(null)); - Assert.Throws("localType", () => ilGenerator.DeclareLocal(null, false)); + AssertExtensions.Throws("localType", () => ilGenerator.DeclareLocal(null)); + AssertExtensions.Throws("localType", () => ilGenerator.DeclareLocal(null, false)); } [Fact] diff --git a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit1Tests.cs b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit1Tests.cs index a422fb5316d9..f48a562672f7 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit1Tests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit1Tests.cs @@ -200,7 +200,7 @@ public void Emit_OpCodes_MethodInfo_NullMethod_ThrowsArgumentNullException() MethodBuilder method = module.DefineGlobalMethod("Method", MethodAttributes.Public | MethodAttributes.Static, typeof(Type), new Type[0]); ILGenerator ilGenerator = method.GetILGenerator(); - Assert.Throws("meth", () => ilGenerator.Emit(OpCodes.Call, (MethodInfo)null)); + AssertExtensions.Throws("meth", () => ilGenerator.Emit(OpCodes.Call, (MethodInfo)null)); } } } diff --git a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit2Tests.cs b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit2Tests.cs index 0971536ae08d..457add678928 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit2Tests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit2Tests.cs @@ -143,7 +143,7 @@ public void Emit_OpCodes_LocalBuilder_NullLocal_ThrowsArgumentNullException() MethodBuilder method = type.DefineMethod("Method", MethodAttributes.Public | MethodAttributes.Static); ILGenerator generator = method.GetILGenerator(); - Assert.Throws("local", () => generator.Emit(OpCodes.Ldarg_0, (LocalBuilder)null)); + AssertExtensions.Throws("local", () => generator.Emit(OpCodes.Ldarg_0, (LocalBuilder)null)); } [Fact] @@ -155,7 +155,7 @@ public void Emit_OpCodes_LocalBuilder_LocalFromDifferentMethod_ThrowsArgumentExc ILGenerator generator = method1.GetILGenerator(); LocalBuilder local = method2.GetILGenerator().DeclareLocal(typeof(int)); - Assert.Throws("local", () => generator.Emit(OpCodes.Ldarg_0, local)); + AssertExtensions.Throws("local", () => generator.Emit(OpCodes.Ldarg_0, local)); } [Fact] diff --git a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit3Tests.cs b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit3Tests.cs index 11199c289bf0..117a446a307f 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit3Tests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/ILGenerator/Emit3Tests.cs @@ -219,7 +219,7 @@ public void Emit_OpCodes_LocalBuilder_NullLocal_ThrowsArgumentNullException() MethodBuilder method = type.DefineMethod("Method", MethodAttributes.Public | MethodAttributes.Static); ILGenerator generator = method.GetILGenerator(); - Assert.Throws("local", () => generator.Emit(OpCodes.Ldloc_0, (LocalBuilder)null)); + AssertExtensions.Throws("local", () => generator.Emit(OpCodes.Ldloc_0, (LocalBuilder)null)); } [Fact] @@ -231,7 +231,7 @@ public void Emit_OpCodes_LocalBuilder_LocalFromDifferentMethod_ThrowsArgumentExc ILGenerator generator = method1.GetILGenerator(); LocalBuilder local = method2.GetILGenerator().DeclareLocal(typeof(string)); - Assert.Throws("local", () => generator.Emit(OpCodes.Ldloc_0, local)); + AssertExtensions.Throws("local", () => generator.Emit(OpCodes.Ldloc_0, local)); } [Fact] diff --git a/src/System.Reflection.Emit.ILGeneration/tests/ParameterBuilder/SetCustomAttributeTests.cs b/src/System.Reflection.Emit.ILGeneration/tests/ParameterBuilder/SetCustomAttributeTests.cs index a14ff010bb9d..847ffb87ab2c 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/ParameterBuilder/SetCustomAttributeTests.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/ParameterBuilder/SetCustomAttributeTests.cs @@ -65,9 +65,9 @@ public void SetCustomAttribute_NullArgument_ThrowsArgumentNullException() MethodBuilder method = type.DefineMethod("method1", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(int) }); ParameterBuilder parameter = method.DefineParameter(1, ParameterAttributes.HasDefault, "testParam"); - Assert.Throws("con", () => parameter.SetCustomAttribute(null, new byte[0])); - Assert.Throws("binaryAttribute", () => parameter.SetCustomAttribute(typeof(ParameterBuilderCustomAttribute).GetConstructor(new Type[] { typeof(bool) }), null)); - Assert.Throws("customBuilder", () => parameter.SetCustomAttribute(null)); + AssertExtensions.Throws("con", () => parameter.SetCustomAttribute(null, new byte[0])); + AssertExtensions.Throws("binaryAttribute", () => parameter.SetCustomAttribute(typeof(ParameterBuilderCustomAttribute).GetConstructor(new Type[] { typeof(bool) }), null)); + AssertExtensions.Throws("customBuilder", () => parameter.SetCustomAttribute(null)); } } diff --git a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArgument.cs b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArgument.cs index 7a8c4abcaa48..94992a667a0b 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArgument.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArgument.cs @@ -50,9 +50,9 @@ public void AddArgument_NullType_ThrowsArgumentNullException() ModuleBuilder module = Helpers.DynamicModule(); SignatureHelper helper = SignatureHelper.GetFieldSigHelper(module); - Assert.Throws("argument", () => helper.AddArgument(null)); - Assert.Throws("argument", () => helper.AddArgument(null, true)); - Assert.Throws("argument", () => helper.AddArgument(null, null, null)); + AssertExtensions.Throws("argument", () => helper.AddArgument(null)); + AssertExtensions.Throws("argument", () => helper.AddArgument(null, true)); + AssertExtensions.Throws("argument", () => helper.AddArgument(null, null, null)); } [Fact] diff --git a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArguments.cs b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArguments.cs index e9432053f4e6..20ec455e2891 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArguments.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperAddArguments.cs @@ -53,7 +53,7 @@ public void AddArgument_NullObjectInRequiredCustomModifiers_ThrowsArgumentNullEx ModuleBuilder module = Helpers.DynamicModule(); SignatureHelper helper = SignatureHelper.GetFieldSigHelper(module); - Assert.Throws("requiredCustomModifiers", () => { helper.AddArguments(new Type[] { typeof(string) }, new Type[][] { new Type[] { typeof(int), null } }, null); }); + AssertExtensions.Throws("requiredCustomModifiers", () => { helper.AddArguments(new Type[] { typeof(string) }, new Type[][] { new Type[] { typeof(int), null } }, null); }); } [Fact] @@ -62,10 +62,10 @@ public void AddArgument_DifferentCountsForCustomModifiers_ThrowsArgumentExceptio ModuleBuilder module = Helpers.DynamicModule(); SignatureHelper helper = SignatureHelper.GetFieldSigHelper(module); - Assert.Throws("requiredCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, new Type[][] { new Type[] { typeof(int), typeof(int[]) } }, null)); + AssertExtensions.Throws("requiredCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, new Type[][] { new Type[] { typeof(int), typeof(int[]) } }, null)); Assert.Throws(null, () => helper.AddArguments(new Type[] { typeof(string) }, new Type[][] { new Type[] { typeof(int) }, new Type[] { typeof(char) } }, null)); - Assert.Throws("optionalCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, null, new Type[][] { new Type[] { typeof(int), typeof(int[]) } })); + AssertExtensions.Throws("optionalCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, null, new Type[][] { new Type[] { typeof(int), typeof(int[]) } })); Assert.Throws(null, () => helper.AddArguments(new Type[] { typeof(string) }, null, new Type[][] { new Type[] { typeof(int) }, new Type[] { typeof(char) } })); } @@ -75,7 +75,7 @@ public void AddArgument_NullObjectInOptionalCustomModifiers_ThrowsArgumentNullEx ModuleBuilder module = Helpers.DynamicModule(); SignatureHelper helper = SignatureHelper.GetFieldSigHelper(module); - Assert.Throws("optionalCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, null, new Type[][] { new Type[] { typeof(int), null } })); + AssertExtensions.Throws("optionalCustomModifiers", () => helper.AddArguments(new Type[] { typeof(string) }, null, new Type[][] { new Type[] { typeof(int), null } })); } } } diff --git a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetMethodSigHelper.cs b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetMethodSigHelper.cs index 0d9d9a62455d..11f24545fe2e 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetMethodSigHelper.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetMethodSigHelper.cs @@ -51,7 +51,7 @@ public void GetMethodSigHelper_Module_Type_TypeArray() public void GetMethodSigHelper_Module_Type_TypeArray_NullObjectInParameterType_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("argument", () => SignatureHelper.GetMethodSigHelper(module, typeof(string), new Type[] { typeof(char), null })); + AssertExtensions.Throws("argument", () => SignatureHelper.GetMethodSigHelper(module, typeof(string), new Type[] { typeof(char), null })); } } } diff --git a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetPropertySigHelper.cs b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetPropertySigHelper.cs index 2501ccdca151..10d672cf77d5 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetPropertySigHelper.cs +++ b/src/System.Reflection.Emit.ILGeneration/tests/SignatureHelper/SignatureHelperGetPropertySigHelper.cs @@ -31,7 +31,7 @@ public void GetPropertySigHelper_Module_Type_TypeArray_NullObjectInParameterType { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("argument", () => SignatureHelper.GetPropertySigHelper(module, typeof(string), new Type[] { null, typeof(int) })); + AssertExtensions.Throws("argument", () => SignatureHelper.GetPropertySigHelper(module, typeof(string), new Type[] { null, typeof(int) })); } public static IEnumerable GetPropertySigHelper_TestData() @@ -69,7 +69,7 @@ public void GetPropertySigHelper_NullTypeInParameterTypes_ThrowsArgumentNullExce ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("optionalCustomModifiers", () => SignatureHelper.GetPropertySigHelper(module, typeof(string), types, types, types, customModifiers, customModifiers)); + AssertExtensions.Throws("optionalCustomModifiers", () => SignatureHelper.GetPropertySigHelper(module, typeof(string), types, types, types, customModifiers, customModifiers)); } } } diff --git a/src/System.Reflection.Emit.ILGeneration/tests/System.Reflection.Emit.ILGeneration.Tests.csproj b/src/System.Reflection.Emit.ILGeneration/tests/System.Reflection.Emit.ILGeneration.Tests.csproj index 081ff1781a85..9ffcbaa61306 100644 --- a/src/System.Reflection.Emit.ILGeneration/tests/System.Reflection.Emit.ILGeneration.Tests.csproj +++ b/src/System.Reflection.Emit.ILGeneration/tests/System.Reflection.Emit.ILGeneration.Tests.csproj @@ -35,6 +35,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Reflection.Emit.Lightweight/tests/DynamicMethodCtor.cs b/src/System.Reflection.Emit.Lightweight/tests/DynamicMethodCtor.cs index 9dc0143ea366..8c84a03523e6 100644 --- a/src/System.Reflection.Emit.Lightweight/tests/DynamicMethodCtor.cs +++ b/src/System.Reflection.Emit.Lightweight/tests/DynamicMethodCtor.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Reflection.Emit.Tests @@ -94,21 +95,21 @@ public void NullName_ThrowsArgumentNullException() { Module module = typeof(TestClass).GetTypeInfo().Module; - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module)); - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module, true)); - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module, false)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module, true)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], module, false)); - Assert.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], module, true)); - Assert.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], module, false)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], module, true)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], module, false)); - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass))); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass))); - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass), true)); - Assert.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass), false)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass), true)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, typeof(void), new Type[0], typeof(TestClass), false)); - Assert.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], typeof(TestClass), true)); - Assert.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], typeof(TestClass), false)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], typeof(TestClass), true)); + AssertExtensions.Throws("name", () => new DynamicMethod(null, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], typeof(TestClass), false)); } [Fact] @@ -135,25 +136,25 @@ public void ByRefReturnType_ThrowsNotSupportedException() [Fact] public void NullModule_ThrowsArgumentNullException() { - Assert.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null)); + AssertExtensions.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null)); - Assert.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null, true)); - Assert.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null, false)); + AssertExtensions.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null, true)); + AssertExtensions.Throws("m", () => new DynamicMethod("Method", typeof(void), new Type[0], (Module)null, false)); - Assert.Throws("m", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Module)null, true)); - Assert.Throws("m", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Module)null, false)); + AssertExtensions.Throws("m", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Module)null, true)); + AssertExtensions.Throws("m", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Module)null, false)); } [Fact] public void NullOwner_ThrowsArgumentNullException() { - Assert.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null)); + AssertExtensions.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null)); - Assert.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null, true)); - Assert.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null, false)); + AssertExtensions.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null, true)); + AssertExtensions.Throws("owner", () => new DynamicMethod("Method", typeof(void), new Type[0], (Type)null, false)); - Assert.Throws("owner", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Type)null, true)); - Assert.Throws("owner", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Type)null, false)); + AssertExtensions.Throws("owner", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Type)null, true)); + AssertExtensions.Throws("owner", () => new DynamicMethod("Method", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[0], (Type)null, false)); } [Theory] diff --git a/src/System.Reflection.Emit.Lightweight/tests/System.Reflection.Emit.Lightweight.Tests.csproj b/src/System.Reflection.Emit.Lightweight/tests/System.Reflection.Emit.Lightweight.Tests.csproj index e197c108e9c5..17dcf0acb505 100644 --- a/src/System.Reflection.Emit.Lightweight/tests/System.Reflection.Emit.Lightweight.Tests.csproj +++ b/src/System.Reflection.Emit.Lightweight/tests/System.Reflection.Emit.Lightweight.Tests.csproj @@ -15,6 +15,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index 485b221843b9..1394c61ad3f9 100644 --- a/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -67,8 +67,8 @@ public void DefineDynamicAssembly_AssemblyName_AssemblyBuilderAccess_CustomAttri [Fact] public void DefineDynamicAssembly_NullName_ThrowsArgumentNullException() { - Assert.Throws("name", () => AssemblyBuilder.DefineDynamicAssembly(null, AssemblyBuilderAccess.Run)); - Assert.Throws("name", () => AssemblyBuilder.DefineDynamicAssembly(null, AssemblyBuilderAccess.Run, new CustomAttributeBuilder[0])); + AssertExtensions.Throws("name", () => AssemblyBuilder.DefineDynamicAssembly(null, AssemblyBuilderAccess.Run)); + AssertExtensions.Throws("name", () => AssemblyBuilder.DefineDynamicAssembly(null, AssemblyBuilderAccess.Run, new CustomAttributeBuilder[0])); } [Theory] @@ -88,8 +88,8 @@ public void DefineDynamicAssembly_CoreclrNotSupportedAccess_ThrowsArgumentExcept [InlineData((AssemblyBuilderAccess)int.MaxValue)] public void DefineDynamicAssembly_InvalidAccess_ThrowsArgumentException(AssemblyBuilderAccess access) { - Assert.Throws("access", () => AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), access)); - Assert.Throws("access", () => AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), access, new CustomAttributeBuilder[0])); + AssertExtensions.Throws("access", () => AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), access)); + AssertExtensions.Throws("access", () => AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), access, new CustomAttributeBuilder[0])); } [Fact] @@ -141,7 +141,7 @@ public void DefineDynamicModule(string name) public void DefineDynamicModule_NullName_ThrowsArgumentNullException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws("name", () => assembly.DefineDynamicModule(null)); + AssertExtensions.Throws("name", () => assembly.DefineDynamicModule(null)); } [Theory] @@ -150,7 +150,7 @@ public void DefineDynamicModule_NullName_ThrowsArgumentNullException() public void DefineDynamicModule_InvalidName_ThrowsArgumentException(string name) { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws("name", () => assembly.DefineDynamicModule(name)); + AssertExtensions.Throws("name", () => assembly.DefineDynamicModule(name)); } [Fact] @@ -217,8 +217,8 @@ public void GetDynamicModule_NoSuchModule_ReturnsNull(string name) public void GetDynamicModule_InvalidName_ThrowsArgumentException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws("name", () => assembly.GetDynamicModule(null)); - Assert.Throws("name", () => assembly.GetDynamicModule("")); + AssertExtensions.Throws("name", () => assembly.GetDynamicModule(null)); + AssertExtensions.Throws("name", () => assembly.GetDynamicModule("")); } [Theory] @@ -238,7 +238,7 @@ public void SetCustomAttribute_ConstructorBuidler_ByteArray(AssemblyBuilderAcces public void SetCustomAttribute_ConstructorBuidler_ByteArray_NullConstructorBuilder_ThrowsArgumentNullException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws("con", () => assembly.SetCustomAttribute(null, new byte[0])); + AssertExtensions.Throws("con", () => assembly.SetCustomAttribute(null, new byte[0])); } [Fact] @@ -246,7 +246,7 @@ public void SetCustomAttribute_ConstructorBuidler_ByteArray_NullByteArray_Throws { AssemblyBuilder assembly = Helpers.DynamicAssembly(); ConstructorInfo constructor = typeof(IntAllAttribute).GetConstructor(new Type[] { typeof(int) }); - Assert.Throws("binaryAttribute", () => assembly.SetCustomAttribute(constructor, null)); + AssertExtensions.Throws("binaryAttribute", () => assembly.SetCustomAttribute(constructor, null)); } [Theory] @@ -267,7 +267,7 @@ public void SetCustomAttribute_CustomAttributeBuilder(AssemblyBuilderAccess acce public void SetCustomAttribute_CustomAttributeBuilder_NullAttributeBuilder_ThrowsArgumentNullException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws("customBuilder", () => assembly.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => assembly.SetCustomAttribute(null)); } public static IEnumerable Equals_TestData() diff --git a/src/System.Reflection.Emit/tests/ConstructorBuilder/ConstructorBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/ConstructorBuilder/ConstructorBuilderSetCustomAttribute.cs index 01c3e12af811..3607ee4aba6d 100644 --- a/src/System.Reflection.Emit/tests/ConstructorBuilder/ConstructorBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/ConstructorBuilder/ConstructorBuilderSetCustomAttribute.cs @@ -31,7 +31,7 @@ public void SetCustomAttribute_ConstructorBuilder_ByteArray_NullConstructorBuild { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); ConstructorBuilder constructor = type.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new Type[0]); - Assert.Throws("con", () => constructor.SetCustomAttribute(null, new byte[0])); + AssertExtensions.Throws("con", () => constructor.SetCustomAttribute(null, new byte[0])); } [Fact] @@ -63,7 +63,7 @@ public void SetCustomAttribute_NullCustomAttributeBuilder_ThrowsArgumentNullExce ILGenerator ilGenerator = constructor.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldarg_1); - Assert.Throws("customBuilder", () => constructor.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => constructor.SetCustomAttribute(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/EnumBuilder/EnumBuilder.Methods.Tests.cs b/src/System.Reflection.Emit/tests/EnumBuilder/EnumBuilder.Methods.Tests.cs index dcb886fd7252..8e282935ebf0 100644 --- a/src/System.Reflection.Emit/tests/EnumBuilder/EnumBuilder.Methods.Tests.cs +++ b/src/System.Reflection.Emit/tests/EnumBuilder/EnumBuilder.Methods.Tests.cs @@ -80,7 +80,7 @@ public void DefineLiteral(Type underlyingType, object literalValue) public void DefineLiteral_NullLiteralName_ThrowsArgumentNullException() { EnumBuilder enumBuilder = Helpers.DynamicEnum(TypeAttributes.Public, typeof(int)); - Assert.Throws("fieldName", () => enumBuilder.DefineLiteral(null, 1)); + AssertExtensions.Throws("fieldName", () => enumBuilder.DefineLiteral(null, 1)); } [Theory] @@ -90,7 +90,7 @@ public void DefineLiteral_NullLiteralName_ThrowsArgumentNullException() public void DefineLiteral_EmptyLiteralName_ThrowsArgumentException(string literalName) { EnumBuilder enumBuilder = Helpers.DynamicEnum(TypeAttributes.Public, typeof(int)); - Assert.Throws("fieldName", () => enumBuilder.DefineLiteral(literalName, 1)); + AssertExtensions.Throws("fieldName", () => enumBuilder.DefineLiteral(literalName, 1)); } public static IEnumerable DefineLiteral_InvalidLiteralValue_ThrowsArgumentException_TestData() diff --git a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderAddOtherMethod.cs b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderAddOtherMethod.cs index 22eb528c72d3..800315e7c469 100644 --- a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderAddOtherMethod.cs +++ b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderAddOtherMethod.cs @@ -81,7 +81,7 @@ public void AddOtherMethod_NullMethod_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("mdBuilder", () => eventBuilder.AddOtherMethod(null)); + AssertExtensions.Throws("mdBuilder", () => eventBuilder.AddOtherMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetAddOnMethod.cs b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetAddOnMethod.cs index 55437c4630ad..698fe36c6879 100644 --- a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetAddOnMethod.cs +++ b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetAddOnMethod.cs @@ -82,7 +82,7 @@ public void SetAddOnMethod_NullMethod_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("mdBuilder", () => eventBuilder.SetAddOnMethod(null)); + AssertExtensions.Throws("mdBuilder", () => eventBuilder.SetAddOnMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetCustomAttribute.cs index b501882799ba..289dd0f9a0e6 100644 --- a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetCustomAttribute.cs @@ -27,7 +27,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullConstructorInfo_Thr { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder ev = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("con", () => ev.SetCustomAttribute(null, new byte[256])); + AssertExtensions.Throws("con", () => ev.SetCustomAttribute(null, new byte[256])); } [Fact] @@ -37,7 +37,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullByteArray_ThrowsArg EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); ConstructorInfo attributeConstructor = typeof(EmptyAttribute).GetConstructor(new Type[0]); - Assert.Throws("binaryAttribute", () => eventBuilder.SetCustomAttribute(attributeConstructor, null)); + AssertExtensions.Throws("binaryAttribute", () => eventBuilder.SetCustomAttribute(attributeConstructor, null)); } [Fact] @@ -68,7 +68,7 @@ public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgument { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("customBuilder", () => eventBuilder.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => eventBuilder.SetCustomAttribute(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRaiseMethod.cs b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRaiseMethod.cs index ecd437db74e4..156e9d38c30b 100644 --- a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRaiseMethod.cs +++ b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRaiseMethod.cs @@ -81,7 +81,7 @@ public void SetRaiseMethod_NullMethod_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("mdBuilder", () => eventBuilder.SetRaiseMethod(null)); + AssertExtensions.Throws("mdBuilder", () => eventBuilder.SetRaiseMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRemoveOnMethod.cs b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRemoveOnMethod.cs index e70ed1fde8fc..e4f0dd14c331 100644 --- a/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRemoveOnMethod.cs +++ b/src/System.Reflection.Emit/tests/EventBuilder/EventBuilderSetRemoveOnMethod.cs @@ -82,7 +82,7 @@ public void SetRemoveOnMethod_NullMethod_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); EventBuilder eventBuilder = type.DefineEvent("TestEvent", EventAttributes.None, typeof(TestEventHandler)); - Assert.Throws("mdBuilder", () => eventBuilder.SetRemoveOnMethod(null)); + AssertExtensions.Throws("mdBuilder", () => eventBuilder.SetRemoveOnMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/FieldBuilder/FieldBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/FieldBuilder/FieldBuilderSetCustomAttribute.cs index f785acdbc0da..dbcb57fe08d3 100644 --- a/src/System.Reflection.Emit/tests/FieldBuilder/FieldBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/FieldBuilder/FieldBuilderSetCustomAttribute.cs @@ -25,7 +25,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullConstructorInfo_Thr { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); FieldBuilder field = type.DefineField("TestField", typeof(object), FieldAttributes.Public); - Assert.Throws("con", () => field.SetCustomAttribute(null, new byte[256])); + AssertExtensions.Throws("con", () => field.SetCustomAttribute(null, new byte[256])); } [Fact] @@ -34,7 +34,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullByteArray_ThrowsArg TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); FieldBuilder field = type.DefineField("TestField", typeof(object), FieldAttributes.Public); ConstructorInfo attributeConstructor = typeof(EmptyAttribute).GetConstructor(new Type[0]); - Assert.Throws("binaryAttribute", () => field.SetCustomAttribute(attributeConstructor, null)); + AssertExtensions.Throws("binaryAttribute", () => field.SetCustomAttribute(attributeConstructor, null)); } [Fact] @@ -65,7 +65,7 @@ public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgument { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); FieldBuilder field = type.DefineField("TestField", typeof(object), FieldAttributes.Public); - Assert.Throws("customBuilder", () => field.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => field.SetCustomAttribute(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs index b8ab34981155..5b31ac6b100c 100644 --- a/src/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs @@ -27,7 +27,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullAttributeConstructo string[] typeParamNames = new string[] { "TFirst" }; GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Assert.Throws("con", () => typeParams[0].SetCustomAttribute(null, new byte[128])); + AssertExtensions.Throws("con", () => typeParams[0].SetCustomAttribute(null, new byte[128])); } [Fact] @@ -38,7 +38,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullBinaryAttribute_Thr GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); ConstructorInfo attributeConstructor = typeof(HelperAttribute).GetConstructor(new Type[0]); - Assert.Throws("binaryAttribute", () => typeParams[0].SetCustomAttribute(attributeConstructor, null)); + AssertExtensions.Throws("binaryAttribute", () => typeParams[0].SetCustomAttribute(attributeConstructor, null)); } [Fact] @@ -60,7 +60,7 @@ public void SetCustomAttribute_CustomAttributeBuilder_NullAttributeBuilder_Throw string[] typeParamNames = new string[] { "TFirst" }; GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Assert.Throws("customBuilder", () => typeParams[0].SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => typeParams[0].SetCustomAttribute(null)); } } diff --git a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderDefineGenericParameters.cs b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderDefineGenericParameters.cs index 55915c90c891..c6b8b3875923 100644 --- a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderDefineGenericParameters.cs +++ b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderDefineGenericParameters.cs @@ -101,7 +101,7 @@ public void DefineGenericParameters_NullNames_ThrowsArgumentNullException(TypeAt { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); MethodBuilder method = type.DefineMethod("TestMethod", methodAttributes); - Assert.Throws("names", () => method.DefineGenericParameters(null)); + AssertExtensions.Throws("names", () => method.DefineGenericParameters(null)); } [Theory] @@ -112,7 +112,7 @@ public void DefineGenericParameters_NamesContainsNull_ThrowsArgumentNullExceptio TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); MethodBuilder method = type.DefineMethod("Test", methodAttributes); string[] typeParamNames = new string[] { "T", null, "U" }; - Assert.Throws("names", () => method.DefineGenericParameters(typeParamNames)); + AssertExtensions.Throws("names", () => method.DefineGenericParameters(typeParamNames)); } [Theory] @@ -122,7 +122,7 @@ public void DefineGenericParameters_EmptyNames_ThrowsArgumentException(TypeAttri { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); MethodBuilder builder = type.DefineMethod("TestMethod", methodAttributes); - Assert.Throws("names", () => builder.DefineGenericParameters()); + AssertExtensions.Throws("names", () => builder.DefineGenericParameters()); } [Fact] diff --git a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetCustomAttribute.cs index 410d6fd4cc37..d74d3ae82d96 100644 --- a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetCustomAttribute.cs @@ -98,7 +98,7 @@ public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgument TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); MethodBuilder method = type.DefineMethod("method1", MethodAttributes.Public | MethodAttributes.Static); - Assert.Throws("customBuilder", () => method.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => method.SetCustomAttribute(null)); } [Fact] @@ -118,7 +118,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullConstructor_ThrowsA TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); MethodBuilder method = type.DefineMethod("TestMethod", MethodAttributes.Public); - Assert.Throws("con", () => method.SetCustomAttribute(null, new byte[0])); + AssertExtensions.Throws("con", () => method.SetCustomAttribute(null, new byte[0])); } [Fact] @@ -127,7 +127,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullBinaryAttribute_Thr TypeBuilder type = Helpers.DynamicType(TypeAttributes.Abstract); MethodBuilder builder = type.DefineMethod("TestMethod", MethodAttributes.Public); - Assert.Throws("binaryAttribute", () => builder.SetCustomAttribute(typeof(MethodBuilderCustomAttribute).GetConstructor(new Type[0]), null)); + AssertExtensions.Throws("binaryAttribute", () => builder.SetCustomAttribute(typeof(MethodBuilderCustomAttribute).GetConstructor(new Type[0]), null)); } } } diff --git a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetParameters.cs b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetParameters.cs index 2623bc73db06..212da2d6e4ba 100644 --- a/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetParameters.cs +++ b/src/System.Reflection.Emit/tests/MethodBuilder/MethodBuilderSetParameters.cs @@ -118,7 +118,7 @@ public void SetParameters_NullParameter_ThrowsArgumentNullException() ILGenerator ilGenerator = builder.GetILGenerator(); ilGenerator.Emit(OpCodes.Ret); - Assert.Throws("argument", () => type.CreateTypeInfo().AsType()); + AssertExtensions.Throws("argument", () => type.CreateTypeInfo().AsType()); } private void VerifyParameters(ParameterInfo[] parameters, Type[] parameterTypes, string[] parameterName) diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineEnum.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineEnum.cs index ee1c10d9aaa9..80b9e254b425 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineEnum.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineEnum.cs @@ -101,7 +101,7 @@ public void DefineEnum_EnumWithSameNameExists_ThrowsArgumentException() public void DefineEnum_NullName_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("fullname", () => module.DefineEnum(null, TypeAttributes.Public, typeof(object))); + AssertExtensions.Throws("fullname", () => module.DefineEnum(null, TypeAttributes.Public, typeof(object))); } [Theory] @@ -111,7 +111,7 @@ public void DefineEnum_NullName_ThrowsArgumentNullException() public void DefineEnum_EmptyName_ThrowsArgumentNullException(string name) { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("fullname", () => module.DefineEnum(name, TypeAttributes.Public, typeof(object))); + AssertExtensions.Throws("fullname", () => module.DefineEnum(name, TypeAttributes.Public, typeof(object))); } [Theory] @@ -150,7 +150,7 @@ public void DefineEnum_IncorrectVisibilityAttributes_ThrowsArgumentException(Typ public void DefineEnum_NullUnderlyingType_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("type", () => module.DefineEnum("Name", TypeAttributes.Public, null)); + AssertExtensions.Throws("type", () => module.DefineEnum("Name", TypeAttributes.Public, null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineInitializedData.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineInitializedData.cs index f795030436e9..9a3eaf37731b 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineInitializedData.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineInitializedData.cs @@ -26,7 +26,7 @@ public void TestWithStaticAndPublic(FieldAttributes attributes) public void DefineInitializedData_EmptyName_ThrowsArgumentException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("name", () => module.DefineInitializedData("", new byte[] { 1, 0, 1 }, FieldAttributes.Private)); + AssertExtensions.Throws("name", () => module.DefineInitializedData("", new byte[] { 1, 0, 1 }, FieldAttributes.Private)); } [Theory] @@ -42,14 +42,14 @@ public void DefineInitializedData_InvalidDataLength_ThrowsArgumentException(int public void DefineInitializedData_NullName_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("name", () => module.DefineInitializedData(null, new byte[] { 1, 0, 1 }, FieldAttributes.Public)); + AssertExtensions.Throws("name", () => module.DefineInitializedData(null, new byte[] { 1, 0, 1 }, FieldAttributes.Public)); } [Fact] public void DefineInitializedData_NullData_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("data", () => module.DefineInitializedData("MyField", null, FieldAttributes.Public)); + AssertExtensions.Throws("data", () => module.DefineInitializedData("MyField", null, FieldAttributes.Public)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineType.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineType.cs index 433ffea8cf4f..e2f5890263a7 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineType.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineType.cs @@ -111,15 +111,15 @@ public void DefineType_String_TypeAttributes_Type_TypeCreatedInModule() public void DefineType_NullName_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("fullname", () => module.DefineType(null)); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic)); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType))); + AssertExtensions.Throws("fullname", () => module.DefineType(null)); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic)); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType))); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), PackingSize.Unspecified)); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), 0)); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), PackingSize.Unspecified, 0)); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), PackingSize.Unspecified)); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), 0)); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), PackingSize.Unspecified, 0)); - Assert.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), new Type[0])); + AssertExtensions.Throws("fullname", () => module.DefineType(null, TypeAttributes.NotPublic, typeof(ModuleBuilderDefineType), new Type[0])); } [Fact] diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineUninitializedData.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineUninitializedData.cs index d28b18c8722b..8926bda35a70 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineUninitializedData.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderDefineUninitializedData.cs @@ -53,7 +53,7 @@ public void DefineUnitializedData(FieldAttributes attributes) public void DefineUnitializedData_EmptyName_ThrowsArgumentException(FieldAttributes attributes) { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("name", () => module.DefineUninitializedData("", 1, attributes)); + AssertExtensions.Throws("name", () => module.DefineUninitializedData("", 1, attributes)); } [Theory] @@ -72,7 +72,7 @@ public void DefineUnitializedData_InvalidSize_ThrowsArgumentException(FieldAttri public void DefineUnitializedData_NullName_ThrowsArgumentNullException(FieldAttributes attributes) { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("name", () => module.DefineUninitializedData(null, 1, attributes)); + AssertExtensions.Throws("name", () => module.DefineUninitializedData(null, 1, attributes)); } [Theory] diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderGetArrayMethod.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderGetArrayMethod.cs index 71d2ec6ad816..e98ffd233259 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderGetArrayMethod.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderGetArrayMethod.cs @@ -112,12 +112,12 @@ public void GetArrayMethod_InvalidArgument_ThrowsArgumentException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("arrayClass", () => module.GetArrayMethod(null, "TestMethod", CallingConventions.Standard, typeof(void), new Type[0])); + AssertExtensions.Throws("arrayClass", () => module.GetArrayMethod(null, "TestMethod", CallingConventions.Standard, typeof(void), new Type[0])); - Assert.Throws("methodName", () => module.GetArrayMethod(typeof(string[]), null, CallingConventions.Standard, typeof(void), new Type[0])); - Assert.Throws("methodName", () => module.GetArrayMethod(typeof(string[]), "", CallingConventions.Standard, typeof(void), new Type[0])); + AssertExtensions.Throws("methodName", () => module.GetArrayMethod(typeof(string[]), null, CallingConventions.Standard, typeof(void), new Type[0])); + AssertExtensions.Throws("methodName", () => module.GetArrayMethod(typeof(string[]), "", CallingConventions.Standard, typeof(void), new Type[0])); - Assert.Throws("argument", () => module.GetArrayMethod(typeof(string[]), "TestMethod", CallingConventions.Standard, typeof(void), new Type[] { null })); + AssertExtensions.Throws("argument", () => module.GetArrayMethod(typeof(string[]), "TestMethod", CallingConventions.Standard, typeof(void), new Type[] { null })); } private void VerifyGetArrayMethod(ModuleBuilder module, Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes) diff --git a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderSetCustomAttribute.cs index 0b0d227ecc8f..9306ef62c71f 100644 --- a/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/ModuleBuilder/ModuleBuilderSetCustomAttribute.cs @@ -26,7 +26,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray() public void SetCustomAttribute_ConstructorInfo_ByteArray_NullConstructor_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("con", () => module.SetCustomAttribute(null, new byte[0])); + AssertExtensions.Throws("con", () => module.SetCustomAttribute(null, new byte[0])); } [Fact] @@ -34,7 +34,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullBinaryAttribute_Thr { ModuleBuilder module = Helpers.DynamicModule(); ConstructorInfo constructor = typeof(IntAllAttribute).GetConstructor(new Type[] { typeof(int) }); - Assert.Throws("binaryAttribute", () => module.SetCustomAttribute(constructor, null)); + AssertExtensions.Throws("binaryAttribute", () => module.SetCustomAttribute(constructor, null)); } [Fact] @@ -55,7 +55,7 @@ public void SetCustomAttribute_CustomAttributeBuilder() public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgumentNullException() { ModuleBuilder module = Helpers.DynamicModule(); - Assert.Throws("customBuilder", () => module.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => module.SetCustomAttribute(null)); } } } diff --git a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderAddOtherMethod.cs b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderAddOtherMethod.cs index fd5f24586e94..2f25a5135816 100644 --- a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderAddOtherMethod.cs +++ b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderAddOtherMethod.cs @@ -40,7 +40,7 @@ public void AddOtherMethod_NullMethodBuilder_ThrowsArgumentNullExceptio() TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); PropertyBuilder property = type.DefineProperty("TestProperty", PropertyAttributes.None, typeof(int), new Type[0]); - Assert.Throws("mdBuilder", () => property.AddOtherMethod(null)); + AssertExtensions.Throws("mdBuilder", () => property.AddOtherMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetCustomAttribute.cs index 747337a4f68d..6e4d999f2cc3 100644 --- a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetCustomAttribute.cs @@ -49,7 +49,7 @@ public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgument TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); PropertyBuilder property = type.DefineProperty("TestProperty", PropertyAttributes.HasDefault, typeof(int), null); - Assert.Throws("customBuilder", () => property.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => property.SetCustomAttribute(null)); } [Fact] @@ -111,7 +111,7 @@ public void SetCustomAttribute_ConstructorInfo_ByteArray_NullConstructorInfo_Thr TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); PropertyBuilder property = type.DefineProperty("TestProperty", PropertyAttributes.HasDefault, typeof(int), null); - Assert.Throws("con", () => property.SetCustomAttribute(null, new byte[6])); + AssertExtensions.Throws("con", () => property.SetCustomAttribute(null, new byte[6])); } diff --git a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetGetMethod.cs b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetGetMethod.cs index 1b5aff108892..583a32490a9c 100644 --- a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetGetMethod.cs +++ b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetGetMethod.cs @@ -37,7 +37,7 @@ public void SetGetMethod_NullMethodBuilder_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); PropertyBuilder property = type.DefineProperty("TestProperty", PropertyAttributes.None, typeof(int), null); - Assert.Throws("mdBuilder", () => property.SetGetMethod(null)); + AssertExtensions.Throws("mdBuilder", () => property.SetGetMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetSetMethod.cs b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetSetMethod.cs index f2b4d8e82d85..be45575e7db4 100644 --- a/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetSetMethod.cs +++ b/src/System.Reflection.Emit/tests/PropertyBuilder/PropertyBuilderSetSetMethod.cs @@ -31,7 +31,7 @@ public void SetSetMethod_NullMethodBuilder_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); PropertyBuilder property = type.DefineProperty("TestProperty", PropertyAttributes.None, typeof(int), null); - Assert.Throws("mdBuilder", () => property.SetSetMethod(null)); + AssertExtensions.Throws("mdBuilder", () => property.SetSetMethod(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj b/src/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj index 5ed63ea17da6..88fdc7cb7d91 100644 --- a/src/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj +++ b/src/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj @@ -8,6 +8,9 @@ + + Common\System\AssertExtensions.cs + Common\tests\System\PlatformDetection.cs diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderAddInterfaceImplementaion.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderAddInterfaceImplementaion.cs index d41c2253e6a1..38584a9e9d90 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderAddInterfaceImplementaion.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderAddInterfaceImplementaion.cs @@ -59,7 +59,7 @@ public void AddInterfaceImplementation_GeneralClass() public void AddInterfaceImplementation_NullInterfaceType_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("interfaceType", () => type.AddInterfaceImplementation(null)); + AssertExtensions.Throws("interfaceType", () => type.AddInterfaceImplementation(null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineField.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineField.cs index 7b28f7b86b68..be83d8b59148 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineField.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineField.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -66,7 +66,7 @@ public void DefineField_CalledTwice_Works() public void DefineField_NullFieldName_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("fieldName", () => type.DefineField(null, typeof(int), FieldAttributes.Public)); + AssertExtensions.Throws("fieldName", () => type.DefineField(null, typeof(int), FieldAttributes.Public)); } [Fact] @@ -85,14 +85,14 @@ public void DefineField_TypeAlreadyCreated_ThrowsInvalidOperationException() public void DefineField_InvalidFieldName_ThrowsArgumentException(string fieldName) { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("fieldName", () => type.DefineField(fieldName, typeof(int), FieldAttributes.Public)); + AssertExtensions.Throws("fieldName", () => type.DefineField(fieldName, typeof(int), FieldAttributes.Public)); } [Fact] public void DefineField_NullFieldType_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("type", () => type.DefineField("Name", null, FieldAttributes.Public)); + AssertExtensions.Throws("type", () => type.DefineField("Name", null, FieldAttributes.Public)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineGenericParameters.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineGenericParameters.cs index e139a88e2406..1384ab7f320b 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineGenericParameters.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineGenericParameters.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -55,7 +55,7 @@ public void DefineGenericParameters(string[] typeParamNames) public void DefineGenericParameters_NullNames_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("names", () => type.DefineGenericParameters(null)); + AssertExtensions.Throws("names", () => type.DefineGenericParameters(null)); } [Fact] @@ -69,7 +69,7 @@ public void DefineGenericParameters_EmptyNames_ThrowsArgumentException() public void DefineGenericParameters_NullName_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("names", () => type.DefineGenericParameters(new string[] { null })); + AssertExtensions.Throws("names", () => type.DefineGenericParameters(new string[] { null })); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineMethodOverride.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineMethodOverride.cs index 43ffe017c0b4..f53fa5717c5b 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineMethodOverride.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineMethodOverride.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Reflection.Emit.Tests @@ -103,7 +104,7 @@ public void DefineMethodOverride_NullMethodInfoBody_ThrowsArgumentNullException( { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); MethodInfo method = typeof(DefineMethodOverrideClass).GetMethod("M"); - Assert.Throws("methodInfoBody", () => type.DefineMethodOverride(null, method)); + AssertExtensions.Throws("methodInfoBody", () => type.DefineMethodOverride(null, method)); } [Fact] @@ -111,7 +112,7 @@ public void DefineMethodOverride_NullMethodInfoDeclaration_ThrowsArgumentNullExc { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); MethodInfo method = typeof(DefineMethodOverrideInterface).GetMethod("M"); - Assert.Throws("methodInfoDeclaration", () => type.DefineMethodOverride(method, null)); + AssertExtensions.Throws("methodInfoDeclaration", () => type.DefineMethodOverride(method, null)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs index 5748160e6b65..b0e1df2c5e6d 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -119,12 +120,12 @@ public void DefineNestedType(string name, TypeAttributes attributes, Type parent public void DefineNestedType_NullName_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); - Assert.Throws("fullname", () => type.DefineNestedType(null)); - Assert.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public)); - Assert.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType())); - Assert.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), 2048)); - Assert.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), PackingSize.Size8)); - Assert.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), new Type[0])); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType())); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), 2048)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), PackingSize.Size8)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(null, TypeAttributes.Public, type.GetType(), new Type[0])); } [Theory] @@ -134,19 +135,19 @@ public void DefineNestedType_NullName_ThrowsArgumentNullException() public void DefineNestedType_EmptyName_ThrowsArgumentException(string fullname) { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); - Assert.Throws("fullname", () => type.DefineNestedType(fullname)); - Assert.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public)); - Assert.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType())); - Assert.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), 2048)); - Assert.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), PackingSize.Size8)); - Assert.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), new Type[0])); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType())); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), 2048)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), PackingSize.Size8)); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(fullname, TypeAttributes.Public, type.GetType(), new Type[0])); } [Fact] public void DefineNestedType_LongName_ThrowsArgumentException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); - Assert.Throws("fullname", () => type.DefineNestedType(new string('a', 1024))); + AssertExtensions.Throws("fullname", () => type.DefineNestedType(new string('a', 1024))); } [Theory] @@ -168,8 +169,8 @@ public void DefineNestedType_InvalidAttributes_ThrowsArgumentException(TypeAttri public void DefineNestedType_InvalidParent_ThrowsArgumentException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("attr", () => type.DefineNestedType("Name", TypeAttributes.Public, typeof(int).MakeByRefType())); - Assert.Throws("attr", () => type.DefineNestedType("Name", TypeAttributes.Public, typeof(EmptyNonGenericInterface1))); + AssertExtensions.Throws("attr", () => type.DefineNestedType("Name", TypeAttributes.Public, typeof(int).MakeByRefType())); + AssertExtensions.Throws("attr", () => type.DefineNestedType("Name", TypeAttributes.Public, typeof(EmptyNonGenericInterface1))); } [Theory] @@ -203,7 +204,7 @@ public void DefineNestedType_ParentHasNoDefaultConstructor_ThrowsNotSupportedExc public void DefineNestedType_NullInterface_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("interfaces", () => type.DefineNestedType("Name", TypeAttributes.NestedPublic, typeof(object), new Type[] { null })); + AssertExtensions.Throws("interfaces", () => type.DefineNestedType("Name", TypeAttributes.NestedPublic, typeof(object), new Type[] { null })); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineProperty.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineProperty.cs index a9eba364eefa..267bd3904364 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineProperty.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineProperty.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -111,18 +111,18 @@ public void DefineProperty_GetAccessor_NullCustomModifiers() public void DefineProperty_InvalidName_ThrowsArgumentException(string name) { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); - Assert.Throws("name", () => type.DefineProperty(name, PropertyAttributes.HasDefault, typeof(int), null, null, new Type[] { typeof(int) }, null, null)); + AssertExtensions.Throws("name", () => type.DefineProperty(name, PropertyAttributes.HasDefault, typeof(int), null, null, new Type[] { typeof(int) }, null, null)); - Assert.Throws("name", () => type.DefineProperty(name, PropertyAttributes.None, typeof(int), new Type[] { typeof(int) })); + AssertExtensions.Throws("name", () => type.DefineProperty(name, PropertyAttributes.None, typeof(int), new Type[] { typeof(int) })); } [Fact] public void DefineProperty_NullString_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); - Assert.Throws("name", () => type.DefineProperty(null, PropertyAttributes.HasDefault, typeof(int), null, null, new Type[] { typeof(int) }, null, null)); + AssertExtensions.Throws("name", () => type.DefineProperty(null, PropertyAttributes.HasDefault, typeof(int), null, null, new Type[] { typeof(int) }, null, null)); - Assert.Throws("name", () => type.DefineProperty(null, PropertyAttributes.None, typeof(int), new Type[] { typeof(int) })); + AssertExtensions.Throws("name", () => type.DefineProperty(null, PropertyAttributes.None, typeof(int), new Type[] { typeof(int) })); } [Fact] @@ -151,7 +151,7 @@ public void DefineProperty_OpenGenericReturnType_ThrowsBadImageFormatExceptionGe public void DefineProperty_NullParameterType_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("argument", () => type.DefineProperty("Name", PropertyAttributes.None, typeof(void), new Type[] { null })); + AssertExtensions.Throws("argument", () => type.DefineProperty("Name", PropertyAttributes.None, typeof(void), new Type[] { null })); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetConstructor.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetConstructor.cs index 5f672c91ddb2..431f10a7b29f 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetConstructor.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetConstructor.cs @@ -16,7 +16,7 @@ public void GetConstructor_DeclaringTypeOfConstructorNotGenericTypeDefinition_Th ConstructorBuilder ctor = type.DefineDefaultConstructor(MethodAttributes.PrivateScope | MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName); - Assert.Throws("type", () => TypeBuilder.GetConstructor(type.AsType(), ctor)); + AssertExtensions.Throws("type", () => TypeBuilder.GetConstructor(type.AsType(), ctor)); } [Fact] @@ -53,7 +53,7 @@ public void GetConstructor_DeclaringTypeOfConstructorNotGenericTypeDefinitionOfT ConstructorBuilder ctor2 = type2.DefineDefaultConstructor(MethodAttributes.PrivateScope | MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName); Type genericInt = type1.MakeGenericType(typeof(int)); - Assert.Throws("type", () => TypeBuilder.GetConstructor(genericInt, ctor2)); + AssertExtensions.Throws("type", () => TypeBuilder.GetConstructor(genericInt, ctor2)); } [Fact] @@ -63,7 +63,7 @@ public void GetConstructor_TypeNotGeneric_ThrowsArgumentException() ConstructorBuilder ctor = type.DefineDefaultConstructor(MethodAttributes.PrivateScope | MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName); - Assert.Throws("constructor", () => TypeBuilder.GetConstructor(type.AsType(), ctor)); + AssertExtensions.Throws("constructor", () => TypeBuilder.GetConstructor(type.AsType(), ctor)); } } } diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetField.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetField.cs index 30de4c5bf595..07845bbf7626 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetField.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetField.cs @@ -15,7 +15,7 @@ public void GetField_DeclaringTypeOfFieldNotGeneric_ThrowsArgumentException() GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters("T"); FieldBuilder field = type.DefineField("Field", typeParams[0].AsType(), FieldAttributes.Public); - Assert.Throws("type", () => TypeBuilder.GetField(type.AsType(), field)); + AssertExtensions.Throws("type", () => TypeBuilder.GetField(type.AsType(), field)); } [Fact] @@ -52,7 +52,7 @@ public void GetField_DeclaringTypeOfFieldNotGenericTypeDefinitionOfType_ThrowsAr FieldBuilder field2 = type2.DefineField("Field", typeParams[0].AsType(), FieldAttributes.Public); Type genericInt = type1.MakeGenericType(typeof(int)); - Assert.Throws("type", () => TypeBuilder.GetField(genericInt, field2)); + AssertExtensions.Throws("type", () => TypeBuilder.GetField(genericInt, field2)); } [Fact] @@ -61,7 +61,7 @@ public void GetField_TypeNotGeneric_ThrowsArgumentException() TypeBuilder type = Helpers.DynamicType(TypeAttributes.Class | TypeAttributes.Public); FieldBuilder field = type.DefineField("Field", typeof(int), FieldAttributes.Public); - Assert.Throws("field", () => TypeBuilder.GetField(type.AsType(), field)); + AssertExtensions.Throws("field", () => TypeBuilder.GetField(type.AsType(), field)); } } } diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetMethod.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetMethod.cs index b7b89ca5875b..90847d8e51bd 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetMethod.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderGetMethod.cs @@ -59,7 +59,7 @@ public void GetMethod_MethodDefinitionNotInTypeGenericDefinition_ThrowsArgumentE Type genericIntType = type.MakeGenericType(typeof(int)); MethodInfo createdGenericMethod = genericMethod.MakeGenericMethod(typeof(int)); - Assert.Throws("method", () => TypeBuilder.GetMethod(genericIntType, createdGenericMethod)); + AssertExtensions.Throws("method", () => TypeBuilder.GetMethod(genericIntType, createdGenericMethod)); } [Fact] @@ -81,7 +81,7 @@ public void GetMethod_MethodNotGenericTypeDefinition_ThrowsArgumentException() genMethod2.SetSignature(null, null, null, new Type[] { methodParams1[0].AsType() }, null, null); Type genericIntType = type1.MakeGenericType(typeof(int)); - Assert.Throws("type", () => TypeBuilder.GetMethod(genericIntType, genMethod2)); + AssertExtensions.Throws("type", () => TypeBuilder.GetMethod(genericIntType, genMethod2)); } [Fact] @@ -93,7 +93,7 @@ public void GetMethod_TypeIsNotGeneric_ThrowsArgumentException() GenericTypeParameterBuilder[] methodParams = genericMethod.DefineGenericParameters("U"); genericMethod.SetSignature(null, null, null, new Type[] { methodParams[0].AsType() }, null, null); - Assert.Throws("method", () => TypeBuilder.GetMethod(type.AsType(), genericMethod)); + AssertExtensions.Throws("method", () => TypeBuilder.GetMethod(type.AsType(), genericMethod)); } [Fact] diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderMakeGenericType.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderMakeGenericType.cs index b0c3478d529c..4ca576c21fe1 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderMakeGenericType.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderMakeGenericType.cs @@ -42,7 +42,7 @@ public void MakeGenericType_NullTypeArguments_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); type.DefineGenericParameters("T", "U"); - Assert.Throws("typeArguments", () => type.MakeGenericType(null)); + AssertExtensions.Throws("typeArguments", () => type.MakeGenericType(null)); } [Fact] @@ -50,7 +50,7 @@ public void MakeGenericType_NullObjectInTypeArguments_ThrowsArgumentNullExceptio { TypeBuilder type = Helpers.DynamicType(TypeAttributes.NotPublic); type.DefineGenericParameters("T", "U"); - Assert.Throws("typeArguments", () => type.MakeGenericType(new Type[] { null, null })); + AssertExtensions.Throws("typeArguments", () => type.MakeGenericType(new Type[] { null, null })); } } diff --git a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderSetCustomAttribute.cs b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderSetCustomAttribute.cs index 008ce53a0405..27cc7b8296fc 100644 --- a/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderSetCustomAttribute.cs +++ b/src/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderSetCustomAttribute.cs @@ -34,7 +34,7 @@ public void SetCustomAttribute_CustomAttributeBuilder() public void SetCustomAttribute_CustomAttributeBuilder_NullBuilder_ThrowsArgumentNullException() { TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); - Assert.Throws("customBuilder", () => type.SetCustomAttribute(null)); + AssertExtensions.Throws("customBuilder", () => type.SetCustomAttribute(null)); } [Fact] diff --git a/src/System.Reflection.Metadata/tests/Metadata/BlobContentIdTests.cs b/src/System.Reflection.Metadata/tests/Metadata/BlobContentIdTests.cs index 5947de54d375..3c430ec5a485 100644 --- a/src/System.Reflection.Metadata/tests/Metadata/BlobContentIdTests.cs +++ b/src/System.Reflection.Metadata/tests/Metadata/BlobContentIdTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Immutable; using Xunit; @@ -33,12 +34,12 @@ public void Ctor() [Fact] public void Ctor_Errors() { - Assert.Throws("id", () => new BlobContentId(null)); - Assert.Throws("id", () => new BlobContentId(default(ImmutableArray))); - Assert.Throws("id", () => new BlobContentId(ImmutableArray.Create())); - Assert.Throws("id", () => new BlobContentId(ImmutableArray.Create(0))); - Assert.Throws("id", () => new BlobContentId(ImmutableArray.Create(0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13))); - Assert.Throws("id", () => new BlobContentId(ImmutableArray.Create(0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15))); + AssertExtensions.Throws("id", () => new BlobContentId(null)); + AssertExtensions.Throws("id", () => new BlobContentId(default(ImmutableArray))); + AssertExtensions.Throws("id", () => new BlobContentId(ImmutableArray.Create())); + AssertExtensions.Throws("id", () => new BlobContentId(ImmutableArray.Create(0))); + AssertExtensions.Throws("id", () => new BlobContentId(ImmutableArray.Create(0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13))); + AssertExtensions.Throws("id", () => new BlobContentId(ImmutableArray.Create(0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15))); } [Fact] diff --git a/src/System.Reflection.Metadata/tests/Metadata/Decoding/SignatureDecoderTests.cs b/src/System.Reflection.Metadata/tests/Metadata/Decoding/SignatureDecoderTests.cs index 963738e0daf9..cecd35b13fad 100644 --- a/src/System.Reflection.Metadata/tests/Metadata/Decoding/SignatureDecoderTests.cs +++ b/src/System.Reflection.Metadata/tests/Metadata/Decoding/SignatureDecoderTests.cs @@ -394,7 +394,7 @@ public unsafe void ExoticTypeSignature(string expected, byte[] signature) [Fact] public void ProviderCannotBeNull() { - Assert.Throws("provider", () => new SignatureDecoder(provider: null, metadataReader: null, genericContext: null)); + AssertExtensions.Throws("provider", () => new SignatureDecoder(provider: null, metadataReader: null, genericContext: null)); } } } diff --git a/src/System.Reflection.Metadata/tests/Metadata/Ecma335/MetadataBuilderTests.cs b/src/System.Reflection.Metadata/tests/Metadata/Ecma335/MetadataBuilderTests.cs index e440a5a4bd17..c50c61ea7c9c 100644 --- a/src/System.Reflection.Metadata/tests/Metadata/Ecma335/MetadataBuilderTests.cs +++ b/src/System.Reflection.Metadata/tests/Metadata/Ecma335/MetadataBuilderTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Immutable; using System.Reflection.Metadata.Tests; using Xunit; @@ -281,13 +282,13 @@ public void Add_BadValues() public void GetOrAddErrors() { var mdBuilder = new MetadataBuilder(); - Assert.Throws("value", () => mdBuilder.GetOrAddBlob((BlobBuilder)null)); - Assert.Throws("value", () => mdBuilder.GetOrAddBlob((byte[])null)); - Assert.Throws("value", () => mdBuilder.GetOrAddBlob(default(ImmutableArray))); - Assert.Throws("value", () => mdBuilder.GetOrAddBlobUTF8(null)); - Assert.Throws("value", () => mdBuilder.GetOrAddBlobUTF16(null)); - Assert.Throws("value", () => mdBuilder.GetOrAddDocumentName(null)); - Assert.Throws("value", () => mdBuilder.GetOrAddString(null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddBlob((BlobBuilder)null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddBlob((byte[])null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddBlob(default(ImmutableArray))); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddBlobUTF8(null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddBlobUTF16(null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddDocumentName(null)); + AssertExtensions.Throws("value", () => mdBuilder.GetOrAddString(null)); } [Fact] diff --git a/src/System.Reflection.Metadata/tests/PortableExecutable/DebugDirectoryTests.cs b/src/System.Reflection.Metadata/tests/PortableExecutable/DebugDirectoryTests.cs index 2c8514d2012c..731755365c30 100644 --- a/src/System.Reflection.Metadata/tests/PortableExecutable/DebugDirectoryTests.cs +++ b/src/System.Reflection.Metadata/tests/PortableExecutable/DebugDirectoryTests.cs @@ -167,10 +167,10 @@ public void DebugDirectoryData_Errors() { var reader = new PEReader(new MemoryStream(Misc.Members)); - Assert.Throws("entry", () => reader.ReadCodeViewDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.Coff, 0, 0, 0))); + AssertExtensions.Throws("entry", () => reader.ReadCodeViewDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.Coff, 0, 0, 0))); Assert.Throws(() => reader.ReadCodeViewDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.CodeView, 0, 0, 0))); - Assert.Throws("entry", () => reader.ReadEmbeddedPortablePdbDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.Coff, 0, 0, 0))); + AssertExtensions.Throws("entry", () => reader.ReadEmbeddedPortablePdbDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.Coff, 0, 0, 0))); Assert.Throws(() => reader.ReadEmbeddedPortablePdbDebugDirectoryData(new DebugDirectoryEntry(0, 0, 0, DebugDirectoryEntryType.EmbeddedPortablePdb, 0, 0, 0))); } diff --git a/src/System.Reflection.Metadata/tests/PortableExecutable/PEReaderTests.cs b/src/System.Reflection.Metadata/tests/PortableExecutable/PEReaderTests.cs index 84ca369fab2c..f7587d7cb125 100644 --- a/src/System.Reflection.Metadata/tests/PortableExecutable/PEReaderTests.cs +++ b/src/System.Reflection.Metadata/tests/PortableExecutable/PEReaderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.IO; using System.Reflection.Metadata; using System.Reflection.Metadata.Ecma335; @@ -308,7 +309,7 @@ public void TryOpenAssociatedPortablePdb_Args() Assert.False(reader.TryOpenAssociatedPortablePdb(@"b.dll", _ => null, out pdbProvider, out pdbPath)); Assert.Throws(() => reader.TryOpenAssociatedPortablePdb(@"b.dll", null, out pdbProvider, out pdbPath)); Assert.Throws(() => reader.TryOpenAssociatedPortablePdb(null, _ => null, out pdbProvider, out pdbPath)); - Assert.Throws("peImagePath", () => reader.TryOpenAssociatedPortablePdb("C:\\a\\\0\\b", _ => null, out pdbProvider, out pdbPath)); + AssertExtensions.Throws("peImagePath", () => reader.TryOpenAssociatedPortablePdb("C:\\a\\\0\\b", _ => null, out pdbProvider, out pdbPath)); } } diff --git a/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj b/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj index 1e41fb283e21..71002554af79 100644 --- a/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj +++ b/src/System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj @@ -90,6 +90,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Runtime.Extensions/tests/System.Runtime.Extensions.Tests.csproj b/src/System.Runtime.Extensions/tests/System.Runtime.Extensions.Tests.csproj index 51903e12fe2e..1aa2a71a5edf 100644 --- a/src/System.Runtime.Extensions/tests/System.Runtime.Extensions.Tests.csproj +++ b/src/System.Runtime.Extensions/tests/System.Runtime.Extensions.Tests.csproj @@ -82,6 +82,9 @@ Common\Interop\Unix\Interop.Libraries.cs + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\RemoteExecutorTestBase.cs diff --git a/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs b/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs index c8109a2b7b87..eaef8eecf790 100644 --- a/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs +++ b/src/System.Runtime.Extensions/tests/System/AppDomainTests.cs @@ -214,7 +214,7 @@ public void ProcessExit_Called() [Fact] public void ApplyPolicy() { - Assert.Throws("assemblyName", () => { AppDomain.CurrentDomain.ApplyPolicy(null); }); + AssertExtensions.Throws("assemblyName", () => { AppDomain.CurrentDomain.ApplyPolicy(null); }); Assert.Throws(() => { AppDomain.CurrentDomain.ApplyPolicy(""); }); Assert.Equal(AppDomain.CurrentDomain.ApplyPolicy(Assembly.GetEntryAssembly().FullName), Assembly.GetEntryAssembly().FullName); } @@ -222,7 +222,7 @@ public void ApplyPolicy() [Fact] public void CreateDomain() { - Assert.Throws("friendlyName", () => { AppDomain.CreateDomain(null); }); + AssertExtensions.Throws("friendlyName", () => { AppDomain.CreateDomain(null); }); Assert.Throws(() => { AppDomain.CreateDomain("test"); }); } @@ -243,7 +243,7 @@ public void ExecuteAssemblyByName() public void ExecuteAssembly() { string name = Path.Combine(Environment.CurrentDirectory, "TestAppOutsideOfTPA", "TestAppOutsideOfTPA.exe"); - Assert.Throws("assemblyFile", () => AppDomain.CurrentDomain.ExecuteAssembly(null)); + AssertExtensions.Throws("assemblyFile", () => AppDomain.CurrentDomain.ExecuteAssembly(null)); Assert.Throws(() => AppDomain.CurrentDomain.ExecuteAssembly("NonExistentFile.exe")); Assert.Throws(() => AppDomain.CurrentDomain.ExecuteAssembly(name, new string[2] {"2", "3"}, null, Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); Assert.Equal(5, AppDomain.CurrentDomain.ExecuteAssembly(name)); @@ -253,7 +253,7 @@ public void ExecuteAssembly() [Fact] public void GetData_SetData() { - Assert.Throws("name", () => { AppDomain.CurrentDomain.SetData(null, null); }); + AssertExtensions.Throws("name", () => { AppDomain.CurrentDomain.SetData(null, null); }); AppDomain.CurrentDomain.SetData("", null); Assert.Null(AppDomain.CurrentDomain.GetData("")); AppDomain.CurrentDomain.SetData("randomkey", 4); @@ -291,7 +291,7 @@ public void toString() [Fact] public void Unload() { - Assert.Throws("domain", () => { AppDomain.Unload(null);}); + AssertExtensions.Throws("domain", () => { AppDomain.Unload(null);}); Assert.Throws(() => { AppDomain.Unload(AppDomain.CurrentDomain); }); } diff --git a/src/System.Runtime.Extensions/tests/System/BitConverter.cs b/src/System.Runtime.Extensions/tests/System/BitConverter.cs index d0ce5908aa6d..f98bb4aeca68 100644 --- a/src/System.Runtime.Extensions/tests/System/BitConverter.cs +++ b/src/System.Runtime.Extensions/tests/System/BitConverter.cs @@ -20,89 +20,89 @@ public static unsafe void IsLittleEndian() [Fact] public static void ValueArgumentNull() { - Assert.Throws("value", () => BitConverter.ToBoolean(null, 0)); - Assert.Throws("value", () => BitConverter.ToChar(null, 0)); - Assert.Throws("value", () => BitConverter.ToDouble(null, 0)); - Assert.Throws("value", () => BitConverter.ToInt16(null, 0)); - Assert.Throws("value", () => BitConverter.ToInt32(null, 0)); - Assert.Throws("value", () => BitConverter.ToInt64(null, 0)); - Assert.Throws("value", () => BitConverter.ToSingle(null, 0)); - Assert.Throws("value", () => BitConverter.ToUInt16(null, 0)); - Assert.Throws("value", () => BitConverter.ToUInt32(null, 0)); - Assert.Throws("value", () => BitConverter.ToUInt64(null, 0)); - Assert.Throws("value", () => BitConverter.ToString(null)); - Assert.Throws("value", () => BitConverter.ToString(null, 0)); - Assert.Throws("value", () => BitConverter.ToString(null, 0, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToBoolean(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToChar(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToDouble(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToInt16(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToInt32(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToInt64(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToSingle(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt16(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt32(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt64(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToString(null)); + AssertExtensions.Throws("value", () => BitConverter.ToString(null, 0)); + AssertExtensions.Throws("value", () => BitConverter.ToString(null, 0, 0)); } [Fact] public static void StartIndexBeyondLength() { - Assert.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], -1)); - Assert.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], 1)); - Assert.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], 1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToBoolean(new byte[1], 2)); - Assert.Throws("startIndex", () => BitConverter.ToChar(new byte[2], -1)); - Assert.Throws("startIndex", () => BitConverter.ToChar(new byte[2], 2)); - Assert.Throws("startIndex", () => BitConverter.ToChar(new byte[2], 3)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToChar(new byte[2], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToChar(new byte[2], 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToChar(new byte[2], 3)); - Assert.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], -1)); - Assert.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], 8)); - Assert.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], 9)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], 8)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToDouble(new byte[8], 9)); - Assert.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], -1)); - Assert.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], 2)); - Assert.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], 3)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt16(new byte[2], 3)); - Assert.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], -1)); - Assert.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], 4)); - Assert.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], 5)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], 4)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt32(new byte[4], 5)); - Assert.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], -1)); - Assert.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], 8)); - Assert.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], 9)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], 8)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToInt64(new byte[8], 9)); - Assert.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], -1)); - Assert.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], 4)); - Assert.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], 5)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], 4)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToSingle(new byte[4], 5)); - Assert.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], -1)); - Assert.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], 2)); - Assert.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], 3)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt16(new byte[2], 3)); - Assert.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], -1)); - Assert.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], 4)); - Assert.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], 5)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], 4)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt32(new byte[4], 5)); - Assert.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], -1)); - Assert.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], 8)); - Assert.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], 9)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], 8)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToUInt64(new byte[8], 9)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], -1)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], 1)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], -1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], 1)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], 2)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], -1, 0)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], 1, 0)); - Assert.Throws("startIndex", () => BitConverter.ToString(new byte[1], 2, 0)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], -1, 0)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], 1, 0)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToString(new byte[1], 2, 0)); - Assert.Throws("length", () => BitConverter.ToString(new byte[1], 0, -1)); + AssertExtensions.Throws("length", () => BitConverter.ToString(new byte[1], 0, -1)); } [Fact] public static void StartIndexPlusNeededLengthTooLong() { - Assert.Throws("startIndex", () => BitConverter.ToBoolean(new byte[0], 0)); - Assert.Throws("value", () => BitConverter.ToChar(new byte[2], 1)); - Assert.Throws("value", () => BitConverter.ToDouble(new byte[8], 1)); - Assert.Throws("value", () => BitConverter.ToInt16(new byte[2], 1)); - Assert.Throws("value", () => BitConverter.ToInt32(new byte[4], 1)); - Assert.Throws("value", () => BitConverter.ToInt64(new byte[8], 1)); - Assert.Throws("value", () => BitConverter.ToSingle(new byte[4], 1)); - Assert.Throws("value", () => BitConverter.ToUInt16(new byte[2], 1)); - Assert.Throws("value", () => BitConverter.ToUInt32(new byte[4], 1)); - Assert.Throws("value", () => BitConverter.ToUInt64(new byte[8], 1)); - Assert.Throws("value", () => BitConverter.ToString(new byte[2], 1, 2)); + AssertExtensions.Throws("startIndex", () => BitConverter.ToBoolean(new byte[0], 0)); + AssertExtensions.Throws("value", () => BitConverter.ToChar(new byte[2], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToDouble(new byte[8], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToInt16(new byte[2], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToInt32(new byte[4], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToInt64(new byte[8], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToSingle(new byte[4], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt16(new byte[2], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt32(new byte[4], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToUInt64(new byte[8], 1)); + AssertExtensions.Throws("value", () => BitConverter.ToString(new byte[2], 1, 2)); } [Fact] @@ -240,7 +240,7 @@ public static void ToString_ByteArrayTooLong_Throws() return; } - Assert.Throws("length", () => BitConverter.ToString(arr)); + AssertExtensions.Throws("length", () => BitConverter.ToString(arr)); } private static void VerifyRoundtrip(Func getBytes, Func convertBack, TInput input, Byte[] expectedBytes) diff --git a/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs b/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs index 8bb8f2d382d2..b0e0846d744f 100644 --- a/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs +++ b/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs @@ -16,20 +16,20 @@ public partial class GetEnvironmentVariable [Fact] public void InvalidArguments_ThrowsExceptions() { - Assert.Throws("variable", () => Environment.GetEnvironmentVariable(null)); - Assert.Throws("variable", () => Environment.SetEnvironmentVariable(null, "test")); - Assert.Throws("variable", () => Environment.SetEnvironmentVariable("", "test")); - Assert.Throws("value", () => Environment.SetEnvironmentVariable("test", new string('s', 65 * 1024))); - - Assert.Throws("variable", () => Environment.SetEnvironmentVariable("", "test", EnvironmentVariableTarget.Machine)); - Assert.Throws("variable", () => Environment.SetEnvironmentVariable(null, "test", EnvironmentVariableTarget.User)); - Assert.Throws("variable", () => Environment.GetEnvironmentVariable(null, EnvironmentVariableTarget.Process)); - Assert.Throws("target", () => Environment.GetEnvironmentVariable("test", (EnvironmentVariableTarget)42)); - Assert.Throws("target", () => Environment.SetEnvironmentVariable("test", "test", (EnvironmentVariableTarget)(-1))); - Assert.Throws("target", () => Environment.GetEnvironmentVariables((EnvironmentVariableTarget)(3))); + AssertExtensions.Throws("variable", () => Environment.GetEnvironmentVariable(null)); + AssertExtensions.Throws("variable", () => Environment.SetEnvironmentVariable(null, "test")); + AssertExtensions.Throws("variable", () => Environment.SetEnvironmentVariable("", "test")); + AssertExtensions.Throws("value", () => Environment.SetEnvironmentVariable("test", new string('s', 65 * 1024))); + + AssertExtensions.Throws("variable", () => Environment.SetEnvironmentVariable("", "test", EnvironmentVariableTarget.Machine)); + AssertExtensions.Throws("variable", () => Environment.SetEnvironmentVariable(null, "test", EnvironmentVariableTarget.User)); + AssertExtensions.Throws("variable", () => Environment.GetEnvironmentVariable(null, EnvironmentVariableTarget.Process)); + AssertExtensions.Throws("target", () => Environment.GetEnvironmentVariable("test", (EnvironmentVariableTarget)42)); + AssertExtensions.Throws("target", () => Environment.SetEnvironmentVariable("test", "test", (EnvironmentVariableTarget)(-1))); + AssertExtensions.Throws("target", () => Environment.GetEnvironmentVariables((EnvironmentVariableTarget)(3))); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - Assert.Throws("variable", () => Environment.SetEnvironmentVariable(new string('s', 256), "value", EnvironmentVariableTarget.User)); + AssertExtensions.Throws("variable", () => Environment.SetEnvironmentVariable(new string('s', 256), "value", EnvironmentVariableTarget.User)); } } diff --git a/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs b/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs index 799c2453ef6d..0ee62fc70523 100644 --- a/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs +++ b/src/System.Runtime.Extensions/tests/System/EnvironmentTests.cs @@ -20,13 +20,13 @@ public class EnvironmentTests : RemoteExecutorTestBase [Fact] public void CurrentDirectory_Null_Path_Throws_ArgumentNullException() { - Assert.Throws("value", () => Environment.CurrentDirectory = null); + AssertExtensions.Throws("value", () => Environment.CurrentDirectory = null); } [Fact] public void CurrentDirectory_Empty_Path_Throws_ArgumentException() { - Assert.Throws("value", () => Environment.CurrentDirectory = string.Empty); + AssertExtensions.Throws("value", () => Environment.CurrentDirectory = string.Empty); } [Fact] diff --git a/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs b/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs index 8240629910eb..2f3683feb60c 100644 --- a/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs +++ b/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs @@ -705,7 +705,7 @@ public static void GetFullPath_Windows_83Paths() [InlineData('?')] public static void GetFullPath_Windows_Wildcards(char wildcard) { - Assert.Throws("path", () => Path.GetFullPath("test" + wildcard + "ing")); + AssertExtensions.Throws("path", () => Path.GetFullPath("test" + wildcard + "ing")); } // Windows-only P/Invoke to create 8.3 short names from long names diff --git a/src/System.Runtime.Extensions/tests/System/Net/WebUtility.cs b/src/System.Runtime.Extensions/tests/System/Net/WebUtility.cs index e283ff03dc33..ba821255cc1f 100644 --- a/src/System.Runtime.Extensions/tests/System/Net/WebUtility.cs +++ b/src/System.Runtime.Extensions/tests/System/Net/WebUtility.cs @@ -299,7 +299,7 @@ public static void UrlDecodeToBytes(byte[] value, int offset, int count, byte[] [Fact] public static void UrlDecodeToBytes_NullBytes_ThrowsArgumentNullException() { - Assert.Throws("bytes", () => WebUtility.UrlDecodeToBytes(null, 0, 1)); + AssertExtensions.Throws("bytes", () => WebUtility.UrlDecodeToBytes(null, 0, 1)); } [Theory] @@ -307,7 +307,7 @@ public static void UrlDecodeToBytes_NullBytes_ThrowsArgumentNullException() [InlineData(2)] public static void UrlDecodeToBytes_InvalidOffset_ThrowsArgumentOutOfRangeException(int offset) { - Assert.Throws("offset", () => WebUtility.UrlDecodeToBytes(new byte[1], offset, 1)); + AssertExtensions.Throws("offset", () => WebUtility.UrlDecodeToBytes(new byte[1], offset, 1)); } [Theory] @@ -317,7 +317,7 @@ public static void UrlDecodeToBytes_InvalidOffset_ThrowsArgumentOutOfRangeExcept [InlineData(3, 2, 2)] public static void UrlDecodeToBytes_InvalidCount_ThrowsArgumentOutOfRangeException(int byteCount, int offset, int count) { - Assert.Throws("count", () => WebUtility.UrlDecodeToBytes(new byte[byteCount], offset, count)); + AssertExtensions.Throws("count", () => WebUtility.UrlDecodeToBytes(new byte[byteCount], offset, count)); } public static IEnumerable UrlEncodeToBytes_TestData() @@ -362,7 +362,7 @@ public static void UrlEncodeToBytes(byte[] value, int offset, int count, byte[] [Fact] public static void UrlEncodeToBytes_NullBytes_ThrowsArgumentNullException() { - Assert.Throws("bytes", () => WebUtility.UrlEncodeToBytes(null, 0, 1)); + AssertExtensions.Throws("bytes", () => WebUtility.UrlEncodeToBytes(null, 0, 1)); } [Theory] @@ -370,7 +370,7 @@ public static void UrlEncodeToBytes_NullBytes_ThrowsArgumentNullException() [InlineData(2)] public static void UrlEncodeToBytes_InvalidOffset_ThrowsArgumentOutOfRangeException(int offset) { - Assert.Throws("offset", () => WebUtility.UrlEncodeToBytes(new byte[1], offset, 0)); + AssertExtensions.Throws("offset", () => WebUtility.UrlEncodeToBytes(new byte[1], offset, 0)); } [Theory] @@ -380,7 +380,7 @@ public static void UrlEncodeToBytes_InvalidOffset_ThrowsArgumentOutOfRangeExcept [InlineData(3, 2, 2)] public static void UrlEncodeToBytes_InvalidCount_ThrowsArgumentOutOfRangeExceptioh(int byteCount, int offset, int count) { - Assert.Throws("count", () => WebUtility.UrlEncodeToBytes(new byte[byteCount], offset, count)); + AssertExtensions.Throws("count", () => WebUtility.UrlEncodeToBytes(new byte[byteCount], offset, count)); } [Theory] diff --git a/src/System.Runtime.Extensions/tests/System/OperatingSystemTests.cs b/src/System.Runtime.Extensions/tests/System/OperatingSystemTests.cs index 96e1a115750e..2d50ac57eba9 100644 --- a/src/System.Runtime.Extensions/tests/System/OperatingSystemTests.cs +++ b/src/System.Runtime.Extensions/tests/System/OperatingSystemTests.cs @@ -34,9 +34,9 @@ public static void Ctor(PlatformID id, string versionString) [Fact] public static void Ctor_InvalidArgs_Throws() { - Assert.Throws("platform", () => new OperatingSystem((PlatformID)(-1), new Version(1, 2))); - Assert.Throws("platform", () => new OperatingSystem((PlatformID)42, new Version(1, 2))); - Assert.Throws("version", () => new OperatingSystem(PlatformID.Unix, null)); + AssertExtensions.Throws("platform", () => new OperatingSystem((PlatformID)(-1), new Version(1, 2))); + AssertExtensions.Throws("platform", () => new OperatingSystem((PlatformID)42, new Version(1, 2))); + AssertExtensions.Throws("version", () => new OperatingSystem(PlatformID.Unix, null)); } [Fact] @@ -65,7 +65,7 @@ public static void SerializeDeserialize() public static void GetObjectData_InvalidArgs_Throws() { var os = new OperatingSystem(PlatformID.Win32NT, new Version(10, 0)); - Assert.Throws("info", () => os.GetObjectData(null, new StreamingContext())); + AssertExtensions.Throws("info", () => os.GetObjectData(null, new StreamingContext())); } } } diff --git a/src/System.Runtime.Extensions/tests/System/Reflection/AssemblyNameProxyTests.cs b/src/System.Runtime.Extensions/tests/System/Reflection/AssemblyNameProxyTests.cs index 72c313ce0f1b..9d904c49094e 100644 --- a/src/System.Runtime.Extensions/tests/System/Reflection/AssemblyNameProxyTests.cs +++ b/src/System.Runtime.Extensions/tests/System/Reflection/AssemblyNameProxyTests.cs @@ -17,7 +17,7 @@ public static class AssemblyNameProxyTests public static void GetAssemblyName_AssemblyNameProxy() { AssemblyNameProxy anp = new AssemblyNameProxy(); - Assert.Throws("assemblyFile", () => anp.GetAssemblyName(null)); + AssertExtensions.Throws("assemblyFile", () => anp.GetAssemblyName(null)); Assert.Throws(() => anp.GetAssemblyName(string.Empty)); Assert.Throws(() => anp.GetAssemblyName(Guid.NewGuid().ToString("N"))); diff --git a/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs b/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs index d7f6cd6d1aa7..0b4033888a31 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs +++ b/src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.Tracing; @@ -586,8 +587,8 @@ public void Properties_Roundtrip() public void SerializeDeserialize_InvalidArguments_ThrowsException() { var f = new BinaryFormatter(); - Assert.Throws("serializationStream", () => f.Serialize(null, new object())); - Assert.Throws("serializationStream", () => f.Deserialize(null)); + AssertExtensions.Throws("serializationStream", () => f.Serialize(null, new object())); + AssertExtensions.Throws("serializationStream", () => f.Deserialize(null)); Assert.Throws(() => f.Deserialize(new MemoryStream())); // seekable, 0-length } diff --git a/src/System.Runtime.Serialization.Formatters/tests/FormatterConverterTests.cs b/src/System.Runtime.Serialization.Formatters/tests/FormatterConverterTests.cs index 053cf95cfab5..25c65788f07a 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/FormatterConverterTests.cs +++ b/src/System.Runtime.Serialization.Formatters/tests/FormatterConverterTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Globalization; using Xunit; @@ -13,23 +14,23 @@ public class FormatterConverterTests public void InvalidArguments_ThrowExceptions() { var f = new FormatterConverter(); - Assert.Throws("value", () => f.Convert(null, typeof(int))); - Assert.Throws("value", () => f.Convert(null, TypeCode.Char)); - Assert.Throws("value", () => f.ToBoolean(null)); - Assert.Throws("value", () => f.ToByte(null)); - Assert.Throws("value", () => f.ToChar(null)); - Assert.Throws("value", () => f.ToDateTime(null)); - Assert.Throws("value", () => f.ToDecimal(null)); - Assert.Throws("value", () => f.ToDouble(null)); - Assert.Throws("value", () => f.ToInt16(null)); - Assert.Throws("value", () => f.ToInt32(null)); - Assert.Throws("value", () => f.ToInt64(null)); - Assert.Throws("value", () => f.ToSByte(null)); - Assert.Throws("value", () => f.ToSingle(null)); - Assert.Throws("value", () => f.ToString(null)); - Assert.Throws("value", () => f.ToUInt16(null)); - Assert.Throws("value", () => f.ToUInt32(null)); - Assert.Throws("value", () => f.ToUInt64(null)); + AssertExtensions.Throws("value", () => f.Convert(null, typeof(int))); + AssertExtensions.Throws("value", () => f.Convert(null, TypeCode.Char)); + AssertExtensions.Throws("value", () => f.ToBoolean(null)); + AssertExtensions.Throws("value", () => f.ToByte(null)); + AssertExtensions.Throws("value", () => f.ToChar(null)); + AssertExtensions.Throws("value", () => f.ToDateTime(null)); + AssertExtensions.Throws("value", () => f.ToDecimal(null)); + AssertExtensions.Throws("value", () => f.ToDouble(null)); + AssertExtensions.Throws("value", () => f.ToInt16(null)); + AssertExtensions.Throws("value", () => f.ToInt32(null)); + AssertExtensions.Throws("value", () => f.ToInt64(null)); + AssertExtensions.Throws("value", () => f.ToSByte(null)); + AssertExtensions.Throws("value", () => f.ToSingle(null)); + AssertExtensions.Throws("value", () => f.ToString(null)); + AssertExtensions.Throws("value", () => f.ToUInt16(null)); + AssertExtensions.Throws("value", () => f.ToUInt32(null)); + AssertExtensions.Throws("value", () => f.ToUInt64(null)); } [Fact] diff --git a/src/System.Runtime.Serialization.Formatters/tests/FormatterServicesTests.cs b/src/System.Runtime.Serialization.Formatters/tests/FormatterServicesTests.cs index 8accc05ed3e5..b22aa2762d5e 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/FormatterServicesTests.cs +++ b/src/System.Runtime.Serialization.Formatters/tests/FormatterServicesTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices; @@ -21,7 +22,7 @@ public void CheckTypeSecurity_Nop() [Fact] public void GetSerializableMembers_InvalidArguments_ThrowsException() { - Assert.Throws("type", () => FormatterServices.GetSerializableMembers(null)); + AssertExtensions.Throws("type", () => FormatterServices.GetSerializableMembers(null)); } [Fact] @@ -33,8 +34,8 @@ public void GetSerializableMembers_Interface() [Fact] public void GetUninitializedObject_NullType_ThrowsArgumentNullException() { - Assert.Throws("type", () => FormatterServices.GetUninitializedObject(null)); - Assert.Throws("type", () => FormatterServices.GetSafeUninitializedObject(null)); + AssertExtensions.Throws("type", () => FormatterServices.GetUninitializedObject(null)); + AssertExtensions.Throws("type", () => FormatterServices.GetSafeUninitializedObject(null)); } [Fact] @@ -275,27 +276,27 @@ private class ObjectWithStructDefaultField [Fact] public void PopulateObjectMembers_InvalidArguments_ThrowsException() { - Assert.Throws("obj", () => FormatterServices.PopulateObjectMembers(null, new MemberInfo[0], new object[0])); - Assert.Throws("members", () => FormatterServices.PopulateObjectMembers(new object(), null, new object[0])); - Assert.Throws("data", () => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[0], null)); + AssertExtensions.Throws("obj", () => FormatterServices.PopulateObjectMembers(null, new MemberInfo[0], new object[0])); + AssertExtensions.Throws("members", () => FormatterServices.PopulateObjectMembers(new object(), null, new object[0])); + AssertExtensions.Throws("data", () => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[0], null)); Assert.Throws(() => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[1], new object[2])); - Assert.Throws("members", () => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[1], new object[1])); + AssertExtensions.Throws("members", () => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[1], new object[1])); Assert.Throws(() => FormatterServices.PopulateObjectMembers(new object(), new MemberInfo[] { typeof(object).GetMethod("GetHashCode") }, new object[] { new object() })); } [Fact] public void GetObjectData_InvalidArguments_ThrowsException() { - Assert.Throws("obj", () => FormatterServices.GetObjectData(null, new MemberInfo[0])); - Assert.Throws("members", () => FormatterServices.GetObjectData(new object(), null)); - Assert.Throws("members", () => FormatterServices.GetObjectData(new object(), new MemberInfo[1])); + AssertExtensions.Throws("obj", () => FormatterServices.GetObjectData(null, new MemberInfo[0])); + AssertExtensions.Throws("members", () => FormatterServices.GetObjectData(new object(), null)); + AssertExtensions.Throws("members", () => FormatterServices.GetObjectData(new object(), new MemberInfo[1])); Assert.Throws(() => FormatterServices.GetObjectData(new object(), new MethodInfo[] { typeof(object).GetMethod("GetHashCode") })); } [Fact] public void GetSurrogateForCyclicalReference_InvalidArguments_ThrowsException() { - Assert.Throws("innerSurrogate", () => FormatterServices.GetSurrogateForCyclicalReference(null)); + AssertExtensions.Throws("innerSurrogate", () => FormatterServices.GetSurrogateForCyclicalReference(null)); } [Fact] @@ -310,7 +311,7 @@ public void GetSurrogateForCyclicalReference_ValidSurrogate_GetsObject() [Fact] public void GetTypeFromAssembly_InvalidArguments_ThrowsException() { - Assert.Throws("assem", () => FormatterServices.GetTypeFromAssembly(null, "name")); + AssertExtensions.Throws("assem", () => FormatterServices.GetTypeFromAssembly(null, "name")); Assert.Null(FormatterServices.GetTypeFromAssembly(GetType().Assembly, Guid.NewGuid().ToString("N"))); // non-existing type doesn't throw } } diff --git a/src/System.Runtime.Serialization.Formatters/tests/FormatterTests.cs b/src/System.Runtime.Serialization.Formatters/tests/FormatterTests.cs index 41acf660d1be..065b643034e1 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/FormatterTests.cs +++ b/src/System.Runtime.Serialization.Formatters/tests/FormatterTests.cs @@ -21,8 +21,8 @@ public void DefaultCtor_ObjectsInitialized() Assert.Equal(0, f.m_objectQueue.Count); bool firstTime; - Assert.Throws("obj", () => f.m_idGenerator.GetId(null, out firstTime)); - Assert.Throws("obj", () => f.m_idGenerator.HasId(null, out firstTime)); + AssertExtensions.Throws("obj", () => f.m_idGenerator.GetId(null, out firstTime)); + AssertExtensions.Throws("obj", () => f.m_idGenerator.HasId(null, out firstTime)); } [Fact] diff --git a/src/System.Runtime.Serialization.Formatters/tests/SurrogateSelectorTests.cs b/src/System.Runtime.Serialization.Formatters/tests/SurrogateSelectorTests.cs index 1f3c1a07e993..f2a72440e8eb 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/SurrogateSelectorTests.cs +++ b/src/System.Runtime.Serialization.Formatters/tests/SurrogateSelectorTests.cs @@ -12,24 +12,24 @@ public class SurrogateSelectorTests public void AddSurrogate_InvalidArguments_ThrowExceptions() { var s = new SurrogateSelector(); - Assert.Throws("type", () => s.AddSurrogate(null, new StreamingContext(), new NonSerializablePairSurrogate())); - Assert.Throws("surrogate", () => s.AddSurrogate(typeof(NonSerializablePair), new StreamingContext(), null)); + AssertExtensions.Throws("type", () => s.AddSurrogate(null, new StreamingContext(), new NonSerializablePairSurrogate())); + AssertExtensions.Throws("surrogate", () => s.AddSurrogate(typeof(NonSerializablePair), new StreamingContext(), null)); } [Fact] public void ChainSelector_InvalidArguments_ThrowExceptions() { var s1 = new SurrogateSelector(); - Assert.Throws("selector", () => s1.ChainSelector(null)); + AssertExtensions.Throws("selector", () => s1.ChainSelector(null)); Assert.Throws(() => s1.ChainSelector(s1)); var s2 = new SurrogateSelector(); s2.ChainSelector(s1); - Assert.Throws("selector", () => s1.ChainSelector(s2)); + AssertExtensions.Throws("selector", () => s1.ChainSelector(s2)); var s3 = new SurrogateSelector(); s3.ChainSelector(s2); - Assert.Throws("selector", () => s1.ChainSelector(s3)); + AssertExtensions.Throws("selector", () => s1.ChainSelector(s3)); } [Fact] @@ -48,7 +48,7 @@ public void GetSurrogate_InvalidArguments_ThrowExceptions() var s = new SurrogateSelector(); var c = new StreamingContext(); ISurrogateSelector selector; - Assert.Throws("type", () => s.GetSurrogate(null, c, out selector)); + AssertExtensions.Throws("type", () => s.GetSurrogate(null, c, out selector)); } [Fact] @@ -88,7 +88,7 @@ public void RemoveSurrogate_InvalidArguments_ThrowExceptions() { var s = new SurrogateSelector(); var c = new StreamingContext(); - Assert.Throws("type", () => s.RemoveSurrogate(null, c)); + AssertExtensions.Throws("type", () => s.RemoveSurrogate(null, c)); s.RemoveSurrogate(typeof(string), c); // no exception even if removal fails } } diff --git a/src/System.Runtime.Serialization.Formatters/tests/System.Runtime.Serialization.Formatters.Tests.csproj b/src/System.Runtime.Serialization.Formatters/tests/System.Runtime.Serialization.Formatters.Tests.csproj index f129fdfa8868..cfb92f904f4e 100644 --- a/src/System.Runtime.Serialization.Formatters/tests/System.Runtime.Serialization.Formatters.Tests.csproj +++ b/src/System.Runtime.Serialization.Formatters/tests/System.Runtime.Serialization.Formatters.Tests.csproj @@ -20,6 +20,9 @@ + + Common\System\AssertExtensions.cs + Common\System\NonRuntimeType.cs diff --git a/src/System.Runtime/tests/ArrayTests.cs b/src/System.Runtime/tests/ArrayTests.cs index 938408e00e39..0157ffaf82dd 100644 --- a/src/System.Runtime/tests/ArrayTests.cs +++ b/src/System.Runtime/tests/ArrayTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -52,8 +52,8 @@ public static void ForEach() [Fact] public static void ForEach_Invalid() { - Assert.Throws("array", () => { Array.ForEach(null, new Action(i => i++)); }); // Array is null - Assert.Throws("action", () => { Array.ForEach(new string[] { }, null); }); // Action is null + AssertExtensions.Throws("array", () => { Array.ForEach(null, new Action(i => i++)); }); // Array is null + AssertExtensions.Throws("action", () => { Array.ForEach(new string[] { }, null); }); // Action is null Assert.Throws(() => { Array.ForEach(new string[] { "a" }, i => { throw new InvalidOperationException(); }); // Action throws }); @@ -134,25 +134,25 @@ public static void CreateInstance_Type_Int_Int() [Fact] public static void CreateInstance_Type_Int_Invalid() { - Assert.Throws("elementType", () => Array.CreateInstance(null, 0)); // Element type is null + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0)); // Element type is null Assert.Throws(() => Array.CreateInstance(typeof(void), 0)); // Element type is not supported (void) Assert.Throws(() => Array.CreateInstance(typeof(List<>), 0)); // Element type is not supported (generic) Assert.Throws(() => Array.CreateInstance(typeof(int).MakeByRefType(), 0)); // Element type is not supported (ref) - Assert.Throws("length", () => Array.CreateInstance(typeof(int), -1)); // Length < 0 + AssertExtensions.Throws("length", () => Array.CreateInstance(typeof(int), -1)); // Length < 0 } [Fact] public static void CreateInstance_Type_Int_Int_Invalid() { - Assert.Throws("elementType", () => Array.CreateInstance(null, 0, 1)); // Element type is null + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0, 1)); // Element type is null Assert.Throws(() => Array.CreateInstance(typeof(void), 0, 1)); // Element type is not supported (void) Assert.Throws(() => Array.CreateInstance(typeof(List<>), 0, 1)); // Element type is not supported (generic) Assert.Throws(() => Array.CreateInstance(typeof(int).MakeByRefType(), 0, 1)); // Element type is not supported (ref) - Assert.Throws("length2", () => Array.CreateInstance(typeof(int), 0, -1)); // Length < 0 + AssertExtensions.Throws("length2", () => Array.CreateInstance(typeof(int), 0, -1)); // Length < 0 } [Fact] @@ -167,13 +167,13 @@ public static void CreateInstance_Type_Int_Int_Int() [Fact] public static void CreateInstance_Type_Int_Int_Int_Invalid() { - Assert.Throws("elementType", () => Array.CreateInstance(null, 0, 1, 2)); // Element type is null + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0, 1, 2)); // Element type is null Assert.Throws(() => Array.CreateInstance(typeof(void), 0, 1, 2)); // Element type is not supported (void) Assert.Throws(() => Array.CreateInstance(typeof(List<>), 0, 1, 2)); // Element type is not supported (generic) Assert.Throws(() => Array.CreateInstance(typeof(int).MakeByRefType(), 0, 1, 2)); // Element type is not supported (ref) - Assert.Throws("length3", () => Array.CreateInstance(typeof(int), 0, 1, -1)); // Length < 0 + AssertExtensions.Throws("length3", () => Array.CreateInstance(typeof(int), 0, 1, -1)); // Length < 0 } [Fact] @@ -237,8 +237,8 @@ public static void ConvertAll() [Fact] public static void ConvertAll_Invalid() { - Assert.Throws("array", () => { Array.ConvertAll(null, i => i); }); // Array is null - Assert.Throws("converter", () => { Array.ConvertAll(new string[] { }, null); }); // Converter is null + AssertExtensions.Throws("array", () => { Array.ConvertAll(null, i => i); }); // Array is null + AssertExtensions.Throws("converter", () => { Array.ConvertAll(new string[] { }, null); }); // Converter is null Assert.Throws(() => { Array.ConvertAll(new string[] { "x" }, i => { throw new InvalidOperationException(); }); // Converter throws }); @@ -377,4 +377,4 @@ private class D2 : B2 { } private interface I1 { } private interface I2 { } } -} \ No newline at end of file +} diff --git a/src/System.Runtime/tests/ArrayTests.netcoreapp.cs b/src/System.Runtime/tests/ArrayTests.netcoreapp.cs index c0c0183b785e..76b0164d19d1 100644 --- a/src/System.Runtime/tests/ArrayTests.netcoreapp.cs +++ b/src/System.Runtime/tests/ArrayTests.netcoreapp.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -16,21 +16,21 @@ public static class ArrayNetcoreappTests public static void CreateInstance_Type_Int_Invalid() { // Type is not a valid RuntimeType - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0)); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0)); } [Fact] public static void CreateInstance_Type_Int_Int_Invalid() { // Type is not a valid RuntimeType - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0, 1)); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0, 1)); } [Fact] public static void CreateInstance_Type_Int_Int_Int_Invalid() { // Type is not a valid RuntimeType - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0, 1, 2)); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0, 1, 2)); } } -} \ No newline at end of file +} diff --git a/src/System.Runtime/tests/System/ActivatorTests.cs b/src/System.Runtime/tests/System/ActivatorTests.cs index 420e083057bd..d1bbaefed4ad 100644 --- a/src/System.Runtime/tests/System/ActivatorTests.cs +++ b/src/System.Runtime/tests/System/ActivatorTests.cs @@ -67,8 +67,8 @@ public static void CreateInstance_ConstructorWithParamsParameter() public static void CreateInstance_Invalid() { Type nullType = null; - Assert.Throws("type", () => Activator.CreateInstance(nullType)); // Type is null - Assert.Throws("type", () => Activator.CreateInstance(null, new object[0])); // Type is null + AssertExtensions.Throws("type", () => Activator.CreateInstance(nullType)); // Type is null + AssertExtensions.Throws("type", () => Activator.CreateInstance(null, new object[0])); // Type is null Assert.Throws(() => Activator.CreateInstance(typeof(Choice1), new object[] { null })); @@ -94,7 +94,7 @@ public static void CreateInstance_Invalid() #if netcoreapp // Type is not a valid RuntimeType - Assert.Throws("type", () => Activator.CreateInstance(Helpers.NonRuntimeType())); + AssertExtensions.Throws("type", () => Activator.CreateInstance(Helpers.NonRuntimeType())); #endif // netcoreapp } diff --git a/src/System.Runtime/tests/System/ActivatorTests.netcoreapp.cs b/src/System.Runtime/tests/System/ActivatorTests.netcoreapp.cs index b369d5141874..323ad967eec6 100644 --- a/src/System.Runtime/tests/System/ActivatorTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/ActivatorTests.netcoreapp.cs @@ -13,7 +13,7 @@ public static class ActivatorNetcoreTests public static void CreateInstance_Invalid() { // Type is not a valid RuntimeType - Assert.Throws("type", () => Activator.CreateInstance(Helpers.NonRuntimeType())); + AssertExtensions.Throws("type", () => Activator.CreateInstance(Helpers.NonRuntimeType())); } } } diff --git a/src/System.Runtime/tests/System/AppContext/AppContext.Switch.Validation.cs b/src/System.Runtime/tests/System/AppContext/AppContext.Switch.Validation.cs index ff2b23458100..b207bc688699 100644 --- a/src/System.Runtime/tests/System/AppContext/AppContext.Switch.Validation.cs +++ b/src/System.Runtime/tests/System/AppContext/AppContext.Switch.Validation.cs @@ -12,19 +12,19 @@ public partial class AppContextTests [Fact] public void NullSwitchName_EnableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(null, true)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(null, true)); } [Fact] public void NullSwitchName_DisableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(null, false)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(null, false)); } [Fact] public void NullSwitchName_TryGetSwitchValue() { - Assert.Throws("switchName", () => + AssertExtensions.Throws("switchName", () => { bool output; AppContext.TryGetSwitch(null, out output); @@ -34,20 +34,20 @@ public void NullSwitchName_TryGetSwitchValue() [Fact] public void EmptySwitchName_EnableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(string.Empty, true)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(string.Empty, true)); } [Fact] public void EmptySwitchName_DisableSwitch() { - Assert.Throws("switchName", () => AppContext.SetSwitch(string.Empty, false)); + AssertExtensions.Throws("switchName", () => AppContext.SetSwitch(string.Empty, false)); } [Fact] public void EmptySwitchName_TryGetSwitchValue() { bool output; - Assert.Throws("switchName", () => AppContext.TryGetSwitch(string.Empty, out output)); + AssertExtensions.Throws("switchName", () => AppContext.TryGetSwitch(string.Empty, out output)); } } } diff --git a/src/System.Runtime/tests/System/ArraySegmentTests.cs b/src/System.Runtime/tests/System/ArraySegmentTests.cs index 3b367635f5ba..0ca827fb994b 100644 --- a/src/System.Runtime/tests/System/ArraySegmentTests.cs +++ b/src/System.Runtime/tests/System/ArraySegmentTests.cs @@ -81,10 +81,10 @@ public void Ctor_Empty() [Fact] public static void Ctor_Invalid() { - Assert.Throws("array", () => new ArraySegment(null)); - Assert.Throws("array", () => new ArraySegment(null, -1, 1)); - Assert.Throws("offset", () => new ArraySegment(new T[10], -1, 0)); // Offset < 0 - Assert.Throws("count", () => new ArraySegment(new T[10], 0, -1)); // Count < 0 + AssertExtensions.Throws("array", () => new ArraySegment(null)); + AssertExtensions.Throws("array", () => new ArraySegment(null, -1, 1)); + AssertExtensions.Throws("offset", () => new ArraySegment(new T[10], -1, 0)); // Offset < 0 + AssertExtensions.Throws("count", () => new ArraySegment(new T[10], 0, -1)); // Count < 0 Assert.Throws(null, () => new ArraySegment(new T[10], 10, 1)); // Offset + count > array.Length Assert.Throws(null, () => new ArraySegment(new T[10], 9, 2)); // Offset + count > array.Length } @@ -176,11 +176,11 @@ public static void IList_GetSetItem_Invalid() var intArray = new int[] { 7, 8, 9, 10, 11, 12, 13 }; iList = new ArraySegment(intArray, 2, 3); - Assert.Throws("index", () => iList[-1]); // Index < 0 - Assert.Throws("index", () => iList[iList.Count]); // Index >= list.Count + AssertExtensions.Throws("index", () => iList[-1]); // Index < 0 + AssertExtensions.Throws("index", () => iList[iList.Count]); // Index >= list.Count - Assert.Throws("index", () => iList[-1] = 0); // Index < 0 - Assert.Throws("index", () => iList[iList.Count] = 0); // Index >= list.Count + AssertExtensions.Throws("index", () => iList[-1] = 0); // Index < 0 + AssertExtensions.Throws("index", () => iList[iList.Count] = 0); // Index >= list.Count } [Fact] @@ -203,8 +203,8 @@ public static void IReadOnlyList_GetItem_Invalid() var intArray = new int[] { 7, 8, 9, 10, 11, 12, 13 }; iList = new ArraySegment(intArray, 2, 3); - Assert.Throws("index", () => iList[-1]); // Index < 0 - Assert.Throws("index", () => iList[iList.Count]); // List >= seg.Count + AssertExtensions.Throws("index", () => iList[-1]); // Index < 0 + AssertExtensions.Throws("index", () => iList[iList.Count]); // List >= seg.Count } [Fact] diff --git a/src/System.Runtime/tests/System/ArrayTests.cs b/src/System.Runtime/tests/System/ArrayTests.cs index b23b2f8f6ae6..8526d79cc8dc 100644 --- a/src/System.Runtime/tests/System/ArrayTests.cs +++ b/src/System.Runtime/tests/System/ArrayTests.cs @@ -391,14 +391,14 @@ public static void BinarySearch_SZArray_NonInferrableEntries() [Fact] public static void BinarySearch_NullArray_ThrowsArgumentNullException() { - Assert.Throws("array", () => Array.BinarySearch((int[])null, "")); - Assert.Throws("array", () => Array.BinarySearch(null, "")); - Assert.Throws("array", () => Array.BinarySearch((int[])null, "", null)); - Assert.Throws("array", () => Array.BinarySearch(null, "", null)); - Assert.Throws("array", () => Array.BinarySearch((int[])null, 0, 0, "")); - Assert.Throws("array", () => Array.BinarySearch(null, 0, 0, "")); - Assert.Throws("array", () => Array.BinarySearch((int[])null, 0, 0, "", null)); - Assert.Throws("array", () => Array.BinarySearch(null, 0, 0, "", null)); + AssertExtensions.Throws("array", () => Array.BinarySearch((int[])null, "")); + AssertExtensions.Throws("array", () => Array.BinarySearch(null, "")); + AssertExtensions.Throws("array", () => Array.BinarySearch((int[])null, "", null)); + AssertExtensions.Throws("array", () => Array.BinarySearch(null, "", null)); + AssertExtensions.Throws("array", () => Array.BinarySearch((int[])null, 0, 0, "")); + AssertExtensions.Throws("array", () => Array.BinarySearch(null, 0, 0, "")); + AssertExtensions.Throws("array", () => Array.BinarySearch((int[])null, 0, 0, "", null)); + AssertExtensions.Throws("array", () => Array.BinarySearch(null, 0, 0, "", null)); } [Fact] @@ -447,19 +447,19 @@ public static void BinarySearch_TypesNotIComparable_ThrowsInvalidOperationExcept [Fact] public static void BinarySearch_IndexLessThanZero_ThrowsArgumentOutOfRangeException() { - Assert.Throws("index", () => Array.BinarySearch(new int[3], -1, 0, "")); - Assert.Throws("index", () => Array.BinarySearch(new string[3], -1, 0, "")); - Assert.Throws("index", () => Array.BinarySearch(new int[3], -1, 0, "", null)); - Assert.Throws("index", () => Array.BinarySearch(new string[3], -1, 0, "", null)); + AssertExtensions.Throws("index", () => Array.BinarySearch(new int[3], -1, 0, "")); + AssertExtensions.Throws("index", () => Array.BinarySearch(new string[3], -1, 0, "")); + AssertExtensions.Throws("index", () => Array.BinarySearch(new int[3], -1, 0, "", null)); + AssertExtensions.Throws("index", () => Array.BinarySearch(new string[3], -1, 0, "", null)); } [Fact] public static void BinarySearch_LengthLessThanZero_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => Array.BinarySearch(new int[3], 0, -1, "")); - Assert.Throws("length", () => Array.BinarySearch(new string[3], 0, -1, "")); - Assert.Throws("length", () => Array.BinarySearch(new int[3], 0, -1, "", null)); - Assert.Throws("length", () => Array.BinarySearch(new string[3], 0, -1, "", null)); + AssertExtensions.Throws("length", () => Array.BinarySearch(new int[3], 0, -1, "")); + AssertExtensions.Throws("length", () => Array.BinarySearch(new string[3], 0, -1, "")); + AssertExtensions.Throws("length", () => Array.BinarySearch(new int[3], 0, -1, "", null)); + AssertExtensions.Throws("length", () => Array.BinarySearch(new string[3], 0, -1, "", null)); } [Theory] @@ -531,7 +531,7 @@ public static void GetValue_Invalid() Assert.Throws(() => new int[10].GetValue(10)); // Index >= array.Length Assert.Throws(null, () => new int[10, 10].GetValue(0)); // Array is multidimensional - Assert.Throws("indices", () => new int[10].GetValue((int[])null)); // Indices is null + AssertExtensions.Throws("indices", () => new int[10].GetValue((int[])null)); // Indices is null Assert.Throws(null, () => new int[10, 10].GetValue(new int[] { 1, 2, 3 })); // Indices.Length > array.Rank Assert.Throws(() => new int[8, 10].GetValue(new int[] { -1, 2 })); // Indices[0] < 0 @@ -616,7 +616,7 @@ public static void Clear_Struct_WithReferenceAndValueTypeFields_Array() [Fact] public static void Clear_Invalid() { - Assert.Throws("array", () => Array.Clear(null, 0, 0)); // Array is null + AssertExtensions.Throws("array", () => Array.Clear(null, 0, 0)); // Array is null Assert.Throws(() => Array.Clear(new int[10], -1, 0)); // Index < 0 Assert.Throws(() => Array.Clear(new int[10], 0, -1)); // Length < 0 @@ -962,7 +962,7 @@ public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array des [Fact] public static void Copy_NullSourceArray_ThrowsArgumentNullException() { - Assert.Throws("sourceArray", () => Array.Copy(null, new string[10], 0)); + AssertExtensions.Throws("sourceArray", () => Array.Copy(null, new string[10], 0)); AssertExtensions.Throws("sourceArray", "source", () => Array.Copy(null, 0, new string[10], 0, 0)); AssertExtensions.Throws("sourceArray", "source", () => Array.ConstrainedCopy(null, 0, new string[10], 0, 0)); @@ -971,7 +971,7 @@ public static void Copy_NullSourceArray_ThrowsArgumentNullException() [Fact] public static void Copy_NullDestinationArray_ThrowsArgumentNullException() { - Assert.Throws("destinationArray", () => Array.Copy(new string[10], null, 0)); + AssertExtensions.Throws("destinationArray", () => Array.Copy(new string[10], null, 0)); AssertExtensions.Throws("destinationArray", "dest", () => Array.Copy(new string[10], 0, null, 0, 0)); AssertExtensions.Throws("destinationArray", "dest", () => Array.ConstrainedCopy(new string[10], 0, null, 0, 0)); @@ -1239,9 +1239,9 @@ public static void ConstrainedCopy_UnreliableConversion_ThrowsArrayTypeMismatchE [Fact] public static void Copy_NegativeLength_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => Array.Copy(new string[10], new string[10], -1)); - Assert.Throws("length", () => Array.Copy(new string[10], 0, new string[10], 0, -1)); - Assert.Throws("length", () => Array.ConstrainedCopy(new string[10], 0, new string[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Copy(new string[10], new string[10], -1)); + AssertExtensions.Throws("length", () => Array.Copy(new string[10], 0, new string[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.ConstrainedCopy(new string[10], 0, new string[10], 0, -1)); } [Theory] @@ -1381,9 +1381,9 @@ public static void CreateInstance(Type elementType, int[] lengths, int[] lowerBo [Fact] public static void CreateInstance_NullElementType_ThrowsArgumentNullException() { - Assert.Throws("elementType", () => Array.CreateInstance(null, 0)); - Assert.Throws("elementType", () => Array.CreateInstance(null, new int[1])); - Assert.Throws("elementType", () => Array.CreateInstance(null, new int[1], new int[1])); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0)); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, new int[1])); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, new int[1], new int[1])); } public static IEnumerable CreateInstance_NotSupportedType_TestData() @@ -1407,15 +1407,15 @@ public static void CreateInstance_NotSupportedType_ThrowsNotSupportedException(T [Fact] public static void CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => Array.CreateInstance(typeof(int), -1)); - Assert.Throws("lengths[0]", () => Array.CreateInstance(typeof(int), new int[] { -1 })); - Assert.Throws("lengths[0]", () => Array.CreateInstance(typeof(int), new int[] { -1 }, new int[1])); + AssertExtensions.Throws("length", () => Array.CreateInstance(typeof(int), -1)); + AssertExtensions.Throws("lengths[0]", () => Array.CreateInstance(typeof(int), new int[] { -1 })); + AssertExtensions.Throws("lengths[0]", () => Array.CreateInstance(typeof(int), new int[] { -1 }, new int[1])); } [Fact] public static void CreateInstance_LengthsNull_ThrowsArgumentNullException() { - Assert.Throws("lengths", () => Array.CreateInstance(typeof(int), null, new int[1])); + AssertExtensions.Throws("lengths", () => Array.CreateInstance(typeof(int), null, new int[1])); } [Fact] @@ -1428,7 +1428,7 @@ public static void CreateInstance_LengthsEmpty_ThrowsArgumentException() [Fact] public static void CreateInstance_LowerBoundNull_ThrowsArgumentNullException() { - Assert.Throws("lowerBounds", () => Array.CreateInstance(typeof(int), new int[] { 1 }, null)); + AssertExtensions.Throws("lowerBounds", () => Array.CreateInstance(typeof(int), new int[] { 1 }, null)); } [Theory] @@ -1508,85 +1508,85 @@ public static void Find() [Fact] public static void Exists_Invalid() { - Assert.Throws("array", () => Array.Exists((int[])null, i => i == 43)); // Array is null - Assert.Throws("match", () => Array.Exists(new int[0], null)); // Match is null + AssertExtensions.Throws("array", () => Array.Exists((int[])null, i => i == 43)); // Array is null + AssertExtensions.Throws("match", () => Array.Exists(new int[0], null)); // Match is null } [Fact] public static void Find_Invalid() { - Assert.Throws("array", () => Array.Find((int[])null, i => i == 43)); // Array is null - Assert.Throws("match", () => Array.Find(new int[0], null)); // Match is null + AssertExtensions.Throws("array", () => Array.Find((int[])null, i => i == 43)); // Array is null + AssertExtensions.Throws("match", () => Array.Find(new int[0], null)); // Match is null } [Fact] public static void FindIndex_Invalid() { // Array is null - Assert.Throws("array", () => Array.FindIndex((int[])null, i => i == 43)); - Assert.Throws("array", () => Array.FindIndex((int[])null, 0, i => i == 43)); - Assert.Throws("array", () => Array.FindIndex((int[])null, 0, 0, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindIndex((int[])null, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindIndex((int[])null, 0, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindIndex((int[])null, 0, 0, i => i == 43)); // Start index < 0 - Assert.Throws("startIndex", () => Array.FindIndex(new int[3], -1, i => i == 43)); - Assert.Throws("startIndex", () => Array.FindIndex(new int[3], -1, 0, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindIndex(new int[3], -1, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindIndex(new int[3], -1, 0, i => i == 43)); // Start index > array.Length - Assert.Throws("startIndex", () => Array.FindIndex(new int[3], 4, i => i == 43)); - Assert.Throws("startIndex", () => Array.FindIndex(new int[3], 4, 0, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindIndex(new int[3], 4, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindIndex(new int[3], 4, 0, i => i == 43)); // Count < 0 or count > array.Length - Assert.Throws("count", () => Array.FindIndex(new int[3], 0, -1, i => i == 43)); - Assert.Throws("count", () => Array.FindIndex(new int[3], 0, 4, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindIndex(new int[3], 0, -1, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindIndex(new int[3], 0, 4, i => i == 43)); // Start index + count > array.Length - Assert.Throws("count", () => Array.FindIndex(new int[3], 3, 1, i => i == 43)); - Assert.Throws("count", () => Array.FindIndex(new int[3], 2, 2, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindIndex(new int[3], 3, 1, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindIndex(new int[3], 2, 2, i => i == 43)); } [Fact] public static void FindAll_Invalid() { - Assert.Throws("array", () => Array.FindAll((int[])null, i => i == 43)); // Array is null - Assert.Throws("match", () => Array.FindAll(new int[0], null)); // Match is null + AssertExtensions.Throws("array", () => Array.FindAll((int[])null, i => i == 43)); // Array is null + AssertExtensions.Throws("match", () => Array.FindAll(new int[0], null)); // Match is null } [Fact] public static void FindLast_Invalid() { - Assert.Throws("array", () => Array.FindLast((int[])null, i => i == 43)); // Array is null - Assert.Throws("match", () => Array.FindLast(new int[0], null)); // Match is null + AssertExtensions.Throws("array", () => Array.FindLast((int[])null, i => i == 43)); // Array is null + AssertExtensions.Throws("match", () => Array.FindLast(new int[0], null)); // Match is null } [Fact] public static void FindLastIndex_Invalid() { // Array is null - Assert.Throws("array", () => Array.FindLastIndex((int[])null, i => i == 43)); - Assert.Throws("array", () => Array.FindLastIndex((int[])null, 0, i => i == 43)); - Assert.Throws("array", () => Array.FindLastIndex((int[])null, 0, 0, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindLastIndex((int[])null, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindLastIndex((int[])null, 0, i => i == 43)); + AssertExtensions.Throws("array", () => Array.FindLastIndex((int[])null, 0, 0, i => i == 43)); // Match is null - Assert.Throws("match", () => Array.FindLastIndex(new int[0], null)); - Assert.Throws("match", () => Array.FindLastIndex(new int[0], 0, null)); - Assert.Throws("match", () => Array.FindLastIndex(new int[0], 0, 0, null)); + AssertExtensions.Throws("match", () => Array.FindLastIndex(new int[0], null)); + AssertExtensions.Throws("match", () => Array.FindLastIndex(new int[0], 0, null)); + AssertExtensions.Throws("match", () => Array.FindLastIndex(new int[0], 0, 0, null)); - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[0], 0, i => i == 43)); // Start index != -1 for an empty array + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[0], 0, i => i == 43)); // Start index != -1 for an empty array // Start index < 0 - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[3], -1, i => i == 43)); - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[3], -1, 0, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[3], -1, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[3], -1, 0, i => i == 43)); // Start index > array.Length - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[3], 4, i => i == 43)); - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[3], 4, 0, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[3], 4, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[3], 4, 0, i => i == 43)); // Count < 0 or count > array.Length - Assert.Throws("count", () => Array.FindLastIndex(new int[3], 0, -1, i => i == 43)); - Assert.Throws("count", () => Array.FindLastIndex(new int[3], 0, 4, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindLastIndex(new int[3], 0, -1, i => i == 43)); + AssertExtensions.Throws("count", () => Array.FindLastIndex(new int[3], 0, 4, i => i == 43)); // Start index + count > array.Length - Assert.Throws("startIndex", () => Array.FindLastIndex(new int[3], 3, 1, i => i == 43)); + AssertExtensions.Throws("startIndex", () => Array.FindLastIndex(new int[3], 3, 1, i => i == 43)); } public static IEnumerable GetEnumerator_TestData() @@ -1976,12 +1976,12 @@ public static void IndexOf_SZArray_NonInferrableEntries() [Fact] public static void IndexOf_NullArray_ThrowsArgumentNullException() { - Assert.Throws("array", () => Array.IndexOf((int[])null, "")); - Assert.Throws("array", () => Array.IndexOf((int[])null, "", 0)); - Assert.Throws("array", () => Array.IndexOf((int[])null, "", 0, 0)); - Assert.Throws("array", () => Array.IndexOf(null, "")); - Assert.Throws("array", () => Array.IndexOf(null, "", 0)); - Assert.Throws("array", () => Array.IndexOf(null, "", 0, 0)); + AssertExtensions.Throws("array", () => Array.IndexOf((int[])null, "")); + AssertExtensions.Throws("array", () => Array.IndexOf((int[])null, "", 0)); + AssertExtensions.Throws("array", () => Array.IndexOf((int[])null, "", 0, 0)); + AssertExtensions.Throws("array", () => Array.IndexOf(null, "")); + AssertExtensions.Throws("array", () => Array.IndexOf(null, "", 0)); + AssertExtensions.Throws("array", () => Array.IndexOf(null, "", 0, 0)); } [Fact] @@ -1997,10 +1997,10 @@ public static void IndexOf_MultimensionalArray_ThrowsRankException() [InlineData(1)] public static void IndexOf_InvalidStartIndex_ThrowsArgumentOutOfRangeException(int startIndex) { - Assert.Throws("startIndex", () => Array.IndexOf(new int[0], "", startIndex)); - Assert.Throws("startIndex", () => Array.IndexOf(new int[0], "", startIndex, 0)); - Assert.Throws("startIndex", () => Array.IndexOf(new string[0], "", startIndex)); - Assert.Throws("startIndex", () => Array.IndexOf(new string[0], "", startIndex, 0)); + AssertExtensions.Throws("startIndex", () => Array.IndexOf(new int[0], "", startIndex)); + AssertExtensions.Throws("startIndex", () => Array.IndexOf(new int[0], "", startIndex, 0)); + AssertExtensions.Throws("startIndex", () => Array.IndexOf(new string[0], "", startIndex)); + AssertExtensions.Throws("startIndex", () => Array.IndexOf(new string[0], "", startIndex, 0)); } [Theory] @@ -2010,8 +2010,8 @@ public static void IndexOf_InvalidStartIndex_ThrowsArgumentOutOfRangeException(i [InlineData(2, 2, 1)] public static void IndexOf_InvalidCount_ThrowsArgumentOutOfRangeException(int length, int startIndex, int count) { - Assert.Throws("count", () => Array.IndexOf(new int[length], "", startIndex, count)); - Assert.Throws("count", () => Array.IndexOf(new string[length], "", startIndex, count)); + AssertExtensions.Throws("count", () => Array.IndexOf(new int[length], "", startIndex, count)); + AssertExtensions.Throws("count", () => Array.IndexOf(new string[length], "", startIndex, count)); } public static IEnumerable LastIndexOf_SZArray_TestData() @@ -2329,12 +2329,12 @@ public static void LastIndexOf_NonInferrableEntries() [Fact] public static void LastIndexOf_NullArray_ThrowsArgumentNullException() { - Assert.Throws("array", () => Array.LastIndexOf((int[])null, "")); - Assert.Throws("array", () => Array.LastIndexOf((int[])null, "", 0)); - Assert.Throws("array", () => Array.LastIndexOf((int[])null, "", 0, 0)); - Assert.Throws("array", () => Array.LastIndexOf(null, "")); - Assert.Throws("array", () => Array.LastIndexOf(null, "", 0)); - Assert.Throws("array", () => Array.LastIndexOf(null, "", 0, 0)); + AssertExtensions.Throws("array", () => Array.LastIndexOf((int[])null, "")); + AssertExtensions.Throws("array", () => Array.LastIndexOf((int[])null, "", 0)); + AssertExtensions.Throws("array", () => Array.LastIndexOf((int[])null, "", 0, 0)); + AssertExtensions.Throws("array", () => Array.LastIndexOf(null, "")); + AssertExtensions.Throws("array", () => Array.LastIndexOf(null, "", 0)); + AssertExtensions.Throws("array", () => Array.LastIndexOf(null, "", 0, 0)); } [Fact] @@ -2351,24 +2351,24 @@ public static void LastIndexOf_MultidimensionalArray_ThrowsRankException() [Fact] public static void LastIndexOf_EmptyArrayInvalidStartIndexCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("startIndex", () => Array.LastIndexOf(new int[0], 0, 1, 0)); // Start index != 0 or -1 - Assert.Throws("count", () => Array.LastIndexOf(new int[0], 0, 0, 1)); // Count != 0 + AssertExtensions.Throws("startIndex", () => Array.LastIndexOf(new int[0], 0, 1, 0)); // Start index != 0 or -1 + AssertExtensions.Throws("count", () => Array.LastIndexOf(new int[0], 0, 0, 1)); // Count != 0 } [Fact] public static void LastIndexOf_NegativeStartIndex_ThrowsArgumentOutOfRangeException() { - Assert.Throws("startIndex", () => Array.LastIndexOf(new int[1], "", -1)); - Assert.Throws("startIndex", () => Array.LastIndexOf(new int[1], "", -1, 0)); - Assert.Throws("startIndex", () => Array.LastIndexOf(new string[1], "", -1)); - Assert.Throws("startIndex", () => Array.LastIndexOf(new string[1], "", -1, 0)); + AssertExtensions.Throws("startIndex", () => Array.LastIndexOf(new int[1], "", -1)); + AssertExtensions.Throws("startIndex", () => Array.LastIndexOf(new int[1], "", -1, 0)); + AssertExtensions.Throws("startIndex", () => Array.LastIndexOf(new string[1], "", -1)); + AssertExtensions.Throws("startIndex", () => Array.LastIndexOf(new string[1], "", -1, 0)); } [Fact] public static void LastIndexOf_NegativeCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("count", () => Array.LastIndexOf(new int[1], "", 0, -1)); - Assert.Throws("count", () => Array.LastIndexOf(new string[1], "", 0, -1)); + AssertExtensions.Throws("count", () => Array.LastIndexOf(new int[1], "", 0, -1)); + AssertExtensions.Throws("count", () => Array.LastIndexOf(new string[1], "", 0, -1)); } [Theory] @@ -2377,8 +2377,8 @@ public static void LastIndexOf_NegativeCount_ThrowsArgumentOutOfRangeException() [InlineData(3, 1, 3)] public static void LastIndexOf_InvalidStartIndexCount_ThrowsArgumentOutOfRangeExeption(int length, int startIndex, int count) { - Assert.Throws("endIndex", () => Array.LastIndexOf(new int[length], "", startIndex, count)); - Assert.Throws("count", () => Array.LastIndexOf(new int[length], 0, startIndex, count)); + AssertExtensions.Throws("endIndex", () => Array.LastIndexOf(new int[length], "", startIndex, count)); + AssertExtensions.Throws("count", () => Array.LastIndexOf(new int[length], 0, startIndex, count)); } public static IEnumerable IStructuralComparable_TestData() @@ -2413,10 +2413,10 @@ public static void IStructuralComparable(Array array, object other, IComparer co public static void IStructuralComparable_Invalid() { IStructuralComparable comparable = new int[] { 1, 2, 3 }; - Assert.Throws("other", () => comparable.CompareTo(new int[] { 1, 2 }, new IntegerComparer())); // Arrays have different lengths - Assert.Throws("other", () => comparable.CompareTo(new int[] { 1, 2, 3, 4 }, new IntegerComparer())); // Arrays have different lengths + AssertExtensions.Throws("other", () => comparable.CompareTo(new int[] { 1, 2 }, new IntegerComparer())); // Arrays have different lengths + AssertExtensions.Throws("other", () => comparable.CompareTo(new int[] { 1, 2, 3, 4 }, new IntegerComparer())); // Arrays have different lengths - Assert.Throws("other", () => comparable.CompareTo(123, new IntegerComparer())); // Other is not an array + AssertExtensions.Throws("other", () => comparable.CompareTo(123, new IntegerComparer())); // Other is not an array } [Fact] @@ -2474,7 +2474,7 @@ public static void IStructuralEquatable_Equals_NullComparer_ThrowsNullReferenceE public static void IStructuralEquatable_GetHashCode_NullComparer_ThrowsArgumentNullException() { IStructuralEquatable equatable = new int[] { 1, 2, 3 }; - Assert.Throws("comparer", () => equatable.GetHashCode(null)); + AssertExtensions.Throws("comparer", () => equatable.GetHashCode(null)); } [Theory] @@ -2493,7 +2493,7 @@ public static void Resize(int[] array, int newSize, int[] expected) public static void Resize_NegativeNewSize_ThrowsArgumentOutOfRangeException() { var array = new int[0]; - Assert.Throws("newSize", () => Array.Resize(ref array, -1)); // New size < 0 + AssertExtensions.Throws("newSize", () => Array.Resize(ref array, -1)); // New size < 0 Assert.Equal(new int[0], array); } @@ -2633,8 +2633,8 @@ public static void Reverse(Array array, int index, int length, Array expected) [Fact] public static void Reverse_NullArray_ThrowsArgumentNullException() { - Assert.Throws("array", () => Array.Reverse(null)); - Assert.Throws("array", () => Array.Reverse(null, 0, 0)); + AssertExtensions.Throws("array", () => Array.Reverse(null)); + AssertExtensions.Throws("array", () => Array.Reverse(null, 0, 0)); } [Fact] @@ -2649,7 +2649,7 @@ public static void Reverse_MultidimensionalArray_ThrowsRankException() [InlineData(-1)] public static void Reverse_IndexLessThanLowerBound_ThrowsArgumentOutOfRangeException(int lowerBound) { - Assert.Throws("index", () => Array.Reverse(NonZeroLowerBoundArray(new int[0], lowerBound), lowerBound - 1, 0)); + AssertExtensions.Throws("index", () => Array.Reverse(NonZeroLowerBoundArray(new int[0], lowerBound), lowerBound - 1, 0)); } [Fact] @@ -2661,7 +2661,7 @@ public static void Reverse_IndexLessThanPositiveLowerBound_ThrowsArgumentOutOfRa [Fact] public static void Reverse_NegativeLength_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => Array.Reverse((Array)new int[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Reverse((Array)new int[10], 0, -1)); } [Theory] @@ -2770,8 +2770,8 @@ public static void Sort_Array_Generic(string[] array, int index, int length, ICo [Fact] public static void Sort_Array_Invalid() { - Assert.Throws("array", () => Array.Sort(null)); // Array is null - Assert.Throws("array", () => Array.Sort((int[])null)); // Array is null + AssertExtensions.Throws("array", () => Array.Sort(null)); // Array is null + AssertExtensions.Throws("array", () => Array.Sort((int[])null)); // Array is null Assert.Throws(() => Array.Sort(new int[10, 10])); // Array is multidimensional @@ -2783,8 +2783,8 @@ public static void Sort_Array_Invalid() public static void Sort_Array_IComparer_Invalid() { // Array is null - Assert.Throws("array", () => Array.Sort(null, (IComparer)null)); - Assert.Throws("array", () => Array.Sort(null, (IComparer)null)); + AssertExtensions.Throws("array", () => Array.Sort(null, (IComparer)null)); + AssertExtensions.Throws("array", () => Array.Sort(null, (IComparer)null)); Assert.Throws(() => Array.Sort(new int[10, 10], (IComparer)null)); // Array is multidimensional @@ -2796,16 +2796,16 @@ public static void Sort_Array_IComparer_Invalid() [Fact] public static void Sort_Array_Comparison_Invalid() { - Assert.Throws("array", () => Array.Sort(null, (Comparison)null)); // Array is null - Assert.Throws("comparison", () => Array.Sort(new int[10], (Comparison)null)); // Comparison is null + AssertExtensions.Throws("array", () => Array.Sort(null, (Comparison)null)); // Array is null + AssertExtensions.Throws("comparison", () => Array.Sort(new int[10], (Comparison)null)); // Comparison is null } [Fact] public static void Sort_Array_Int_Int_Invalid() { // Array is null - Assert.Throws("keys", () => Array.Sort(null, 0, 0)); - Assert.Throws("array", () => Array.Sort((int[])null, 0, 0)); + AssertExtensions.Throws("keys", () => Array.Sort(null, 0, 0)); + AssertExtensions.Throws("array", () => Array.Sort((int[])null, 0, 0)); Assert.Throws(() => Array.Sort(new int[10, 10], 0, 0, null)); // Array is multidimensional @@ -2814,12 +2814,12 @@ public static void Sort_Array_Int_Int_Invalid() Assert.Throws(() => Array.Sort(new object[] { "1", 2, new object() }, 0, 3)); // Index < 0 - Assert.Throws("index", () => Array.Sort((Array)new int[10], -1, 0)); - Assert.Throws("index", () => Array.Sort(new int[10], -1, 0)); + AssertExtensions.Throws("index", () => Array.Sort((Array)new int[10], -1, 0)); + AssertExtensions.Throws("index", () => Array.Sort(new int[10], -1, 0)); // Length < 0 - Assert.Throws("length", () => Array.Sort((Array)new int[10], 0, -1)); - Assert.Throws("length", () => Array.Sort(new int[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Sort((Array)new int[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Sort(new int[10], 0, -1)); // Index + length > list.Count Assert.Throws(() => Array.Sort((Array)new int[10], 11, 0)); @@ -2834,8 +2834,8 @@ public static void Sort_Array_Int_Int_Invalid() public static void Sort_Array_Int_Int_IComparer_Invalid() { // Array is null - Assert.Throws("keys", () => Array.Sort(null, 0, 0, null)); - Assert.Throws("array", () => Array.Sort((int[])null, 0, 0, null)); + AssertExtensions.Throws("keys", () => Array.Sort(null, 0, 0, null)); + AssertExtensions.Throws("array", () => Array.Sort((int[])null, 0, 0, null)); Assert.Throws(() => Array.Sort(new int[10, 10], 0, 0, null)); // Array is multidimensional @@ -2844,12 +2844,12 @@ public static void Sort_Array_Int_Int_IComparer_Invalid() Assert.Throws(() => Array.Sort(new object[] { "1", 2, new object() }, 0, 3, null)); // Index < 0 - Assert.Throws("index", () => Array.Sort((Array)new int[10], -1, 0, null)); - Assert.Throws("index", () => Array.Sort(new int[10], -1, 0, null)); + AssertExtensions.Throws("index", () => Array.Sort((Array)new int[10], -1, 0, null)); + AssertExtensions.Throws("index", () => Array.Sort(new int[10], -1, 0, null)); // Length < 0 - Assert.Throws("length", () => Array.Sort((Array)new int[10], 0, -1, null)); - Assert.Throws("length", () => Array.Sort(new int[10], 0, -1, null)); + AssertExtensions.Throws("length", () => Array.Sort((Array)new int[10], 0, -1, null)); + AssertExtensions.Throws("length", () => Array.Sort(new int[10], 0, -1, null)); // Index + length > list.Count Assert.Throws(null, () => Array.Sort((Array)new int[10], 11, 0, null)); @@ -3020,8 +3020,8 @@ public static void Sort_Array_Array_Generic(string[] keys, string[] items, int i public static void Sort_Array_Array_Invalid() { // Keys is null - Assert.Throws("keys", () => Array.Sort(null, new int[10])); - Assert.Throws("keys", () => Array.Sort((int[])null, new int[10])); + AssertExtensions.Throws("keys", () => Array.Sort(null, new int[10])); + AssertExtensions.Throws("keys", () => Array.Sort((int[])null, new int[10])); // Keys.Length > items.Length Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[9])); @@ -3043,8 +3043,8 @@ public static void Sort_Array_Array_Invalid() public static void Sort_Array_Array_IComparer_Invalid() { // Keys is null - Assert.Throws("keys", () => Array.Sort(null, new int[10], null)); - Assert.Throws("keys", () => Array.Sort((int[])null, new int[10], null)); + AssertExtensions.Throws("keys", () => Array.Sort(null, new int[10], null)); + AssertExtensions.Throws("keys", () => Array.Sort((int[])null, new int[10], null)); // Keys.Length > items.Length Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[9], null)); @@ -3066,8 +3066,8 @@ public static void Sort_Array_Array_IComparer_Invalid() public static void Sort_Array_Array_Int_Int_Invalid() { // Keys is null - Assert.Throws("keys", () => Array.Sort(null, new int[10], 0, 0)); - Assert.Throws("keys", () => Array.Sort((int[])null, new int[10], 0, 0)); + AssertExtensions.Throws("keys", () => Array.Sort(null, new int[10], 0, 0)); + AssertExtensions.Throws("keys", () => Array.Sort((int[])null, new int[10], 0, 0)); // Keys.Length > items.Length Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[9], 0, 10)); @@ -3085,12 +3085,12 @@ public static void Sort_Array_Array_Int_Int_Invalid() Assert.Throws(() => Array.Sort(new object[] { "1", 2, new object() }, new object[3], 0, 3)); // Index < 0 - Assert.Throws("index", () => Array.Sort((Array)new int[10], new int[10], -1, 0)); - Assert.Throws("index", () => Array.Sort(new int[10], new int[10], -1, 0)); + AssertExtensions.Throws("index", () => Array.Sort((Array)new int[10], new int[10], -1, 0)); + AssertExtensions.Throws("index", () => Array.Sort(new int[10], new int[10], -1, 0)); // Length < 0 - Assert.Throws("length", () => Array.Sort((Array)new int[10], new int[10], 0, -1)); - Assert.Throws("length", () => Array.Sort(new int[10], new int[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Sort((Array)new int[10], new int[10], 0, -1)); + AssertExtensions.Throws("length", () => Array.Sort(new int[10], new int[10], 0, -1)); // Index + length > list.Count Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[10], 11, 0)); @@ -3105,8 +3105,8 @@ public static void Sort_Array_Array_Int_Int_Invalid() public static void Sort_Array_Array_Int_Int_IComparer_Invalid() { // Keys is null - Assert.Throws("keys", () => Array.Sort(null, new int[10], 0, 0, null)); - Assert.Throws("keys", () => Array.Sort((int[])null, new int[10], 0, 0, null)); + AssertExtensions.Throws("keys", () => Array.Sort(null, new int[10], 0, 0, null)); + AssertExtensions.Throws("keys", () => Array.Sort((int[])null, new int[10], 0, 0, null)); // Keys.Length > items.Length Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[9], 0, 10, null)); @@ -3124,12 +3124,12 @@ public static void Sort_Array_Array_Int_Int_IComparer_Invalid() Assert.Throws(() => Array.Sort(new object[] { "1", 2, new object() }, new object[3], 0, 3, null)); // Index < 0 - Assert.Throws("index", () => Array.Sort((Array)new int[10], new int[10], -1, 0, null)); - Assert.Throws("index", () => Array.Sort(new int[10], new int[10], -1, 0, null)); + AssertExtensions.Throws("index", () => Array.Sort((Array)new int[10], new int[10], -1, 0, null)); + AssertExtensions.Throws("index", () => Array.Sort(new int[10], new int[10], -1, 0, null)); // Length < 0 - Assert.Throws("length", () => Array.Sort((Array)new int[10], new int[10], 0, -1, null)); - Assert.Throws("length", () => Array.Sort(new int[10], new int[10], 0, -1, null)); + AssertExtensions.Throws("length", () => Array.Sort((Array)new int[10], new int[10], 0, -1, null)); + AssertExtensions.Throws("length", () => Array.Sort(new int[10], new int[10], 0, -1, null)); // Index + length > list.Count Assert.Throws(null, () => Array.Sort((Array)new int[10], new int[10], 11, 0, null)); @@ -3200,7 +3200,7 @@ public static void SetValue_Invalid() Assert.Throws(() => new int[10].SetValue(1, 10)); // Index >= array.Length Assert.Throws(null, () => new int[10, 10].SetValue(1, 0)); // Array is multidimensional - Assert.Throws("indices", () => new int[10].SetValue(1, (int[])null)); // Indices is null + AssertExtensions.Throws("indices", () => new int[10].SetValue(1, (int[])null)); // Indices is null Assert.Throws(null, () => new int[10, 10].SetValue(1, new int[] { 1, 2, 3 })); // Indices.Length > array.Length Assert.Throws(() => new int[8, 10].SetValue(1, new int[] { -1, 2 })); // Indices[0] < 0 @@ -3228,8 +3228,8 @@ public static void TrueForAll(int[] array, Predicate match, bool expected) public static void TrueForAll_Null_ThrowsArgumentNullException() { // Array is null - Assert.Throws("array", () => Array.TrueForAll((int[])null, i => i > 0)); - Assert.Throws("match", () => Array.TrueForAll(new int[0], null)); + AssertExtensions.Throws("array", () => Array.TrueForAll((int[])null, i => i > 0)); + AssertExtensions.Throws("match", () => Array.TrueForAll(new int[0], null)); } [Fact] diff --git a/src/System.Runtime/tests/System/ArrayTests.netcoreapp.cs b/src/System.Runtime/tests/System/ArrayTests.netcoreapp.cs index d7d82c6beb04..6a8061f0b9b6 100644 --- a/src/System.Runtime/tests/System/ArrayTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/ArrayTests.netcoreapp.cs @@ -112,20 +112,20 @@ public static void Reverse_Generic(int[] array, int index, int length, int[] exp [Fact] public static void Reverse_Generic_NullArray_ThrowsArgumentNullException() { - Assert.Throws("array", () => Array.Reverse((string[])null)); - Assert.Throws("array", () => Array.Reverse((string[])null, 0, 0)); + AssertExtensions.Throws("array", () => Array.Reverse((string[])null)); + AssertExtensions.Throws("array", () => Array.Reverse((string[])null, 0, 0)); } [Fact] public static void Reverse_Generic_NegativeIndex_ThrowsArgumentOutOfRangeException() { - Assert.Throws("index", () => Array.Reverse(new string[0], -1, 0)); + AssertExtensions.Throws("index", () => Array.Reverse(new string[0], -1, 0)); } [Fact] public static void Reverse_Generic_NegativeLength_ThrowsArgumentOutOfRangeException() { - Assert.Throws("length", () => Array.Reverse(new string[0], 0, -1)); + AssertExtensions.Throws("length", () => Array.Reverse(new string[0], 0, -1)); } [Theory] @@ -143,9 +143,9 @@ public static void Reverse_Generic_InvalidOffsetPlusLength_ThrowsArgumentExcepti [Fact] public static void CreateInstance_TypeNotRuntimeType_ThrowsArgumentException() { - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0)); - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), new int[1])); - Assert.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), new int[1], new int[1])); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), 0)); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), new int[1])); + AssertExtensions.Throws("elementType", () => Array.CreateInstance(Helpers.NonRuntimeType(), new int[1], new int[1])); } } } diff --git a/src/System.Runtime/tests/System/BufferTests.cs b/src/System.Runtime/tests/System/BufferTests.cs index 3b61eb81f6f0..97d2294fa166 100644 --- a/src/System.Runtime/tests/System/BufferTests.cs +++ b/src/System.Runtime/tests/System/BufferTests.cs @@ -30,21 +30,21 @@ public static void BlockCopy_SameDestinationAndSourceArray() [Fact] public static void BlockCopy_Invalid() { - Assert.Throws("src", () => Buffer.BlockCopy(null, 0, new int[3], 0, 0)); // Src is null - Assert.Throws("dst", () => Buffer.BlockCopy(new string[3], 0, null, 0, 0)); // Dst is null + AssertExtensions.Throws("src", () => Buffer.BlockCopy(null, 0, new int[3], 0, 0)); // Src is null + AssertExtensions.Throws("dst", () => Buffer.BlockCopy(new string[3], 0, null, 0, 0)); // Dst is null - Assert.Throws("srcOffset", () => Buffer.BlockCopy(new byte[3], -1, new byte[3], 0, 0)); // SrcOffset < 0 - Assert.Throws("dstOffset", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], -1, 0)); // DstOffset < 0 - Assert.Throws("count", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 0, -1)); // Count < 0 + AssertExtensions.Throws("srcOffset", () => Buffer.BlockCopy(new byte[3], -1, new byte[3], 0, 0)); // SrcOffset < 0 + AssertExtensions.Throws("dstOffset", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], -1, 0)); // DstOffset < 0 + AssertExtensions.Throws("count", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 0, -1)); // Count < 0 - Assert.Throws("src", () => Buffer.BlockCopy(new string[3], 0, new byte[3], 0, 0)); // Src is not a byte array - Assert.Throws("dest", () => Buffer.BlockCopy(new byte[3], 0, new string[3], 0, 0)); // Dst is not a byte array + AssertExtensions.Throws("src", () => Buffer.BlockCopy(new string[3], 0, new byte[3], 0, 0)); // Src is not a byte array + AssertExtensions.Throws("dest", () => Buffer.BlockCopy(new byte[3], 0, new string[3], 0, 0)); // Dst is not a byte array - Assert.Throws("", () => Buffer.BlockCopy(new byte[3], 3, new byte[3], 0, 1)); // SrcOffset + count >= src.length - Assert.Throws("", () => Buffer.BlockCopy(new byte[3], 4, new byte[3], 0, 0)); // SrcOffset >= src.Length + AssertExtensions.Throws("", () => Buffer.BlockCopy(new byte[3], 3, new byte[3], 0, 1)); // SrcOffset + count >= src.length + AssertExtensions.Throws("", () => Buffer.BlockCopy(new byte[3], 4, new byte[3], 0, 0)); // SrcOffset >= src.Length - Assert.Throws("", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 3, 1)); // DstOffset + count >= dst.Length - Assert.Throws("", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 4, 0)); // DstOffset >= dst.Length + AssertExtensions.Throws("", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 3, 1)); // DstOffset + count >= dst.Length + AssertExtensions.Throws("", () => Buffer.BlockCopy(new byte[3], 0, new byte[3], 4, 0)); // DstOffset >= dst.Length } public static unsafe IEnumerable ByteLength_TestData() @@ -80,11 +80,11 @@ public static void ByteLength(Type type, int size) [Fact] public static void ByteLength_Invalid() { - Assert.Throws("array", () => Buffer.ByteLength(null)); // Array is null + AssertExtensions.Throws("array", () => Buffer.ByteLength(null)); // Array is null - Assert.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(DateTime), 25))); // Array is not a primitive - Assert.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(decimal), 25))); // Array is not a primitive - Assert.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(string), 25))); // Array is not a primitive + AssertExtensions.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(DateTime), 25))); // Array is not a primitive + AssertExtensions.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(decimal), 25))); // Array is not a primitive + AssertExtensions.Throws("array", () => Buffer.ByteLength(Array.CreateInstance(typeof(string), 25))); // Array is not a primitive } [Theory] @@ -100,11 +100,11 @@ public static void GetByte_Invalid() { var array = new uint[] { 0x01234567, 0x89abcdef }; - Assert.Throws("array", () => Buffer.GetByte(null, 0)); // Array is null - Assert.Throws("array", () => Buffer.GetByte(new object[10], 0)); // Array is not a primitive array + AssertExtensions.Throws("array", () => Buffer.GetByte(null, 0)); // Array is null + AssertExtensions.Throws("array", () => Buffer.GetByte(new object[10], 0)); // Array is not a primitive array - Assert.Throws("index", () => Buffer.GetByte(array, -1)); // Index < 0 - Assert.Throws("index", () => Buffer.GetByte(array, 8)); // Index >= array.Length + AssertExtensions.Throws("index", () => Buffer.GetByte(array, -1)); // Index < 0 + AssertExtensions.Throws("index", () => Buffer.GetByte(array, 8)); // Index >= array.Length } [Theory] @@ -190,7 +190,7 @@ public static unsafe void MemoryCopy_Invalid() var sourceArray = new int[5000]; var destinationArray = new int[1000]; - Assert.Throws("sourceBytesToCopy", () => + AssertExtensions.Throws("sourceBytesToCopy", () => { fixed (int* sourceBase = sourceArray, destinationBase = destinationArray) { @@ -198,7 +198,7 @@ public static unsafe void MemoryCopy_Invalid() } }); - Assert.Throws("sourceBytesToCopy", () => + AssertExtensions.Throws("sourceBytesToCopy", () => { fixed (int* sourceBase = sourceArray, destinationBase = destinationArray) { @@ -221,11 +221,11 @@ public static void SetByte_Invalid() { var array = new uint[] { 0x01234567, 0x89abcdef }; - Assert.Throws("array", () => Buffer.SetByte(null, 0, 0xff)); // Array is null - Assert.Throws("array", () => Buffer.SetByte(new object[10], 0, 0xff)); // Array is not a primitive array + AssertExtensions.Throws("array", () => Buffer.SetByte(null, 0, 0xff)); // Array is null + AssertExtensions.Throws("array", () => Buffer.SetByte(new object[10], 0, 0xff)); // Array is not a primitive array - Assert.Throws("index", () => Buffer.SetByte(array, -1, 0xff)); // Index < 0 - Assert.Throws("index", () => Buffer.SetByte(array, 8, 0xff)); // Index > array.Length + AssertExtensions.Throws("index", () => Buffer.SetByte(array, -1, 0xff)); // Index < 0 + AssertExtensions.Throws("index", () => Buffer.SetByte(array, 8, 0xff)); // Index > array.Length } } } diff --git a/src/System.Runtime/tests/System/CharTests.cs b/src/System.Runtime/tests/System/CharTests.cs index 165da710d6a3..990a7b248df9 100644 --- a/src/System.Runtime/tests/System/CharTests.cs +++ b/src/System.Runtime/tests/System/CharTests.cs @@ -63,7 +63,7 @@ public static void ConvertFromUtf32(int utf32, string expected) [InlineData(int.MinValue)] public static void ConvertFromUtf32_InvalidUtf32_ThrowsArgumentOutOfRangeException(int utf32) { - Assert.Throws("utf32", () => char.ConvertFromUtf32(utf32)); + AssertExtensions.Throws("utf32", () => char.ConvertFromUtf32(utf32)); } public static IEnumerable ConvertToUtf32_String_Int_TestData() @@ -97,22 +97,22 @@ public static void ConvertToUtf32_String_Int(string s, int index, int expected) [Fact] public static void ConvertToUtf32_String_Int_Invalid() { - Assert.Throws("s", () => char.ConvertToUtf32(null, 0)); // String is null + AssertExtensions.Throws("s", () => char.ConvertToUtf32(null, 0)); // String is null - Assert.Throws("s", () => char.ConvertToUtf32("\uD800\uD800", 0)); // High, high - Assert.Throws("s", () => char.ConvertToUtf32("\uD800\uD800", 1)); // High, high - Assert.Throws("s", () => char.ConvertToUtf32("\uD800\uD7FF", 0)); // High, non-surrogate - Assert.Throws("s", () => char.ConvertToUtf32("\uD800\u0000", 0)); // High, non-surrogate + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uD800\uD800", 0)); // High, high + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uD800\uD800", 1)); // High, high + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uD800\uD7FF", 0)); // High, non-surrogate + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uD800\u0000", 0)); // High, non-surrogate - Assert.Throws("s", () => char.ConvertToUtf32("\uDC01\uD940", 0)); // Low, high - Assert.Throws("s", () => char.ConvertToUtf32("\uDC01\uD940", 1)); // Low, high - Assert.Throws("s", () => char.ConvertToUtf32("\uDD00\uDE00", 0)); // Low, low - Assert.Throws("s", () => char.ConvertToUtf32("\uDD00\uDE00", 1)); // Low, hig - Assert.Throws("s", () => char.ConvertToUtf32("\uDF01\u0000", 0)); // Low, non-surrogateh + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uDC01\uD940", 0)); // Low, high + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uDC01\uD940", 1)); // Low, high + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uDD00\uDE00", 0)); // Low, low + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uDD00\uDE00", 1)); // Low, hig + AssertExtensions.Throws("s", () => char.ConvertToUtf32("\uDF01\u0000", 0)); // Low, non-surrogateh - Assert.Throws("index", () => char.ConvertToUtf32("abcde", -1)); // Index < 0 - Assert.Throws("index", () => char.ConvertToUtf32("abcde", 5)); // Index >= string.Length - Assert.Throws("index", () => char.ConvertToUtf32("", 0)); // Index >= string.Length + AssertExtensions.Throws("index", () => char.ConvertToUtf32("abcde", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.ConvertToUtf32("abcde", 5)); // Index >= string.Length + AssertExtensions.Throws("index", () => char.ConvertToUtf32("", 0)); // Index >= string.Length } public static IEnumerable ConvertToUtf32_Char_Char_TestData() @@ -135,16 +135,16 @@ public static void ConvertToUtf32_Char_Char(char highSurrogate, char lowSurrogat [Fact] public static void ConvertToUtf32_Char_Char_Invalid() { - Assert.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\uD800')); // High, high - Assert.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\uD7FF')); // High, non-surrogate - Assert.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\u0000')); // High, non-surrogate + AssertExtensions.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\uD800')); // High, high + AssertExtensions.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\uD7FF')); // High, non-surrogate + AssertExtensions.Throws("lowSurrogate", () => char.ConvertToUtf32('\uD800', '\u0000')); // High, non-surrogate - Assert.Throws("highSurrogate", () => char.ConvertToUtf32('\uDD00', '\uDE00')); // Low, low - Assert.Throws("highSurrogate", () => char.ConvertToUtf32('\uDC01', '\uD940')); // Low, high - Assert.Throws("highSurrogate", () => char.ConvertToUtf32('\uDF01', '\u0000')); // Low, non-surrogate + AssertExtensions.Throws("highSurrogate", () => char.ConvertToUtf32('\uDD00', '\uDE00')); // Low, low + AssertExtensions.Throws("highSurrogate", () => char.ConvertToUtf32('\uDC01', '\uD940')); // Low, high + AssertExtensions.Throws("highSurrogate", () => char.ConvertToUtf32('\uDF01', '\u0000')); // Low, non-surrogate - Assert.Throws("highSurrogate", () => char.ConvertToUtf32('\u0032', '\uD7FF')); // Non-surrogate, non-surrogate - Assert.Throws("highSurrogate", () => char.ConvertToUtf32('\u0000', '\u0000')); // Non-surrogate, non-surrogate + AssertExtensions.Throws("highSurrogate", () => char.ConvertToUtf32('\u0032', '\uD7FF')); // Non-surrogate, non-surrogate + AssertExtensions.Throws("highSurrogate", () => char.ConvertToUtf32('\u0000', '\u0000')); // Non-surrogate, non-surrogate } [Theory] @@ -188,9 +188,9 @@ public static void GetNumericValue_String_Int(string s, int index, int expected) [Fact] public static void GetNumericValue_String_Int_Invalid() { - Assert.Throws("s", () => char.GetNumericValue(null, 0)); // String is null - Assert.Throws("index", () => char.GetNumericValue("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.GetNumericValue("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.GetNumericValue(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.GetNumericValue("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.GetNumericValue("abc", 3)); // Index >= string.Length } [Fact] @@ -216,9 +216,9 @@ public static void IsControl_String_Int() [Fact] public static void IsControl_String_Int_Invalid() { - Assert.Throws("s", () => char.IsControl(null, 0)); // String is null - Assert.Throws("index", () => char.IsControl("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsControl("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsControl(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsControl("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsControl("abc", 3)); // Index >= string.Length } [Fact] @@ -244,9 +244,9 @@ public static void IsDigit_String_Int() [Fact] public static void IsDigit_String_Int_Invalid() { - Assert.Throws("s", () => char.IsDigit(null, 0)); // String is null - Assert.Throws("index", () => char.IsDigit("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsDigit("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsDigit(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsDigit("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsDigit("abc", 3)); // Index >= string.Length } [Fact] @@ -288,9 +288,9 @@ public static void IsLetter_String_Int() [Fact] public static void IsLetter_String_Int_Invalid() { - Assert.Throws("s", () => char.IsLetter(null, 0)); // String is null - Assert.Throws("index", () => char.IsLetter("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsLetter("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsLetter(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsLetter("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsLetter("abc", 3)); // Index >= string.Length } [Fact] @@ -334,9 +334,9 @@ public static void IsLetterOrDigit_String_Int() [Fact] public static void IsLetterOrDigit_String_Int_Invalid() { - Assert.Throws("s", () => char.IsLetterOrDigit(null, 0)); // String is null - Assert.Throws("index", () => char.IsLetterOrDigit("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsLetterOrDigit("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsLetterOrDigit(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsLetterOrDigit("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsLetterOrDigit("abc", 3)); // Index >= string.Length } [Fact] @@ -362,9 +362,9 @@ public static void IsLower_String_Int() [Fact] public static void IsLower_String_Int_Invalid() { - Assert.Throws("s", () => char.IsLower(null, 0)); // String is null - Assert.Throws("index", () => char.IsLower("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsLower("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsLower(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsLower("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsLower("abc", 3)); // Index >= string.Length } [Fact] @@ -402,9 +402,9 @@ public static void IsNumber_String_Int() [Fact] public static void IsNumber_String_Int_Invalid() { - Assert.Throws("s", () => char.IsNumber(null, 0)); // String is null - Assert.Throws("index", () => char.IsNumber("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsNumber("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsNumber(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsNumber("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsNumber("abc", 3)); // Index >= string.Length } [Fact] @@ -450,9 +450,9 @@ public static void IsPunctuation_String_Int() [Fact] public static void IsPunctuation_String_Int_Invalid() { - Assert.Throws("s", () => char.IsPunctuation(null, 0)); // String is null - Assert.Throws("index", () => char.IsPunctuation("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsPunctuation("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsPunctuation(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsPunctuation("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsPunctuation("abc", 3)); // Index >= string.Length } [Fact] @@ -490,9 +490,9 @@ public static void IsSeparator_String_Int() [Fact] public static void IsSeparator_String_Int_Invalid() { - Assert.Throws("s", () => char.IsSeparator(null, 0)); // String is null - Assert.Throws("index", () => char.IsSeparator("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsSeparator("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsSeparator(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsSeparator("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsSeparator("abc", 3)); // Index >= string.Length } [Fact] @@ -524,9 +524,9 @@ public static void IsLowSurrogate_String_Int() [Fact] public static void IsLowSurrogate_String_Int_Invalid() { - Assert.Throws("s", () => char.IsLowSurrogate(null, 0)); // String is null - Assert.Throws("index", () => char.IsLowSurrogate("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsLowSurrogate("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsLowSurrogate(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsLowSurrogate("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsLowSurrogate("abc", 3)); // Index >= string.Length } [Fact] @@ -558,9 +558,9 @@ public static void IsHighSurrogate_String_Int() [Fact] public static void IsHighSurrogate_String_Int_Invalid() { - Assert.Throws("s", () => char.IsHighSurrogate(null, 0)); // String is null - Assert.Throws("index", () => char.IsHighSurrogate("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsHighSurrogate("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsHighSurrogate(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsHighSurrogate("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsHighSurrogate("abc", 3)); // Index >= string.Length } [Fact] @@ -592,9 +592,9 @@ public static void IsSurrogate_String_Int() [Fact] public static void IsSurrogate_String_Int_Invalid() { - Assert.Throws("s", () => char.IsSurrogate(null, 0)); // String is null - Assert.Throws("index", () => char.IsSurrogate("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsSurrogate("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsSurrogate(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsSurrogate("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsSurrogate("abc", 3)); // Index >= string.Length } [Fact] @@ -634,9 +634,9 @@ public static void IsSurrogatePair_String_Int() [Fact] public static void IsSurrogatePair_String_Int_Invalid() { - Assert.Throws("s", () => char.IsSurrogatePair(null, 0)); // String is null - Assert.Throws("index", () => char.IsSurrogatePair("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsSurrogatePair("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsSurrogatePair(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsSurrogatePair("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsSurrogatePair("abc", 3)); // Index >= string.Length } [Fact] @@ -676,9 +676,9 @@ public static void IsSymbol_String_Int() [Fact] public static void IsSymbol_String_Int_Invalid() { - Assert.Throws("s", () => char.IsSymbol(null, 0)); // String is null - Assert.Throws("index", () => char.IsSymbol("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsSymbol("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsSymbol(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsSymbol("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsSymbol("abc", 3)); // Index >= string.Length } [Fact] @@ -704,9 +704,9 @@ public static void IsUpper_String_Int() [Fact] public static void IsUpper_String_Int_Invalid() { - Assert.Throws("s", () => char.IsUpper(null, 0)); // String is null - Assert.Throws("index", () => char.IsUpper("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsUpper("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsUpper(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsUpper("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsUpper("abc", 3)); // Index >= string.Length } [Fact] @@ -757,9 +757,9 @@ public static void IsWhiteSpace_String_Int() [Fact] public static void IsWhiteSpace_String_Int_Invalid() { - Assert.Throws("s", () => char.IsWhiteSpace(null, 0)); // String is null - Assert.Throws("index", () => char.IsWhiteSpace("abc", -1)); // Index < 0 - Assert.Throws("index", () => char.IsWhiteSpace("abc", 3)); // Index >= string.Length + AssertExtensions.Throws("s", () => char.IsWhiteSpace(null, 0)); // String is null + AssertExtensions.Throws("index", () => char.IsWhiteSpace("abc", -1)); // Index < 0 + AssertExtensions.Throws("index", () => char.IsWhiteSpace("abc", 3)); // Index >= string.Length } [Fact] diff --git a/src/System.Runtime/tests/System/Collections/ObjectModel/CollectionTests.cs b/src/System.Runtime/tests/System/Collections/ObjectModel/CollectionTests.cs index 9f0bf84f3206..03120dd14e88 100644 --- a/src/System.Runtime/tests/System/Collections/ObjectModel/CollectionTests.cs +++ b/src/System.Runtime/tests/System/Collections/ObjectModel/CollectionTests.cs @@ -30,7 +30,7 @@ public static void Ctor_Empty() [Fact] public static void Ctor_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => new Collection(null)); + AssertExtensions.Throws("list", () => new Collection(null)); } [Fact] @@ -78,19 +78,19 @@ public static void Item_Get_Set_InvalidIndex_ThrowsArgumentOutOfRangeException() { var collection = new ModifiableCollection(s_intArray); - Assert.Throws("index", () => collection[-1]); - Assert.Throws("index", () => collection[s_intArray.Length]); - Assert.Throws("index", () => s_empty[0]); + AssertExtensions.Throws("index", () => collection[-1]); + AssertExtensions.Throws("index", () => collection[s_intArray.Length]); + AssertExtensions.Throws("index", () => s_empty[0]); - Assert.Throws("index", () => collection[-1] = 0); - Assert.Throws("index", () => collection[s_intArray.Length] = 0); + AssertExtensions.Throws("index", () => collection[-1] = 0); + AssertExtensions.Throws("index", () => collection[s_intArray.Length] = 0); } [Fact] public static void Item_Set_InvalidType_ThrowsArgumentException() { var collection = new Collection(new Collection(s_intArray)); - Assert.Throws("value", () => ((IList)collection)[1] = "Two"); + AssertExtensions.Throws("value", () => ((IList)collection)[1] = "Two"); } [Fact] @@ -172,8 +172,8 @@ public static void Insert_EndIndex() public static void Insert_InvalidIndex_ThrowsArgumentOutOfRangeException() { var collection = new ModifiableCollection(s_intArray); - Assert.Throws("index", () => collection.Insert(-1, 0)); - Assert.Throws("index", () => collection.Insert(s_intArray.Length + 1, 0)); + AssertExtensions.Throws("index", () => collection.Insert(-1, 0)); + AssertExtensions.Throws("index", () => collection.Insert(s_intArray.Length + 1, 0)); } [Fact] @@ -270,8 +270,8 @@ private static void VerifyRemoveAt(int index, int count, IEnumerable expect public static void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException() { var collection = new ModifiableCollection(s_intSequence); - Assert.Throws("index", () => collection.RemoveAt(-1)); - Assert.Throws("index", () => collection.RemoveAt(s_intArray.Length)); + AssertExtensions.Throws("index", () => collection.RemoveAt(-1)); + AssertExtensions.Throws("index", () => collection.RemoveAt(s_intArray.Length)); } [Fact] diff --git a/src/System.Runtime/tests/System/Collections/ObjectModel/ReadOnlyCollectionTests.cs b/src/System.Runtime/tests/System/Collections/ObjectModel/ReadOnlyCollectionTests.cs index 0e4224f8850c..07b8270bcc45 100644 --- a/src/System.Runtime/tests/System/Collections/ObjectModel/ReadOnlyCollectionTests.cs +++ b/src/System.Runtime/tests/System/Collections/ObjectModel/ReadOnlyCollectionTests.cs @@ -23,7 +23,7 @@ public class ReadOnlyCollectionTests : CollectionTestBase [Fact] public static void Ctor_NullList_ThrowsArgumentNullException() { - Assert.Throws("list", () => new ReadOnlyCollection(null)); + AssertExtensions.Throws("list", () => new ReadOnlyCollection(null)); } [Fact] @@ -55,9 +55,9 @@ public static void Item_Get() public static void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException() { var collection = new Collection(s_intArray); - Assert.Throws("index", () => collection[-1]); - Assert.Throws("index", () => collection[s_intArray.Length]); - Assert.Throws("index", () => s_empty[0]); + AssertExtensions.Throws("index", () => collection[-1]); + AssertExtensions.Throws("index", () => collection[s_intArray.Length]); + AssertExtensions.Throws("index", () => s_empty[0]); } [Fact] diff --git a/src/System.Runtime/tests/System/DateTimeOffsetTests.cs b/src/System.Runtime/tests/System/DateTimeOffsetTests.cs index 163ea26aefe7..27ca7a0c9b4b 100644 --- a/src/System.Runtime/tests/System/DateTimeOffsetTests.cs +++ b/src/System.Runtime/tests/System/DateTimeOffsetTests.cs @@ -59,7 +59,7 @@ public static void Ctor_DateTime_Invalid() Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour - 1, min.Minute, min.Second, min.Millisecond, DateTimeKind.Utc))); Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute - 1, min.Second, min.Millisecond, DateTimeKind.Utc))); Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second - 1, min.Millisecond, DateTimeKind.Utc))); - Assert.Throws("millisecond", () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, DateTimeKind.Utc))); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, DateTimeKind.Utc))); // DateTime > DateTimeOffset.MaxValue DateTimeOffset max = DateTimeOffset.MaxValue; @@ -69,7 +69,7 @@ public static void Ctor_DateTime_Invalid() Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour + 1, max.Minute, max.Second, max.Millisecond, DateTimeKind.Utc))); Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute + 1, max.Second, max.Millisecond, DateTimeKind.Utc))); Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second + 1, max.Millisecond, DateTimeKind.Utc))); - Assert.Throws("millisecond", () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, DateTimeKind.Utc))); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, DateTimeKind.Utc))); } [Fact] @@ -88,15 +88,15 @@ public static void Ctor_DateTime_TimeSpan() [Fact] public static void Ctor_DateTime_TimeSpan_Invalid() { - Assert.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromHours(15))); // Local time and non timezone timespan - Assert.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromHours(-15))); // Local time and non timezone timespan + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromHours(15))); // Local time and non timezone timespan + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromHours(-15))); // Local time and non timezone timespan - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, TimeSpan.FromHours(1))); // Local time and non zero timespan + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, TimeSpan.FromHours(1))); // Local time and non zero timespan - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes // DateTime < DateTimeOffset.MinValue DateTimeOffset min = DateTimeOffset.MinValue; @@ -106,7 +106,7 @@ public static void Ctor_DateTime_TimeSpan_Invalid() Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour - 1, min.Minute, min.Second, min.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute - 1, min.Second, min.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second - 1, min.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); - Assert.Throws("millisecond", () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, DateTimeKind.Utc), TimeSpan.Zero)); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(new DateTime(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, DateTimeKind.Utc), TimeSpan.Zero)); // DateTime > DateTimeOffset.MaxValue DateTimeOffset max = DateTimeOffset.MaxValue; @@ -116,11 +116,11 @@ public static void Ctor_DateTime_TimeSpan_Invalid() Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour + 1, max.Minute, max.Second, max.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute + 1, max.Second, max.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second + 1, max.Millisecond, DateTimeKind.Utc), TimeSpan.Zero)); - Assert.Throws("millisecond", () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, DateTimeKind.Utc), TimeSpan.Zero)); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(new DateTime(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, DateTimeKind.Utc), TimeSpan.Zero)); // Invalid offset - Assert.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromTicks(1))); - Assert.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, TimeSpan.FromTicks(1))); + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.Now, TimeSpan.FromTicks(1))); + AssertExtensions.Throws("offset", () => new DateTimeOffset(DateTime.UtcNow, TimeSpan.FromTicks(1))); } [Fact] @@ -134,16 +134,16 @@ public static void Ctor_Long_TimeSpan() [Fact] public static void Ctor_Long_TimeSpan_Invalid() { - Assert.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(0, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 - Assert.Throws("offset", () => new DateTimeOffset(0, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(0, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 - Assert.Throws("ticks", () => new DateTimeOffset(DateTimeOffset.MinValue.Ticks - 1, TimeSpan.Zero)); // Ticks < DateTimeOffset.MinValue.Ticks - Assert.Throws("ticks", () => new DateTimeOffset(DateTimeOffset.MaxValue.Ticks + 1, TimeSpan.Zero)); // Ticks > DateTimeOffset.MaxValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTimeOffset(DateTimeOffset.MinValue.Ticks - 1, TimeSpan.Zero)); // Ticks < DateTimeOffset.MinValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTimeOffset(DateTimeOffset.MaxValue.Ticks + 1, TimeSpan.Zero)); // Ticks > DateTimeOffset.MaxValue.Ticks } [Fact] @@ -156,13 +156,13 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_TimeSpan() [Fact] public static void Ctor_Int_Int_Int_Int_Int_Int_Int_TimeSpan_Invalid() { - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 // Invalid DateTime Assert.Throws(null, () => new DateTimeOffset(0, 1, 1, 1, 1, 1, 1, TimeSpan.Zero)); // Year < 1 @@ -183,8 +183,8 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_TimeSpan_Invalid() Assert.Throws(null, () => new DateTimeOffset(1, 1, 1, 1, 1, -1, 1, TimeSpan.Zero)); // Second < 0 Assert.Throws(null, () => new DateTimeOffset(1, 1, 1, 1, 1, 60, 1, TimeSpan.Zero)); // Second > 59 - Assert.Throws("millisecond", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, -1, TimeSpan.Zero)); // Millisecond < 0 - Assert.Throws("millisecond", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1000, TimeSpan.Zero)); // Millisecond > 999 + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, -1, TimeSpan.Zero)); // Millisecond < 0 + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, 1000, TimeSpan.Zero)); // Millisecond > 999 // DateTime < DateTimeOffset.MinValue DateTimeOffset min = DateTimeOffset.MinValue; @@ -194,7 +194,7 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_TimeSpan_Invalid() Assert.Throws(null, () => new DateTimeOffset(min.Year, min.Month, min.Day, min.Hour - 1, min.Minute, min.Second, min.Millisecond, TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(min.Year, min.Month, min.Day, min.Hour, min.Minute - 1, min.Second, min.Millisecond, TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second - 1, min.Millisecond, TimeSpan.Zero)); - Assert.Throws("millisecond", () => new DateTimeOffset(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, TimeSpan.Zero)); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(min.Year, min.Month, min.Day, min.Hour, min.Minute, min.Second, min.Millisecond - 1, TimeSpan.Zero)); // DateTime > DateTimeOffset.MaxValue DateTimeOffset max = DateTimeOffset.MaxValue; @@ -204,7 +204,7 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_TimeSpan_Invalid() Assert.Throws(null, () => new DateTimeOffset(max.Year, max.Month, max.Day, max.Hour + 1, max.Minute, max.Second, max.Millisecond, TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(max.Year, max.Month, max.Day, max.Hour, max.Minute + 1, max.Second, max.Millisecond, TimeSpan.Zero)); Assert.Throws(null, () => new DateTimeOffset(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second + 1, max.Millisecond, TimeSpan.Zero)); - Assert.Throws("millisecond", () => new DateTimeOffset(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, TimeSpan.Zero)); + AssertExtensions.Throws("millisecond", () => new DateTimeOffset(max.Year, max.Month, max.Day, max.Hour, max.Minute, max.Second, max.Millisecond + 1, TimeSpan.Zero)); } [Fact] @@ -217,13 +217,13 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_TimeSpan() [Fact] public static void Ctor_Int_Int_Int_Int_Int_Int_TimeSpan_Invalid() { - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, -3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, 3))); // TimeSpan is not whole minutes + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, new TimeSpan(0, 0, 0, 0, -3))); // TimeSpan is not whole minutes - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 - Assert.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, TimeSpan.FromHours(-15))); // TimeZone.Offset > 14 + AssertExtensions.Throws("offset", () => new DateTimeOffset(1, 1, 1, 1, 1, 1, TimeSpan.FromHours(15))); // TimeZone.Offset < -14 // Invalid DateTime Assert.Throws(null, () => new DateTimeOffset(0, 1, 1, 1, 1, 1, TimeSpan.Zero)); // Year < 1 @@ -335,8 +335,8 @@ public static void Add_TimeSpan(DateTimeOffset dateTimeOffset, TimeSpan timeSpan [Fact] public static void Add_TimeSpan_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MinValue.Add(TimeSpan.FromTicks(-1))); - Assert.Throws("value", () => DateTimeOffset.MaxValue.Add(TimeSpan.FromTicks(11))); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.Add(TimeSpan.FromTicks(-1))); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.Add(TimeSpan.FromTicks(11))); } public static IEnumerable AddYears_TestData() @@ -356,11 +356,11 @@ public static void AddYears(DateTimeOffset dateTimeOffset, int years, DateTimeOf [Fact] public static void AddYears_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("years", () => DateTimeOffset.Now.AddYears(10001)); - Assert.Throws("years", () => DateTimeOffset.Now.AddYears(-10001)); + AssertExtensions.Throws("years", () => DateTimeOffset.Now.AddYears(10001)); + AssertExtensions.Throws("years", () => DateTimeOffset.Now.AddYears(-10001)); - Assert.Throws("months", () => DateTimeOffset.MaxValue.AddYears(1)); - Assert.Throws("months", () => DateTimeOffset.MinValue.AddYears(-1)); + AssertExtensions.Throws("months", () => DateTimeOffset.MaxValue.AddYears(1)); + AssertExtensions.Throws("months", () => DateTimeOffset.MinValue.AddYears(-1)); } public static IEnumerable AddMonths_TestData() @@ -380,11 +380,11 @@ public static void AddMonths(DateTimeOffset dateTimeOffset, int months, DateTime [Fact] public static void AddMonths_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("months", () => DateTimeOffset.Now.AddMonths(120001)); - Assert.Throws("months", () => DateTimeOffset.Now.AddMonths(-120001)); + AssertExtensions.Throws("months", () => DateTimeOffset.Now.AddMonths(120001)); + AssertExtensions.Throws("months", () => DateTimeOffset.Now.AddMonths(-120001)); - Assert.Throws("months", () => DateTimeOffset.MaxValue.AddMonths(1)); - Assert.Throws("months", () => DateTimeOffset.MinValue.AddMonths(-1)); + AssertExtensions.Throws("months", () => DateTimeOffset.MaxValue.AddMonths(1)); + AssertExtensions.Throws("months", () => DateTimeOffset.MinValue.AddMonths(-1)); } public static IEnumerable AddDays_TestData() @@ -404,8 +404,8 @@ public static void AddDays(DateTimeOffset dateTimeOffset, double days, DateTimeO [Fact] public static void AddDays_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddDays(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddDays(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddDays(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddDays(-1)); } public static IEnumerable AddHours_TestData() @@ -425,8 +425,8 @@ public static void AddHours(DateTimeOffset dateTimeOffset, double hours, DateTim [Fact] public static void AddHours_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddHours(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddHours(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddHours(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddHours(-1)); } public static IEnumerable AddMinutes_TestData() @@ -446,8 +446,8 @@ public static void AddMinutes(DateTimeOffset dateTimeOffset, double minutes, Dat [Fact] public static void AddMinutes_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddMinutes(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddMinutes(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddMinutes(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddMinutes(-1)); } public static IEnumerable AddSeconds_TestData() @@ -467,8 +467,8 @@ public static void AddSeconds(DateTimeOffset dateTimeOffset, double seconds, Dat [Fact] public static void AddSeconds_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddSeconds(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddSeconds(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddSeconds(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddSeconds(-1)); } public static IEnumerable AddMilliseconds_TestData() @@ -488,8 +488,8 @@ public static void AddMilliseconds(DateTimeOffset dateTimeOffset, double millise [Fact] public static void AddMilliseconds_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddMilliseconds(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddMilliseconds(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddMilliseconds(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddMilliseconds(-1)); } public static IEnumerable AddTicks_TestData() @@ -509,8 +509,8 @@ public static void AddTicks(DateTimeOffset dateTimeOffset, long ticks, DateTimeO [Fact] public static void AddTicks_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTimeOffset.MaxValue.AddTicks(1)); - Assert.Throws("value", () => DateTimeOffset.MinValue.AddTicks(-1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MaxValue.AddTicks(1)); + AssertExtensions.Throws("value", () => DateTimeOffset.MinValue.AddTicks(-1)); } [Fact] @@ -624,11 +624,11 @@ public static void FromUnixTimeMilliseconds(TestTime test) [Fact] public static void FromUnixTimeMilliseconds_Invalid() { - Assert.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(-62135596800001)); // Milliseconds < DateTimeOffset.MinValue - Assert.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(253402300800000)); // Milliseconds > DateTimeOffset.MaxValue + AssertExtensions.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(-62135596800001)); // Milliseconds < DateTimeOffset.MinValue + AssertExtensions.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(253402300800000)); // Milliseconds > DateTimeOffset.MaxValue - Assert.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(long.MinValue)); // Milliseconds < DateTimeOffset.MinValue - Assert.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(long.MaxValue)); // Milliseconds > DateTimeOffset.MaxValue + AssertExtensions.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(long.MinValue)); // Milliseconds < DateTimeOffset.MinValue + AssertExtensions.Throws("milliseconds", () => DateTimeOffset.FromUnixTimeMilliseconds(long.MaxValue)); // Milliseconds > DateTimeOffset.MaxValue } [Theory] @@ -644,11 +644,11 @@ public static void FromUnixTimeSeconds(TestTime test) [Fact] public static void FromUnixTimeSeconds_Invalid() { - Assert.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(-62135596801));// Seconds < DateTimeOffset.MinValue - Assert.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(253402300800)); // Seconds > DateTimeOffset.MaxValue + AssertExtensions.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(-62135596801));// Seconds < DateTimeOffset.MinValue + AssertExtensions.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(253402300800)); // Seconds > DateTimeOffset.MaxValue - Assert.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(long.MinValue)); // Seconds < DateTimeOffset.MinValue - Assert.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(long.MaxValue)); // Seconds < DateTimeOffset.MinValue + AssertExtensions.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(long.MinValue)); // Seconds < DateTimeOffset.MinValue + AssertExtensions.Throws("seconds", () => DateTimeOffset.FromUnixTimeSeconds(long.MaxValue)); // Seconds < DateTimeOffset.MinValue } [Theory] @@ -980,14 +980,14 @@ public static void TryParseExact_String_StringArray_FormatProvider_DateTimeStyle [InlineData(DateTimeStyles.NoCurrentDateDefault)] public static void Parse_InvalidDateTimeStyle_ThrowsArgumentException(DateTimeStyles style) { - Assert.Throws("styles", () => DateTimeOffset.Parse("06/08/1990", null, style)); - Assert.Throws("styles", () => DateTimeOffset.ParseExact("06/08/1990", "Y", null, style)); + AssertExtensions.Throws("styles", () => DateTimeOffset.Parse("06/08/1990", null, style)); + AssertExtensions.Throws("styles", () => DateTimeOffset.ParseExact("06/08/1990", "Y", null, style)); DateTimeOffset dateTimeOffset = default(DateTimeOffset); - Assert.Throws("styles", () => DateTimeOffset.TryParse("06/08/1990", null, style, out dateTimeOffset)); + AssertExtensions.Throws("styles", () => DateTimeOffset.TryParse("06/08/1990", null, style, out dateTimeOffset)); Assert.Equal(default(DateTimeOffset), dateTimeOffset); - Assert.Throws("styles", () => DateTimeOffset.TryParseExact("06/08/1990", "Y", null, style, out dateTimeOffset)); + AssertExtensions.Throws("styles", () => DateTimeOffset.TryParseExact("06/08/1990", "Y", null, style, out dateTimeOffset)); Assert.Equal(default(DateTimeOffset), dateTimeOffset); } diff --git a/src/System.Runtime/tests/System/DateTimeTests.cs b/src/System.Runtime/tests/System/DateTimeTests.cs index baffadf39719..745d4ec71d77 100644 --- a/src/System.Runtime/tests/System/DateTimeTests.cs +++ b/src/System.Runtime/tests/System/DateTimeTests.cs @@ -33,8 +33,8 @@ public static void Ctor_Long() [Fact] public static void Ctor_Long_InvalidTicks_ThrowsArgumentOutOfRangeException() { - Assert.Throws("ticks", () => new DateTime(DateTime.MinValue.Ticks - 1)); // Ticks < DateTime.MinValue.Ticks - Assert.Throws("ticks", () => new DateTime(DateTime.MaxValue.Ticks + 1)); // Ticks > DateTime.MaxValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTime(DateTime.MinValue.Ticks - 1)); // Ticks < DateTime.MinValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTime(DateTime.MaxValue.Ticks + 1)); // Ticks > DateTime.MaxValue.Ticks } [Fact] @@ -46,11 +46,11 @@ public static void Ctor_Long_DateTimeKind() [Fact] public static void Ctor_Long_DateTimeKind_Invalid() { - Assert.Throws("ticks", () => new DateTime(DateTime.MinValue.Ticks - 1, DateTimeKind.Utc)); // Ticks < DateTime.MinValue.Ticks - Assert.Throws("ticks", () => new DateTime(DateTime.MaxValue.Ticks + 1, DateTimeKind.Utc)); // Ticks > DateTime.MaxValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTime(DateTime.MinValue.Ticks - 1, DateTimeKind.Utc)); // Ticks < DateTime.MinValue.Ticks + AssertExtensions.Throws("ticks", () => new DateTime(DateTime.MaxValue.Ticks + 1, DateTimeKind.Utc)); // Ticks > DateTime.MaxValue.Ticks - Assert.Throws("kind", () => new DateTime(0, DateTimeKind.Unspecified - 1)); // Invalid date time kind - Assert.Throws("kind", () => new DateTime(0, DateTimeKind.Local + 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(0, DateTimeKind.Unspecified - 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(0, DateTimeKind.Local + 1)); // Invalid date time kind } [Fact] @@ -130,8 +130,8 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_DateTimeKind_Invalid() Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, -1, DateTimeKind.Utc)); // Second < 0 Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, 60, DateTimeKind.Utc)); // Second > 59 - Assert.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, DateTimeKind.Unspecified - 1)); // Invalid date time kind - Assert.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, DateTimeKind.Local + 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, DateTimeKind.Unspecified - 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, DateTimeKind.Local + 1)); // Invalid date time kind } [Fact] @@ -162,8 +162,8 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_Invalid() Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, -1, 1)); // Second < 0 Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, 60, 1)); // Second > 59 - Assert.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, -1)); // Milisecond < 0 - Assert.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, 1000)); // Millisecond > 999 + AssertExtensions.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, -1)); // Milisecond < 0 + AssertExtensions.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, 1000)); // Millisecond > 999 } [Fact] @@ -194,11 +194,11 @@ public static void Ctor_Int_Int_Int_Int_Int_Int_Int_DateTimeKind_Invalid() Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, -1, 1, DateTimeKind.Utc)); // Second < 0 Assert.Throws(null, () => new DateTime(1, 1, 1, 1, 1, 60, 1, DateTimeKind.Utc)); // Second > 59 - Assert.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, -1, DateTimeKind.Utc)); // Millisecond < 0 - Assert.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, 1000, DateTimeKind.Utc)); // Millisecond > 999 + AssertExtensions.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, -1, DateTimeKind.Utc)); // Millisecond < 0 + AssertExtensions.Throws("millisecond", () => new DateTime(1, 1, 1, 1, 1, 1, 1000, DateTimeKind.Utc)); // Millisecond > 999 - Assert.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, 1, DateTimeKind.Unspecified - 1)); // Invalid date time kind - Assert.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, 1, DateTimeKind.Local + 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, 1, DateTimeKind.Unspecified - 1)); // Invalid date time kind + AssertExtensions.Throws("kind", () => new DateTime(1, 1, 1, 1, 1, 1, 1, DateTimeKind.Local + 1)); // Invalid date time kind } [Theory] @@ -212,8 +212,8 @@ public static void IsLeapYear(int year, bool expected) [Fact] public static void IsLeapYear_InvalidYear_ThrowsArgumentOutOfRangeException() { - Assert.Throws("year", () => DateTime.IsLeapYear(0)); - Assert.Throws("year", () => DateTime.IsLeapYear(10000)); + AssertExtensions.Throws("year", () => DateTime.IsLeapYear(0)); + AssertExtensions.Throws("year", () => DateTime.IsLeapYear(10000)); } public static IEnumerable Add_TimeSpan_TestData() @@ -233,8 +233,8 @@ public static void Add_TimeSpan(DateTime dateTime, TimeSpan timeSpan, DateTime e [Fact] public static void Add_TimeSpan_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MinValue.Add(TimeSpan.FromTicks(-1))); - Assert.Throws("value", () => DateTime.MaxValue.Add(TimeSpan.FromTicks(11))); + AssertExtensions.Throws("value", () => DateTime.MinValue.Add(TimeSpan.FromTicks(-1))); + AssertExtensions.Throws("value", () => DateTime.MaxValue.Add(TimeSpan.FromTicks(11))); } public static IEnumerable AddYears_TestData() @@ -254,11 +254,11 @@ public static void AddYears(DateTime dateTime, int years, DateTime expected) [Fact] public static void AddYears_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("years", () => DateTime.Now.AddYears(10001)); - Assert.Throws("years", () => DateTime.Now.AddYears(-10001)); + AssertExtensions.Throws("years", () => DateTime.Now.AddYears(10001)); + AssertExtensions.Throws("years", () => DateTime.Now.AddYears(-10001)); - Assert.Throws("months", () => DateTime.MaxValue.AddYears(1)); - Assert.Throws("months", () => DateTime.MinValue.AddYears(-1)); + AssertExtensions.Throws("months", () => DateTime.MaxValue.AddYears(1)); + AssertExtensions.Throws("months", () => DateTime.MinValue.AddYears(-1)); } public static IEnumerable AddMonths_TestData() @@ -278,11 +278,11 @@ public static void AddMonths(DateTime dateTime, int months, DateTime expected) [Fact] public static void AddMonths_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("months", () => DateTime.Now.AddMonths(120001)); - Assert.Throws("months", () => DateTime.Now.AddMonths(-120001)); + AssertExtensions.Throws("months", () => DateTime.Now.AddMonths(120001)); + AssertExtensions.Throws("months", () => DateTime.Now.AddMonths(-120001)); - Assert.Throws("months", () => DateTime.MaxValue.AddMonths(1)); - Assert.Throws("months", () => DateTime.MinValue.AddMonths(-1)); + AssertExtensions.Throws("months", () => DateTime.MaxValue.AddMonths(1)); + AssertExtensions.Throws("months", () => DateTime.MinValue.AddMonths(-1)); } public static IEnumerable AddDays_TestData() @@ -302,8 +302,8 @@ public static void AddDays(DateTime dateTime, double days, DateTime expected) [Fact] public static void AddDays_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddDays(1)); - Assert.Throws("value", () => DateTime.MinValue.AddDays(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddDays(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddDays(-1)); } public static IEnumerable AddHours_TestData() @@ -323,8 +323,8 @@ public static void AddHours(DateTime dateTime, double hours, DateTime expected) [Fact] public static void AddHours_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddHours(1)); - Assert.Throws("value", () => DateTime.MinValue.AddHours(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddHours(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddHours(-1)); } public static IEnumerable AddMinutes_TestData() @@ -344,8 +344,8 @@ public static void AddMinutes(DateTime dateTime, double minutes, DateTime expect [Fact] public static void AddMinutes_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddMinutes(1)); - Assert.Throws("value", () => DateTime.MinValue.AddMinutes(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddMinutes(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddMinutes(-1)); } public static IEnumerable AddSeconds_TestData() @@ -365,8 +365,8 @@ public static void AddSeconds(DateTime dateTime, double seconds, DateTime expect [Fact] public static void AddSeconds_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddSeconds(1)); - Assert.Throws("value", () => DateTime.MinValue.AddSeconds(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddSeconds(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddSeconds(-1)); } public static IEnumerable AddMilliseconds_TestData() @@ -386,8 +386,8 @@ public static void AddMilliseconds(DateTime dateTime, double milliseconds, DateT [Fact] public static void AddMilliseconds_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddMilliseconds(1)); - Assert.Throws("value", () => DateTime.MinValue.AddMilliseconds(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddMilliseconds(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddMilliseconds(-1)); } public static IEnumerable AddTicks_TestData() @@ -407,8 +407,8 @@ public static void AddTicks(DateTime dateTime, long ticks, DateTime expected) [Fact] public static void AddTicks_NewDateOutOfRange_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => DateTime.MaxValue.AddTicks(1)); - Assert.Throws("value", () => DateTime.MinValue.AddTicks(-1)); + AssertExtensions.Throws("value", () => DateTime.MaxValue.AddTicks(1)); + AssertExtensions.Throws("value", () => DateTime.MinValue.AddTicks(-1)); } [Fact] @@ -553,7 +553,7 @@ public static void Parse_Japanese() [Fact] public static void Parse_NullString_ThrowsArgumentNullException() { - Assert.Throws("s", () => DateTime.Parse(null, new MyFormatter(), DateTimeStyles.NoCurrentDateDefault)); + AssertExtensions.Throws("s", () => DateTime.Parse(null, new MyFormatter(), DateTimeStyles.NoCurrentDateDefault)); } [Fact] diff --git a/src/System.Runtime/tests/System/DecimalTests.cs b/src/System.Runtime/tests/System/DecimalTests.cs index 2a4cc082516a..85d9301a7d92 100644 --- a/src/System.Runtime/tests/System/DecimalTests.cs +++ b/src/System.Runtime/tests/System/DecimalTests.cs @@ -77,7 +77,7 @@ public static void Ctor_IntArray() [Fact] public static void Ctor_IntArray_Invalid() { - Assert.Throws("bits", () => new decimal(null)); // Bits is null + AssertExtensions.Throws("bits", () => new decimal(null)); // Bits is null Assert.Throws(null, () => new decimal(new int[3])); // Bits.Length is not 4 Assert.Throws(null, () => new decimal(new int[5])); // Bits.Length is not 4 } diff --git a/src/System.Runtime/tests/System/DelegateTests.cs b/src/System.Runtime/tests/System/DelegateTests.cs index 54e0940f1c96..818575487d34 100644 --- a/src/System.Runtime/tests/System/DelegateTests.cs +++ b/src/System.Runtime/tests/System/DelegateTests.cs @@ -131,7 +131,7 @@ public static void DynamicInvoke_MissingTypeForDefaultParameter_Succeeds() public static void DynamicInvoke_MissingTypeForNonDefaultParameter_ThrowsArgumentException() { Delegate d = new IntIntDelegate(IntIntMethod); - Assert.Throws("parameters", () => d.DynamicInvoke(7, Type.Missing)); + AssertExtensions.Throws("parameters", () => d.DynamicInvoke(7, Type.Missing)); } [Theory] diff --git a/src/System.Runtime/tests/System/EnumTests.cs b/src/System.Runtime/tests/System/EnumTests.cs index 0870ea82aacf..2a0e39f4eb98 100644 --- a/src/System.Runtime/tests/System/EnumTests.cs +++ b/src/System.Runtime/tests/System/EnumTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -338,12 +338,12 @@ public static void GetName_MultipleMatches() public static void GetName_Invalid() { Type t = typeof(SimpleEnum); - Assert.Throws("enumType", () => Enum.GetName(null, 1)); // Enum type is null - Assert.Throws("value", () => Enum.GetName(t, null)); // Value is null + AssertExtensions.Throws("enumType", () => Enum.GetName(null, 1)); // Enum type is null + AssertExtensions.Throws("value", () => Enum.GetName(t, null)); // Value is null Assert.Throws(null, () => Enum.GetName(typeof(object), 1)); // Enum type is not an enum - Assert.Throws("value", () => Enum.GetName(t, "Red")); // Value is not the type of the enum's raw data - Assert.Throws("value", () => Enum.GetName(t, (IntPtr)0)); // Value is out of range + AssertExtensions.Throws("value", () => Enum.GetName(t, "Red")); // Value is not the type of the enum's raw data + AssertExtensions.Throws("value", () => Enum.GetName(t, (IntPtr)0)); // Value is out of range } [Theory] @@ -467,8 +467,8 @@ public static void IsDefined_Invalid() { Type t = typeof(SimpleEnum); - Assert.Throws("enumType", () => Enum.IsDefined(null, 1)); // Enum type is null - Assert.Throws("value", () => Enum.IsDefined(t, null)); // Value is null + AssertExtensions.Throws("enumType", () => Enum.IsDefined(null, 1)); // Enum type is null + AssertExtensions.Throws("value", () => Enum.IsDefined(t, null)); // Value is null Assert.Throws(null, () => Enum.IsDefined(t, Int32Enum.One)); // Value is different enum type @@ -620,7 +620,7 @@ public static void HasFlag(Enum e, Enum flag, bool expected) [Fact] public static void HasFlag_Invalid() { - Assert.Throws("flag", () => Int32Enum.One.HasFlag(null)); // Flag is null + AssertExtensions.Throws("flag", () => Int32Enum.One.HasFlag(null)); // Flag is null Assert.Throws(null, () => Int32Enum.One.HasFlag((SimpleEnum)0x3000)); // Enum is not the same type as the instance } @@ -995,8 +995,8 @@ public static void GetUnderlyingType(Type enumType, Type expected) [Fact] public static void GetUnderlyingType_Invalid() { - Assert.Throws("enumType", () => Enum.GetUnderlyingType(null)); // Enum type is null - Assert.Throws("enumType", () => Enum.GetUnderlyingType(typeof(Enum))); // Enum type is simply an enum + AssertExtensions.Throws("enumType", () => Enum.GetUnderlyingType(null)); // Enum type is null + AssertExtensions.Throws("enumType", () => Enum.GetUnderlyingType(typeof(Enum))); // Enum type is simply an enum } public static IEnumerable GetNames_GetValues_TestData() @@ -1135,15 +1135,15 @@ public static void GetNames_GetValues(Type enumType, string[] expectedNames, obj [Fact] public static void GetNames_Invalid() { - Assert.Throws("enumType", () => Enum.GetNames(null)); // Enum type is null - Assert.Throws("enumType", () => Enum.GetNames(typeof(object))); // Enum type is not an enum + AssertExtensions.Throws("enumType", () => Enum.GetNames(null)); // Enum type is null + AssertExtensions.Throws("enumType", () => Enum.GetNames(typeof(object))); // Enum type is not an enum } [Fact] public static void GetValues_Invalid() { - Assert.Throws("enumType", () => Enum.GetValues(null)); // Enum type is null - Assert.Throws("enumType", () => Enum.GetValues(typeof(object))); // Enum type is not an enum + AssertExtensions.Throws("enumType", () => Enum.GetValues(null)); // Enum type is null + AssertExtensions.Throws("enumType", () => Enum.GetValues(typeof(object))); // Enum type is not an enum } public static IEnumerable ToString_Format_TestData() @@ -1499,11 +1499,11 @@ public static void Format(Type enumType, object value, string format, string exp [Fact] public static void Format_Invalid() { - Assert.Throws("enumType", () => Enum.Format(null, (Int32Enum)1, "F")); // Enum type is null - Assert.Throws("value", () => Enum.Format(typeof(SimpleEnum), null, "F")); // Value is null - Assert.Throws("format", () => Enum.Format(typeof(SimpleEnum), SimpleEnum.Red, null)); // Format is null + AssertExtensions.Throws("enumType", () => Enum.Format(null, (Int32Enum)1, "F")); // Enum type is null + AssertExtensions.Throws("value", () => Enum.Format(typeof(SimpleEnum), null, "F")); // Value is null + AssertExtensions.Throws("format", () => Enum.Format(typeof(SimpleEnum), SimpleEnum.Red, null)); // Format is null - Assert.Throws("enumType", () => Enum.Format(typeof(object), 1, "F")); // Enum type is not an enum type + AssertExtensions.Throws("enumType", () => Enum.Format(typeof(object), 1, "F")); // Enum type is not an enum type Assert.Throws(null, () => Enum.Format(typeof(SimpleEnum), (Int32Enum)1, "F")); // Value is of the wrong enum type diff --git a/src/System.Runtime/tests/System/EnumTests.netcoreapp.cs b/src/System.Runtime/tests/System/EnumTests.netcoreapp.cs index b2d7342a48c0..644d1987a1e2 100644 --- a/src/System.Runtime/tests/System/EnumTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/EnumTests.netcoreapp.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -84,7 +84,7 @@ public static IEnumerable UnsupportedEnumType_TestData() [MemberData(nameof(UnsupportedEnumType_TestData))] public static void GetName_Unsupported_ThrowsArgumentException(Type enumType, object value) { - Assert.Throws("value", () => Enum.GetName(enumType, value)); + AssertExtensions.Throws("value", () => Enum.GetName(enumType, value)); } [Theory] diff --git a/src/System.Runtime/tests/System/GCTests.cs b/src/System.Runtime/tests/System/GCTests.cs index 27e809266d39..dc9989e83b66 100644 --- a/src/System.Runtime/tests/System/GCTests.cs +++ b/src/System.Runtime/tests/System/GCTests.cs @@ -16,11 +16,11 @@ public static partial class GCTests [Fact] public static void AddMemoryPressure_InvalidBytesAllocated_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bytesAllocated", () => GC.AddMemoryPressure(-1)); // Bytes allocated < 0 + AssertExtensions.Throws("bytesAllocated", () => GC.AddMemoryPressure(-1)); // Bytes allocated < 0 if (s_is32Bits) { - Assert.Throws("pressure", () => GC.AddMemoryPressure((long)int.MaxValue + 1)); // Bytes allocated > int.MaxValue on 32 bit platforms + AssertExtensions.Throws("pressure", () => GC.AddMemoryPressure((long)int.MaxValue + 1)); // Bytes allocated > int.MaxValue on 32 bit platforms } } @@ -36,7 +36,7 @@ public static void Collect_Int() [Fact] public static void Collect_Int_NegativeGeneration_ThrowsArgumentOutOfRangeException() { - Assert.Throws("generation", () => GC.Collect(-1)); // Generation < 0 + AssertExtensions.Throws("generation", () => GC.Collect(-1)); // Generation < 0 } [Theory] @@ -59,8 +59,8 @@ public static void Collect_Int_GCCollectionMode(GCCollectionMode mode) [Fact] public static void Collect_NegativeGenerationCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("generation", () => GC.Collect(-1, GCCollectionMode.Default)); - Assert.Throws("generation", () => GC.Collect(-1, GCCollectionMode.Default, false)); + AssertExtensions.Throws("generation", () => GC.Collect(-1, GCCollectionMode.Default)); + AssertExtensions.Throws("generation", () => GC.Collect(-1, GCCollectionMode.Default, false)); } [Theory] @@ -268,7 +268,7 @@ private class TestObject [Fact] public static void SuppressFinalizer_NullObject_ThrowsArgumentNullException() { - Assert.Throws("obj", () => GC.SuppressFinalize(null)); // Obj is null + AssertExtensions.Throws("obj", () => GC.SuppressFinalize(null)); // Obj is null } [Fact] @@ -280,7 +280,7 @@ public static void ReRegisterForFinalize() [Fact] public static void ReRegisterFoFinalize_NullObject_ThrowsArgumentNullException() { - Assert.Throws("obj", () => GC.ReRegisterForFinalize(null)); // Obj is null + AssertExtensions.Throws("obj", () => GC.ReRegisterForFinalize(null)); // Obj is null } private class ReRegisterForFinalizeTest @@ -323,17 +323,17 @@ public void Dispose() [Fact] public static void CollectionCount_NegativeGeneration_ThrowsArgumentOutOfRangeException() { - Assert.Throws("generation", () => GC.CollectionCount(-1)); // Generation < 0 + AssertExtensions.Throws("generation", () => GC.CollectionCount(-1)); // Generation < 0 } [Fact] public static void RemoveMemoryPressure_InvalidBytesAllocated_ThrowsArgumentOutOfRangeException() { - Assert.Throws("bytesAllocated", () => GC.RemoveMemoryPressure(-1)); // Bytes allocated < 0 + AssertExtensions.Throws("bytesAllocated", () => GC.RemoveMemoryPressure(-1)); // Bytes allocated < 0 if (s_is32Bits) { - Assert.Throws("bytesAllocated", () => GC.RemoveMemoryPressure((long)int.MaxValue + 1)); // Bytes allocated > int.MaxValue on 32 bit platforms + AssertExtensions.Throws("bytesAllocated", () => GC.RemoveMemoryPressure((long)int.MaxValue + 1)); // Bytes allocated > int.MaxValue on 32 bit platforms } } diff --git a/src/System.Runtime/tests/System/GuidTests.cs b/src/System.Runtime/tests/System/GuidTests.cs index 23d4bf2cd469..d28cae054fb1 100644 --- a/src/System.Runtime/tests/System/GuidTests.cs +++ b/src/System.Runtime/tests/System/GuidTests.cs @@ -38,7 +38,7 @@ public static void Ctor_ByteArray(byte[] b, Guid expected) [Fact] public static void Ctor_NullByteArray_ThrowsArgumentNullException() { - Assert.Throws("b", () => new Guid((byte[])null)); + AssertExtensions.Throws("b", () => new Guid((byte[])null)); } [Theory] @@ -82,7 +82,7 @@ public static void Ctor_Int_Short_Short_ByteArray(int a, short b, short c, byte[ [Fact] public static void Ctor_Int_Short_Short_ByteArray_NullByteArray_ThrowsArgumentNullException() { - Assert.Throws("d", () => new Guid(0, 0, 0, null)); + AssertExtensions.Throws("d", () => new Guid(0, 0, 0, null)); } [Fact] diff --git a/src/System.Runtime/tests/System/LazyOfTMetadataTests.cs b/src/System.Runtime/tests/System/LazyOfTMetadataTests.cs index b1d7cb1cee4d..d72425c896e5 100644 --- a/src/System.Runtime/tests/System/LazyOfTMetadataTests.cs +++ b/src/System.Runtime/tests/System/LazyOfTMetadataTests.cs @@ -36,8 +36,8 @@ public static void Ctor_TMetadata_LazyThreadSaftetyMode() [Fact] public static void Ctor_TMetadata_LazyThreadSaftetyMode_InvalidMode_ThrowsArgumentOutOfRangeException() { - Assert.Throws("mode", () => new Lazy("test", LazyThreadSafetyMode.None - 1)); // Invalid mode - Assert.Throws("mode", () => new Lazy("test", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid mode + AssertExtensions.Throws("mode", () => new Lazy("test", LazyThreadSafetyMode.None - 1)); // Invalid mode + AssertExtensions.Throws("mode", () => new Lazy("test", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid mode } [Fact] @@ -50,7 +50,7 @@ public static void Ctor_ValueFactory_TMetadata() [Fact] public static void Ctor_ValueFactory_TMetadata_NullValueFactory_ThrowsArgumentNullException() { - Assert.Throws("valueFactory", () => new Lazy(null, "test")); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null, "test")); // Value factory is null } [Fact] @@ -63,7 +63,7 @@ public static void Ctor_ValueFactory_TMetadata_Bool() [Fact] public static void Ctor_ValueFactory_TMetadata_Bool_NullValueFactory_ThrowsArgumentNullException() { - Assert.Throws("valueFactory", () => new Lazy(null, "test", false)); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null, "test", false)); // Value factory is null } [Fact] @@ -76,10 +76,10 @@ public static void Ctor_ValueFactory_TMetadata_LazyThreadSaftetyMode() [Fact] public static void Ctor_ValueFactory_TMetadata_LazyThreadSaftetyMode_Invalid() { - Assert.Throws("valueFactory", () => new Lazy(null, "test", LazyThreadSafetyMode.PublicationOnly)); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null, "test", LazyThreadSafetyMode.PublicationOnly)); // Value factory is null - Assert.Throws("mode", () => new Lazy(() => 42, "test", LazyThreadSafetyMode.None - 1)); // Invalid mode - Assert.Throws("mode", () => new Lazy(() => 42, "test", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid mode + AssertExtensions.Throws("mode", () => new Lazy(() => 42, "test", LazyThreadSafetyMode.None - 1)); // Invalid mode + AssertExtensions.Throws("mode", () => new Lazy(() => 42, "test", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid mode } public static void VerifyLazy(Lazy lazy, T expectedValue, TMetadata expectedMetadata) diff --git a/src/System.Runtime/tests/System/LazyTests.cs b/src/System.Runtime/tests/System/LazyTests.cs index db6a4b0322b5..65c2190ac8cb 100644 --- a/src/System.Runtime/tests/System/LazyTests.cs +++ b/src/System.Runtime/tests/System/LazyTests.cs @@ -47,7 +47,7 @@ public static void Ctor_ValueFactory() [Fact] public static void Ctor_ValueFactory_NullValueFactory_ThrowsArguentNullException() { - Assert.Throws("valueFactory", () => new Lazy(null)); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null)); // Value factory is null } [Fact] @@ -60,8 +60,8 @@ public static void Ctor_LazyThreadSafetyMode() [Fact] public static void Ctor_LazyThreadSafetyMode_InvalidMode_ThrowsArgumentOutOfRangeException() { - Assert.Throws("mode", () => new Lazy(LazyThreadSafetyMode.None - 1)); // Invalid thread saftety mode - Assert.Throws("mode", () => new Lazy(LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid thread saftety mode + AssertExtensions.Throws("mode", () => new Lazy(LazyThreadSafetyMode.None - 1)); // Invalid thread saftety mode + AssertExtensions.Throws("mode", () => new Lazy(LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid thread saftety mode } [Theory] @@ -76,7 +76,7 @@ public static void Ctor_ValueFactor_Bool(bool isThreadSafe) [Fact] public static void Ctor_ValueFactory_Bool_NullValueFactory_ThrowsArgumentNullException() { - Assert.Throws("valueFactory", () => new Lazy(null, false)); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null, false)); // Value factory is null } [Fact] @@ -92,10 +92,10 @@ public static void Ctor_ValueFactor_LazyThreadSafetyMode() [Fact] public static void Ctor_ValueFactor_LazyThreadSafetyMode_Invalid() { - Assert.Throws("valueFactory", () => new Lazy(null, LazyThreadSafetyMode.PublicationOnly)); // Value factory is null + AssertExtensions.Throws("valueFactory", () => new Lazy(null, LazyThreadSafetyMode.PublicationOnly)); // Value factory is null - Assert.Throws("mode", () => new Lazy(() => "foo", LazyThreadSafetyMode.None - 1)); // Invalid thread saftety mode - Assert.Throws("mode", () => new Lazy(() => "foof", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid thread saftety mode + AssertExtensions.Throws("mode", () => new Lazy(() => "foo", LazyThreadSafetyMode.None - 1)); // Invalid thread saftety mode + AssertExtensions.Throws("mode", () => new Lazy(() => "foof", LazyThreadSafetyMode.ExecutionAndPublication + 1)); // Invalid thread saftety mode } [Fact] diff --git a/src/System.Runtime/tests/System/NullableTests.cs b/src/System.Runtime/tests/System/NullableTests.cs index 2d4e6a008221..1f0a0dd58327 100644 --- a/src/System.Runtime/tests/System/NullableTests.cs +++ b/src/System.Runtime/tests/System/NullableTests.cs @@ -91,7 +91,7 @@ public static void GetUnderlyingType(Type nullableType, Type expected) [Fact] public static void GetUnderlyingType_NullType_ThrowsArgumentNullException() { - Assert.Throws("nullableType", () => Nullable.GetUnderlyingType((Type)null)); + AssertExtensions.Throws("nullableType", () => Nullable.GetUnderlyingType((Type)null)); } public static IEnumerable Compare_Equals_TestData() diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs index 89b6430f4a80..650d5741f659 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs @@ -77,7 +77,7 @@ public static void Clone() [Fact] public static void GetAssemblyName() { - Assert.Throws("assemblyFile", () => AssemblyName.GetAssemblyName(null)); + AssertExtensions.Throws("assemblyFile", () => AssemblyName.GetAssemblyName(null)); Assert.Throws(() => AssemblyName.GetAssemblyName(string.Empty)); Assert.Throws(() => AssemblyName.GetAssemblyName("IDontExist")); @@ -98,4 +98,4 @@ public static void ReferenceMatchesDefinition(AssemblyName a1, AssemblyName a2, Assert.Equal(expected, AssemblyName.ReferenceMatchesDefinition(a1, a2)); } } -} \ No newline at end of file +} diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index ec1c70c1ad52..325318511e85 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -62,7 +62,7 @@ public static void Equality(Assembly assembly1, Assembly assembly2, bool expecte [Fact] public static void GetAssembly_Nullery() { - Assert.Throws("type", () => Assembly.GetAssembly(null)); + AssertExtensions.Throws("type", () => Assembly.GetAssembly(null)); } public static IEnumerable GetAssembly_TestData() @@ -666,4 +666,4 @@ public static void AssemblyGetTypeDefaultsToItself() } } -internal class G { } \ No newline at end of file +internal class G { } diff --git a/src/System.Runtime/tests/System/Reflection/CustomAttribute_Named_Typed_ArgumentTests.cs b/src/System.Runtime/tests/System/Reflection/CustomAttribute_Named_Typed_ArgumentTests.cs index 653a736bad7b..5902cc4d0de5 100644 --- a/src/System.Runtime/tests/System/Reflection/CustomAttribute_Named_Typed_ArgumentTests.cs +++ b/src/System.Runtime/tests/System/Reflection/CustomAttribute_Named_Typed_ArgumentTests.cs @@ -13,7 +13,7 @@ public static class CustomAttribute_Named_Typed_ArgumentTests [Fact] public static void Test_CustomAttributeNamedTypedArgument_Constructor() { - Assert.Throws("memberInfo", () => new CustomAttributeNamedArgument(null, null)); + AssertExtensions.Throws("memberInfo", () => new CustomAttributeNamedArgument(null, null)); MethodInfo m = typeof(CustomAttribute_Named_Typed_ArgumentTests).GetMethod("MyMethod"); foreach (CustomAttributeData cad in CustomAttributeData.GetCustomAttributes(m)) @@ -87,4 +87,4 @@ internal class MyClass public string str; #pragma warning restore 0649 } -} \ No newline at end of file +} diff --git a/src/System.Runtime/tests/System/Runtime/CompilerServices/ConditionalWeakTableTests.cs b/src/System.Runtime/tests/System/Runtime/CompilerServices/ConditionalWeakTableTests.cs index ff57d52968d9..0dd128363c4f 100644 --- a/src/System.Runtime/tests/System/Runtime/CompilerServices/ConditionalWeakTableTests.cs +++ b/src/System.Runtime/tests/System/Runtime/CompilerServices/ConditionalWeakTableTests.cs @@ -17,10 +17,10 @@ public static void InvalidArgs_Throws() var cwt = new ConditionalWeakTable(); object ignored; - Assert.Throws("key", () => cwt.Add(null, new object())); // null key - Assert.Throws("key", () => cwt.TryGetValue(null, out ignored)); // null key - Assert.Throws("key", () => cwt.Remove(null)); // null key - Assert.Throws("createValueCallback", () => cwt.GetValue(new object(), null)); // null delegate + AssertExtensions.Throws("key", () => cwt.Add(null, new object())); // null key + AssertExtensions.Throws("key", () => cwt.TryGetValue(null, out ignored)); // null key + AssertExtensions.Throws("key", () => cwt.Remove(null)); // null key + AssertExtensions.Throws("createValueCallback", () => cwt.GetValue(new object(), null)); // null delegate object key = new object(); cwt.Add(key, key); diff --git a/src/System.Runtime/tests/System/Runtime/CompilerServices/RuntimeHelpersTests.netcoreapp.cs b/src/System.Runtime/tests/System/Runtime/CompilerServices/RuntimeHelpersTests.netcoreapp.cs index c7e64d26f729..7619ec009239 100644 --- a/src/System.Runtime/tests/System/Runtime/CompilerServices/RuntimeHelpersTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/Runtime/CompilerServices/RuntimeHelpersTests.netcoreapp.cs @@ -42,7 +42,7 @@ private static void FillStack(int depth) [Fact] public static void GetUninitializedObject_InvalidArguments_ThrowsException() { - Assert.Throws("type", () => RuntimeHelpers.GetUninitializedObject(null)); + AssertExtensions.Throws("type", () => RuntimeHelpers.GetUninitializedObject(null)); Assert.Throws(() => RuntimeHelpers.GetUninitializedObject(typeof(string))); // special type Assert.Throws(() => RuntimeHelpers.GetUninitializedObject(typeof(System.IO.Stream))); // abstract type diff --git a/src/System.Runtime/tests/System/Runtime/ExceptionServices/ExceptionDispatchInfoTests.netcoreapp.cs b/src/System.Runtime/tests/System/Runtime/ExceptionServices/ExceptionDispatchInfoTests.netcoreapp.cs index 4c7b955d5ea6..17bd10d69a3e 100644 --- a/src/System.Runtime/tests/System/Runtime/ExceptionServices/ExceptionDispatchInfoTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/Runtime/ExceptionServices/ExceptionDispatchInfoTests.netcoreapp.cs @@ -12,7 +12,7 @@ public partial class ExceptionDispatchInfoTests [Fact] public static void StaticThrow_NullArgument_ThrowArgumentNullException() { - Assert.Throws("source", () => ExceptionDispatchInfo.Throw(null)); + AssertExtensions.Throws("source", () => ExceptionDispatchInfo.Throw(null)); } [Fact] diff --git a/src/System.Runtime/tests/System/String.SplitTests.cs b/src/System.Runtime/tests/System/String.SplitTests.cs index 174b3c817e23..2932923f1e2d 100644 --- a/src/System.Runtime/tests/System/String.SplitTests.cs +++ b/src/System.Runtime/tests/System/String.SplitTests.cs @@ -15,13 +15,13 @@ public static void SplitInvalidCount() const int count = -1; const StringSplitOptions options = StringSplitOptions.None; - Assert.Throws("count", () => value.Split(',', count)); - Assert.Throws("count", () => value.Split(',', count, options)); - Assert.Throws("count", () => value.Split(new[] { ',' }, count)); - Assert.Throws("count", () => value.Split(new[] { ',' }, count, options)); - Assert.Throws("count", () => value.Split(",", count)); - Assert.Throws("count", () => value.Split(",", count, options)); - Assert.Throws("count", () => value.Split(new[] { "," }, count, options)); + AssertExtensions.Throws("count", () => value.Split(',', count)); + AssertExtensions.Throws("count", () => value.Split(',', count, options)); + AssertExtensions.Throws("count", () => value.Split(new[] { ',' }, count)); + AssertExtensions.Throws("count", () => value.Split(new[] { ',' }, count, options)); + AssertExtensions.Throws("count", () => value.Split(",", count)); + AssertExtensions.Throws("count", () => value.Split(",", count, options)); + AssertExtensions.Throws("count", () => value.Split(new[] { "," }, count, options)); } [Fact] diff --git a/src/System.Runtime/tests/System/StringTests.cs b/src/System.Runtime/tests/System/StringTests.cs index 42919cfb7d1a..81fe52408631 100644 --- a/src/System.Runtime/tests/System/StringTests.cs +++ b/src/System.Runtime/tests/System/StringTests.cs @@ -88,17 +88,17 @@ public static unsafe void Ctor_CharPtr_Int_Int_Invalid() { var valueArray = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '\0' }; - Assert.Throws("startIndex", () => + AssertExtensions.Throws("startIndex", () => { fixed (char* value = valueArray) { new string(value, -1, 8); } // Start index < 0 }); - Assert.Throws("length", () => + AssertExtensions.Throws("length", () => { fixed (char* value = valueArray) { new string(value, 0, -1); } // Length < 0 }); - Assert.Throws("ptr", () => new string((char*)null, 0, 1)); // null ptr with non-zero length + AssertExtensions.Throws("ptr", () => new string((char*)null, 0, 1)); // null ptr with non-zero length } [Theory] @@ -122,7 +122,7 @@ public static void Ctor_Char_Int(char c, int count, string expected) [Fact] public static void Ctor_Char_Int_Negative_Count_ThrowsArgumentOutOfRangeException() { - Assert.Throws("count", () => new string('a', -1)); // Count < 0 + AssertExtensions.Throws("count", () => new string('a', -1)); // Count < 0 } [Theory] @@ -154,12 +154,12 @@ public static void Ctor_CharArray_Invalid() { var value = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' }; - Assert.Throws("value", () => new string((char[])null, 0, 0)); + AssertExtensions.Throws("value", () => new string((char[])null, 0, 0)); - Assert.Throws("startIndex", () => new string(value, 0, 9)); // Length > array length - Assert.Throws("length", () => new string(value, 5, -1)); // Length < 0 - Assert.Throws("startIndex", () => new string(value, -1, 1)); // Start Index < 0 - Assert.Throws("startIndex", () => new string(value, 6, 5)); // Walks off array + AssertExtensions.Throws("startIndex", () => new string(value, 0, 9)); // Length > array length + AssertExtensions.Throws("length", () => new string(value, 5, -1)); // Length < 0 + AssertExtensions.Throws("startIndex", () => new string(value, -1, 1)); // Start Index < 0 + AssertExtensions.Throws("startIndex", () => new string(value, 6, 5)); // Walks off array } [Theory] @@ -402,13 +402,13 @@ public static void Concat_Objects(object[] values, string expected) [Fact] public static void Concat_Invalid() { - Assert.Throws("values", () => string.Concat((IEnumerable)null)); // Values is null - Assert.Throws("values", () => string.Concat((IEnumerable)null)); // Generic overload - Assert.Throws("values", () => string.Concat(null)); // Values is null + AssertExtensions.Throws("values", () => string.Concat((IEnumerable)null)); // Values is null + AssertExtensions.Throws("values", () => string.Concat((IEnumerable)null)); // Generic overload + AssertExtensions.Throws("values", () => string.Concat(null)); // Values is null - Assert.Throws("args", () => string.Concat((object[])null)); // Values is null - Assert.Throws("values", () => string.Concat(null)); // Values is null - Assert.Throws("values", () => string.Concat(null)); // Values is null + AssertExtensions.Throws("args", () => string.Concat((object[])null)); // Values is null + AssertExtensions.Throws("values", () => string.Concat(null)); // Values is null + AssertExtensions.Throws("values", () => string.Concat(null)); // Values is null } [Theory] @@ -431,19 +431,19 @@ public static void CopyTo_Invalid() string s = "Hello"; char[] dst = new char[10]; - Assert.Throws("destination", () => s.CopyTo(0, null, 0, 0)); // Dst is null + AssertExtensions.Throws("destination", () => s.CopyTo(0, null, 0, 0)); // Dst is null - Assert.Throws("sourceIndex", () => s.CopyTo(-1, dst, 0, 0)); // Source index < 0 - Assert.Throws("destinationIndex", () => s.CopyTo(0, dst, -1, 0)); // Destination index < 0 + AssertExtensions.Throws("sourceIndex", () => s.CopyTo(-1, dst, 0, 0)); // Source index < 0 + AssertExtensions.Throws("destinationIndex", () => s.CopyTo(0, dst, -1, 0)); // Destination index < 0 - Assert.Throws("destinationIndex", () => s.CopyTo(0, dst, dst.Length, 1)); // Destination index > dst.Length + AssertExtensions.Throws("destinationIndex", () => s.CopyTo(0, dst, dst.Length, 1)); // Destination index > dst.Length - Assert.Throws("count", () => s.CopyTo(0, dst, 0, -1)); // Count < 0 + AssertExtensions.Throws("count", () => s.CopyTo(0, dst, 0, -1)); // Count < 0 // Source index + count > string.Length - Assert.Throws("sourceIndex", () => s.CopyTo(s.Length, dst, 0, 1)); - Assert.Throws("sourceIndex", () => s.CopyTo(s.Length - 1, dst, 0, 2)); - Assert.Throws("sourceIndex", () => s.CopyTo(0, dst, 0, 6)); + AssertExtensions.Throws("sourceIndex", () => s.CopyTo(s.Length, dst, 0, 1)); + AssertExtensions.Throws("sourceIndex", () => s.CopyTo(s.Length - 1, dst, 0, 2)); + AssertExtensions.Throws("sourceIndex", () => s.CopyTo(0, dst, 0, 6)); } [Theory] @@ -659,30 +659,30 @@ public static void Compare_LongString() public static void Compare_Invalid() { // Invalid comparison type - Assert.Throws("comparisonType", () => string.Compare("a", "bb", StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => string.Compare("a", "bb", StringComparison.OrdinalIgnoreCase + 1)); - Assert.Throws("comparisonType", () => string.Compare("a", 0, "bb", 0, 1, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => string.Compare("a", 0, "bb", 0, 1, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => string.Compare("a", "bb", StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => string.Compare("a", "bb", StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => string.Compare("a", 0, "bb", 0, 1, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => string.Compare("a", 0, "bb", 0, 1, StringComparison.OrdinalIgnoreCase + 1)); // IndexA < 0 - Assert.Throws("offset1", () => string.Compare("a", -1, "bb", 0, 1)); - Assert.Throws("indexA", () => string.Compare("a", -1, "bb", 0, 1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("offset1", () => string.Compare("a", -1, "bb", 0, 1)); + AssertExtensions.Throws("indexA", () => string.Compare("a", -1, "bb", 0, 1, StringComparison.CurrentCulture)); // IndexA > stringA.Length - Assert.Throws("length1", () => string.Compare("a", 2, "bb", 0, 1)); - Assert.Throws("indexA", () => string.Compare("a", 2, "bb", 0, 1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("length1", () => string.Compare("a", 2, "bb", 0, 1)); + AssertExtensions.Throws("indexA", () => string.Compare("a", 2, "bb", 0, 1, StringComparison.CurrentCulture)); // IndexB < 0 - Assert.Throws("offset2", () => string.Compare("a", 0, "bb", -1, 1)); - Assert.Throws("indexB", () => string.Compare("a", 0, "bb", -1, 1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("offset2", () => string.Compare("a", 0, "bb", -1, 1)); + AssertExtensions.Throws("indexB", () => string.Compare("a", 0, "bb", -1, 1, StringComparison.CurrentCulture)); // IndexB > stringB.Length - Assert.Throws("length2", () => string.Compare("a", 0, "bb", 3, 0)); - Assert.Throws("indexB", () => string.Compare("a", 0, "bb", 3, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("length2", () => string.Compare("a", 0, "bb", 3, 0)); + AssertExtensions.Throws("indexB", () => string.Compare("a", 0, "bb", 3, 0, StringComparison.CurrentCulture)); // Length < 0 - Assert.Throws("length1", () => string.Compare("a", 0, "bb", 0, -1)); - Assert.Throws("length", () => string.Compare("a", 0, "bb", 0, -1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("length1", () => string.Compare("a", 0, "bb", 0, -1)); + AssertExtensions.Throws("length", () => string.Compare("a", 0, "bb", 0, -1, StringComparison.CurrentCulture)); // There is a subtle behavior difference between the string.Compare that accepts a StringComparison parameter, // and the one that does not. The former includes short-circuiting logic for nulls BEFORE the length/ @@ -695,38 +695,38 @@ public static void Compare_Invalid() // These tests ensure that the argument validation stays in order. // Compare accepting StringComparison - Assert.Throws("comparisonType", () => string.Compare(null, 0, null, 0, 0, StringComparison.CurrentCulture - 1)); // comparisonType should be validated before null short-circuiting... + AssertExtensions.Throws("comparisonType", () => string.Compare(null, 0, null, 0, 0, StringComparison.CurrentCulture - 1)); // comparisonType should be validated before null short-circuiting... // Tests to ensure null is short-circuited before validating the arguments are in the Compare() theory - Assert.Throws("length", () => string.Compare("foo", -1, "foo", -1, -1, StringComparison.CurrentCulture)); // length should be validated before indexA/indexB - Assert.Throws("indexA", () => string.Compare("foo", -1, "foo", -1, 3, StringComparison.CurrentCulture)); // then indexA - Assert.Throws("indexB", () => string.Compare("foo", 0, "foo", -1, 3, StringComparison.CurrentCulture)); // then indexB + AssertExtensions.Throws("length", () => string.Compare("foo", -1, "foo", -1, -1, StringComparison.CurrentCulture)); // length should be validated before indexA/indexB + AssertExtensions.Throws("indexA", () => string.Compare("foo", -1, "foo", -1, 3, StringComparison.CurrentCulture)); // then indexA + AssertExtensions.Throws("indexB", () => string.Compare("foo", 0, "foo", -1, 3, StringComparison.CurrentCulture)); // then indexB // Then the optimization where we short-circuit if strA == strB && indexA == indexB, or length == 0, is tested in the Compare() theory. // Compare not accepting StringComparison - Assert.Throws("length1", () => string.Compare(null, -1, null, -1, -1)); - Assert.Throws("length2", () => string.Compare(null, 0, "bar", 4, 0)); - Assert.Throws("offset1", () => string.Compare(null, -1, null, -1, 0)); - Assert.Throws("offset2", () => string.Compare(null, 0, null, -1, 0)); - Assert.Throws("string1", () => string.Compare(null, 1, null, 1, 1)); - Assert.Throws("string2", () => string.Compare("bar", 1, null, 1, 1)); + AssertExtensions.Throws("length1", () => string.Compare(null, -1, null, -1, -1)); + AssertExtensions.Throws("length2", () => string.Compare(null, 0, "bar", 4, 0)); + AssertExtensions.Throws("offset1", () => string.Compare(null, -1, null, -1, 0)); + AssertExtensions.Throws("offset2", () => string.Compare(null, 0, null, -1, 0)); + AssertExtensions.Throws("string1", () => string.Compare(null, 1, null, 1, 1)); + AssertExtensions.Throws("string2", () => string.Compare("bar", 1, null, 1, 1)); } [Fact] public static void CompareOrdinal_Invalid() { // IndexA < 0 or IndexA > strA.Length - Assert.Throws("indexA", () => string.CompareOrdinal("a", -1, "bb", 0, 0)); - Assert.Throws("indexA", () => string.CompareOrdinal("a", 6, "bb", 0, 0)); + AssertExtensions.Throws("indexA", () => string.CompareOrdinal("a", -1, "bb", 0, 0)); + AssertExtensions.Throws("indexA", () => string.CompareOrdinal("a", 6, "bb", 0, 0)); // IndexB < 0 or IndexB > strB.Length - Assert.Throws("indexB", () => string.CompareOrdinal("a", 0, "bb", -1, 0)); // IndexB < 0 - Assert.Throws("indexB", () => string.CompareOrdinal("a", 0, "bb", 3, 0)); // IndexB > strB.Length + AssertExtensions.Throws("indexB", () => string.CompareOrdinal("a", 0, "bb", -1, 0)); // IndexB < 0 + AssertExtensions.Throws("indexB", () => string.CompareOrdinal("a", 0, "bb", 3, 0)); // IndexB > strB.Length // We must validate arguments before any short-circuiting is done (besides for nulls) - Assert.Throws("indexA", () => string.CompareOrdinal("foo", -1, "foo", -1, 0)); // then indexA - Assert.Throws("indexB", () => string.CompareOrdinal("foo", 0, "foo", -1, 0)); // then indexB - Assert.Throws("indexA", () => string.CompareOrdinal("foo", 4, "foo", 4, 0)); // indexA > strA.Length first - Assert.Throws("indexB", () => string.CompareOrdinal("foo", 3, "foo", 4, 0)); // then indexB > strB.Length + AssertExtensions.Throws("indexA", () => string.CompareOrdinal("foo", -1, "foo", -1, 0)); // then indexA + AssertExtensions.Throws("indexB", () => string.CompareOrdinal("foo", 0, "foo", -1, 0)); // then indexB + AssertExtensions.Throws("indexA", () => string.CompareOrdinal("foo", 4, "foo", 4, 0)); // indexA > strA.Length first + AssertExtensions.Throws("indexB", () => string.CompareOrdinal("foo", 3, "foo", 4, 0)); // then indexB > strB.Length } [Fact] @@ -757,7 +757,7 @@ public static void Contains(string s, string value, bool expected) [Fact] public static void Contains_NullValue_ThrowsArgumentNullException() { - Assert.Throws("value", () => "foo".Contains(null)); + AssertExtensions.Throws("value", () => "foo".Contains(null)); } [Theory] @@ -848,12 +848,12 @@ public static void EndsWith_NullInStrings(StringComparison comparison) public static void EndsWith_Invalid() { // Value is null - Assert.Throws("value", () => "foo".EndsWith(null)); - Assert.Throws("value", () => "foo".EndsWith(null, StringComparison.CurrentCulture)); + AssertExtensions.Throws("value", () => "foo".EndsWith(null)); + AssertExtensions.Throws("value", () => "foo".EndsWith(null, StringComparison.CurrentCulture)); // Invalid comparison type - Assert.Throws("comparisonType", () => "foo".EndsWith("", StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => "foo".EndsWith("", StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => "foo".EndsWith("", StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => "foo".EndsWith("", StringComparison.OrdinalIgnoreCase + 1)); } @@ -1075,8 +1075,8 @@ public static void Equals(string s1, object obj, StringComparison comparisonType public static void Equals_InvalidComparisonType_ThrowsArgumentOutOfRangeException(StringComparison comparisonType) { // Invalid comparison type - Assert.Throws("comparisonType", () => string.Equals("a", "b", comparisonType)); - Assert.Throws("comparisonType", () => "a".Equals("a", comparisonType)); + AssertExtensions.Throws("comparisonType", () => string.Equals("a", "b", comparisonType)); + AssertExtensions.Throws("comparisonType", () => "a".Equals("a", comparisonType)); } [Fact] @@ -1100,22 +1100,22 @@ public static void Format_Invalid() var obj4 = new object(); // Format is null - Assert.Throws("format", () => string.Format(null, obj1)); - Assert.Throws("format", () => string.Format(null, obj1, obj2)); - Assert.Throws("format", () => string.Format(null, obj1, obj2, obj3)); - Assert.Throws("format", () => string.Format(null, obj1, obj2, obj3, obj4)); + AssertExtensions.Throws("format", () => string.Format(null, obj1)); + AssertExtensions.Throws("format", () => string.Format(null, obj1, obj2)); + AssertExtensions.Throws("format", () => string.Format(null, obj1, obj2, obj3)); + AssertExtensions.Throws("format", () => string.Format(null, obj1, obj2, obj3, obj4)); - Assert.Throws("format", () => string.Format(formatter, null, obj1)); - Assert.Throws("format", () => string.Format(formatter, null, obj1, obj2)); - Assert.Throws("format", () => string.Format(formatter, null, obj1, obj2, obj3)); + AssertExtensions.Throws("format", () => string.Format(formatter, null, obj1)); + AssertExtensions.Throws("format", () => string.Format(formatter, null, obj1, obj2)); + AssertExtensions.Throws("format", () => string.Format(formatter, null, obj1, obj2, obj3)); // Args is null - Assert.Throws("args", () => string.Format("", null)); - Assert.Throws("args", () => string.Format(formatter, "", null)); + AssertExtensions.Throws("args", () => string.Format("", null)); + AssertExtensions.Throws("args", () => string.Format(formatter, "", null)); // Args and format are null - Assert.Throws("format", () => string.Format(null, (object[])null)); - Assert.Throws("format", () => string.Format(formatter, null, null)); + AssertExtensions.Throws("format", () => string.Format(null, (object[])null)); + AssertExtensions.Throws("format", () => string.Format(formatter, null, null)); // Format has value < 0 Assert.Throws(() => string.Format("{-1}", obj1)); @@ -1440,45 +1440,45 @@ public static void IndexOf_CyrillicE() public static void IndexOf_Invalid() { // Value is null - Assert.Throws("value", () => "foo".IndexOf(null)); - Assert.Throws("value", () => "foo".IndexOf(null, 0)); - Assert.Throws("value", () => "foo".IndexOf(null, 0, 0)); - Assert.Throws("value", () => "foo".IndexOf(null, 0, StringComparison.CurrentCulture)); - Assert.Throws("value", () => "foo".IndexOf(null, 0, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("value", () => "foo".IndexOf(null)); + AssertExtensions.Throws("value", () => "foo".IndexOf(null, 0)); + AssertExtensions.Throws("value", () => "foo".IndexOf(null, 0, 0)); + AssertExtensions.Throws("value", () => "foo".IndexOf(null, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("value", () => "foo".IndexOf(null, 0, 0, StringComparison.CurrentCulture)); // Start index < 0 - Assert.Throws("startIndex", () => "foo".IndexOf("o", -1)); - Assert.Throws("startIndex", () => "foo".IndexOf('o', -1)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", -1, 0)); - Assert.Throws("startIndex", () => "foo".IndexOf('o', -1, 0)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", -1, StringComparison.CurrentCulture)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", -1, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", -1)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf('o', -1)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", -1, 0)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf('o', -1, 0)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", -1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", -1, 0, StringComparison.CurrentCulture)); // Start index > string.Length - Assert.Throws("startIndex", () => "foo".IndexOf("o", 4)); - Assert.Throws("startIndex", () => "foo".IndexOf('o', 4)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", 4, 0)); - Assert.Throws("startIndex", () => "foo".IndexOf('o', 4, 0)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", 4, 0, StringComparison.CurrentCulture)); - Assert.Throws("startIndex", () => "foo".IndexOf("o", 4, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", 4)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf('o', 4)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", 4, 0)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf('o', 4, 0)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", 4, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => "foo".IndexOf("o", 4, 0, StringComparison.CurrentCulture)); // Count < 0 - Assert.Throws("count", () => "foo".IndexOf("o", 0, -1)); - Assert.Throws("count", () => "foo".IndexOf('o', 0, -1)); - Assert.Throws("count", () => "foo".IndexOf("o", 0, -1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("count", () => "foo".IndexOf("o", 0, -1)); + AssertExtensions.Throws("count", () => "foo".IndexOf('o', 0, -1)); + AssertExtensions.Throws("count", () => "foo".IndexOf("o", 0, -1, StringComparison.CurrentCulture)); // Count > string.Length - Assert.Throws("count", () => "foo".IndexOf("o", 0, 4)); - Assert.Throws("count", () => "foo".IndexOf('o', 0, 4)); - Assert.Throws("count", () => "foo".IndexOf("o", 0, 4, StringComparison.CurrentCulture)); + AssertExtensions.Throws("count", () => "foo".IndexOf("o", 0, 4)); + AssertExtensions.Throws("count", () => "foo".IndexOf('o', 0, 4)); + AssertExtensions.Throws("count", () => "foo".IndexOf("o", 0, 4, StringComparison.CurrentCulture)); // Invalid comparison type - Assert.Throws("comparisonType", () => "foo".IndexOf("o", StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => "foo".IndexOf("o", StringComparison.OrdinalIgnoreCase + 1)); - Assert.Throws("comparisonType", () => "foo".IndexOf("o", 0, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => "foo".IndexOf("o", 0, StringComparison.OrdinalIgnoreCase + 1)); - Assert.Throws("comparisonType", () => "foo".IndexOf("o", 0, 0, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => "foo".IndexOf("o", 0, 0, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", 0, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", 0, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", 0, 0, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => "foo".IndexOf("o", 0, 0, StringComparison.OrdinalIgnoreCase + 1)); } [Theory] @@ -1526,7 +1526,7 @@ public static void IndexOfAny_InvalidStartIndex_ThrowsArgumentOutOfRangeExceptio [InlineData(2, 2)] public static void IndexOfAny_InvalidCount_ThrowsArgumentOutOfRangeException(int startIndex, int count) { - Assert.Throws("count", () => "foo".IndexOfAny(new char[] { 'o' }, startIndex, count)); + AssertExtensions.Throws("count", () => "foo".IndexOfAny(new char[] { 'o' }, startIndex, count)); } [Theory] @@ -1546,10 +1546,10 @@ public static void Insert(string s, int startIndex, string value, string expecte [Fact] public static void Insert_Invalid() { - Assert.Throws("value", () => "Hello".Insert(0, null)); // Value is null + AssertExtensions.Throws("value", () => "Hello".Insert(0, null)); // Value is null - Assert.Throws("startIndex", () => "Hello".Insert(-1, "!")); // Start index < 0 - Assert.Throws("startIndex", () => "Hello".Insert(6, "!")); // Start index > string.length + AssertExtensions.Throws("startIndex", () => "Hello".Insert(-1, "!")); // Start index < 0 + AssertExtensions.Throws("startIndex", () => "Hello".Insert(6, "!")); // Start index > string.length } [Theory] @@ -1625,16 +1625,16 @@ public static void Join_StringArray(string separator, string[] values, int start [Fact] public static void Join_String_NullValues_ThrowsArgumentNullException() { - Assert.Throws("value", () => string.Join("$$", null)); - Assert.Throws("value", () => string.Join("$$", null, 0, 0)); - Assert.Throws("values", () => string.Join("|", (IEnumerable)null)); - Assert.Throws("values", () => string.Join("|", (IEnumerable)null)); // Generic overload + AssertExtensions.Throws("value", () => string.Join("$$", null)); + AssertExtensions.Throws("value", () => string.Join("$$", null, 0, 0)); + AssertExtensions.Throws("values", () => string.Join("|", (IEnumerable)null)); + AssertExtensions.Throws("values", () => string.Join("|", (IEnumerable)null)); // Generic overload } [Fact] public static void Join_String_NegativeCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("count", () => string.Join("$$", new string[] { "Foo" }, 0, -1)); + AssertExtensions.Throws("count", () => string.Join("$$", new string[] { "Foo" }, 0, -1)); } [Theory] @@ -1646,7 +1646,7 @@ public static void Join_String_NegativeCount_ThrowsArgumentOutOfRangeException() [InlineData(-1, 0)] public static void Join_String_InvalidStartIndexCount_ThrowsArgumentOutOfRangeException(int startIndex, int count) { - Assert.Throws("startIndex", () => string.Join("$$", new string[] { "Foo" }, startIndex, count)); + AssertExtensions.Throws("startIndex", () => string.Join("$$", new string[] { "Foo" }, startIndex, count)); } public static IEnumerable Join_ObjectArray_TestData() @@ -1689,8 +1689,8 @@ public static void Join_ObjectArray_WithNullIssue(string separator, object[] val [Fact] public static void Join_ObjectArray_Null_ThrowsArgumentNullException() { - Assert.Throws("values", () => string.Join("$$", (object[])null)); - Assert.Throws("values", () => string.Join("--", (IEnumerable)null)); + AssertExtensions.Throws("values", () => string.Join("$$", (object[])null)); + AssertExtensions.Throws("values", () => string.Join("--", (IEnumerable)null)); } [Theory] @@ -1781,45 +1781,45 @@ public static void LastIndexOf_Invalid() string s = "foo"; // Value is null - Assert.Throws("value", () => s.LastIndexOf(null)); - Assert.Throws("value", () => s.LastIndexOf(null, StringComparison.CurrentCulture)); - Assert.Throws("value", () => s.LastIndexOf(null, 0)); - Assert.Throws("value", () => s.LastIndexOf(null, 0, 0)); - Assert.Throws("value", () => s.LastIndexOf(null, 0, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("value", () => s.LastIndexOf(null)); + AssertExtensions.Throws("value", () => s.LastIndexOf(null, StringComparison.CurrentCulture)); + AssertExtensions.Throws("value", () => s.LastIndexOf(null, 0)); + AssertExtensions.Throws("value", () => s.LastIndexOf(null, 0, 0)); + AssertExtensions.Throws("value", () => s.LastIndexOf(null, 0, 0, StringComparison.CurrentCulture)); // Start index < 0 - Assert.Throws("startIndex", () => s.LastIndexOf('a', -1)); - Assert.Throws("startIndex", () => s.LastIndexOf('a', -1, 0)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", -1)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", -1, StringComparison.CurrentCulture)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", -1, 0)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", -1, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf('a', -1)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf('a', -1, 0)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", -1)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", -1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", -1, 0)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", -1, 0, StringComparison.CurrentCulture)); // Start index > string.Length - Assert.Throws("startIndex", () => s.LastIndexOf('a', s.Length + 1)); - Assert.Throws("startIndex", () => s.LastIndexOf('a', s.Length + 1, 0)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, StringComparison.CurrentCulture)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, 0)); - Assert.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, 0, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf('a', s.Length + 1)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf('a', s.Length + 1, 0)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, 0)); + AssertExtensions.Throws("startIndex", () => s.LastIndexOf("a", s.Length + 1, 0, StringComparison.CurrentCulture)); // Count < 0 - Assert.Throws("count", () => s.LastIndexOf('a', 0, -1)); - Assert.Throws("count", () => s.LastIndexOf("a", 0, -1)); - Assert.Throws("count", () => s.LastIndexOf("a", 0, -1, StringComparison.CurrentCulture)); + AssertExtensions.Throws("count", () => s.LastIndexOf('a', 0, -1)); + AssertExtensions.Throws("count", () => s.LastIndexOf("a", 0, -1)); + AssertExtensions.Throws("count", () => s.LastIndexOf("a", 0, -1, StringComparison.CurrentCulture)); // Start index - count + 1 < 0 - Assert.Throws("count", () => s.LastIndexOf('a', 0, s.Length + 2)); - Assert.Throws("count", () => s.LastIndexOf("a", 0, s.Length + 2)); - Assert.Throws("count", () => s.LastIndexOf("a", 0, s.Length + 2, StringComparison.CurrentCulture)); + AssertExtensions.Throws("count", () => s.LastIndexOf('a', 0, s.Length + 2)); + AssertExtensions.Throws("count", () => s.LastIndexOf("a", 0, s.Length + 2)); + AssertExtensions.Throws("count", () => s.LastIndexOf("a", 0, s.Length + 2, StringComparison.CurrentCulture)); // Invalid comparison type - Assert.Throws("comparisonType", () => s.LastIndexOf("a", StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => s.LastIndexOf("a", StringComparison.OrdinalIgnoreCase + 1)); - Assert.Throws("comparisonType", () => s.LastIndexOf("a", 0, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => s.LastIndexOf("a", 0, StringComparison.OrdinalIgnoreCase + 1)); - Assert.Throws("comparisonType", () => s.LastIndexOf("a", 0, 0, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => s.LastIndexOf("a", 0, 0, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", 0, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", 0, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", 0, 0, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => s.LastIndexOf("a", 0, 0, StringComparison.OrdinalIgnoreCase + 1)); } [Fact] @@ -1904,19 +1904,19 @@ public static void LastIndexOfAny_Invalid() Assert.Throws(() => "foo".LastIndexOfAny(null, 0, 0)); // Start index < 0 - Assert.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, -1)); - Assert.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, -1, 0)); + AssertExtensions.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, -1)); + AssertExtensions.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, -1, 0)); // Start index > string.Length - Assert.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 4)); - Assert.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 4, 0)); + AssertExtensions.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 4)); + AssertExtensions.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 4, 0)); // Count < 0 or count > string.Length - Assert.Throws("count", () => "foo".LastIndexOfAny(new char[] { 'o' }, 0, -1)); - Assert.Throws("count", () => "foo".LastIndexOfAny(new char[] { 'o' }, 0, 4)); + AssertExtensions.Throws("count", () => "foo".LastIndexOfAny(new char[] { 'o' }, 0, -1)); + AssertExtensions.Throws("count", () => "foo".LastIndexOfAny(new char[] { 'o' }, 0, 4)); // Start index + count > string.Length - Assert.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 3, 1)); + AssertExtensions.Throws("startIndex", () => "foo".LastIndexOfAny(new char[] { 'o' }, 3, 1)); } [Theory] @@ -1936,7 +1936,7 @@ public static void PadLeft(string s, int totalWidth, char paddingChar, string ex [Fact] public static void PadLeft_NegativeTotalWidth_ThrowsArgumentOutOfRangeException() { - Assert.Throws("totalWidth", () => "".PadLeft(-1, '.')); + AssertExtensions.Throws("totalWidth", () => "".PadLeft(-1, '.')); } [Theory] @@ -1956,7 +1956,7 @@ public static void PadRight(string s, int totalWidth, char paddingChar, string e [Fact] public static void PadRight_NegativeTotalWidth_ThrowsArgumentOutOfRangeException() { - Assert.Throws("totalWidth", () => "".PadRight(-1, '.')); + AssertExtensions.Throws("totalWidth", () => "".PadRight(-1, '.')); } [Theory] @@ -1981,19 +1981,19 @@ public static void Remove_Invalid() string s = "Hello"; // Start index < 0 - Assert.Throws("startIndex", () => s.Remove(-1)); - Assert.Throws("startIndex", () => s.Remove(-1, 0)); + AssertExtensions.Throws("startIndex", () => s.Remove(-1)); + AssertExtensions.Throws("startIndex", () => s.Remove(-1, 0)); // Start index >= string.Length - Assert.Throws("startIndex", () => s.Remove(s.Length)); + AssertExtensions.Throws("startIndex", () => s.Remove(s.Length)); // Count < 0 - Assert.Throws("count", () => s.Remove(0, -1)); + AssertExtensions.Throws("count", () => s.Remove(0, -1)); // Start index + count > string.Length - Assert.Throws("count", () => s.Remove(0, s.Length + 1)); - Assert.Throws("count", () => s.Remove(s.Length + 1, 0)); - Assert.Throws("count", () => s.Remove(s.Length, 1)); + AssertExtensions.Throws("count", () => s.Remove(0, s.Length + 1)); + AssertExtensions.Throws("count", () => s.Remove(s.Length + 1, 0)); + AssertExtensions.Throws("count", () => s.Remove(s.Length, 1)); } [Theory] @@ -2049,7 +2049,7 @@ public void Replace_NullOldValue_ThrowsArgumentNullException() [Fact] public void Replace_EmptyOldValue_ThrowsArgumentException() { - Assert.Throws("oldValue", () => "Hello".Replace("", "l")); + AssertExtensions.Throws("oldValue", () => "Hello".Replace("", "l")); } [Theory] @@ -2148,15 +2148,15 @@ public static void StartsWith_Invalid() string s = "Hello"; // Value is null - Assert.Throws("value", () => s.StartsWith(null)); - Assert.Throws("value", () => s.StartsWith(null, StringComparison.CurrentCultureIgnoreCase)); + AssertExtensions.Throws("value", () => s.StartsWith(null)); + AssertExtensions.Throws("value", () => s.StartsWith(null, StringComparison.CurrentCultureIgnoreCase)); - Assert.Throws("value", () => s.StartsWith(null, StringComparison.Ordinal)); - Assert.Throws("value", () => s.StartsWith(null, StringComparison.OrdinalIgnoreCase)); + AssertExtensions.Throws("value", () => s.StartsWith(null, StringComparison.Ordinal)); + AssertExtensions.Throws("value", () => s.StartsWith(null, StringComparison.OrdinalIgnoreCase)); // Invalid comparison type - Assert.Throws("comparisonType", () => s.StartsWith("H", StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => s.StartsWith("H", StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => s.StartsWith("H", StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => s.StartsWith("H", StringComparison.OrdinalIgnoreCase + 1)); } [Theory] @@ -2178,20 +2178,20 @@ public static void Substring(string s, int startIndex, int length, string expect public static void Substring_Invalid() { // Start index < 0 - Assert.Throws("startIndex", () => "foo".Substring(-1)); - Assert.Throws("startIndex", () => "foo".Substring(-1, 0)); + AssertExtensions.Throws("startIndex", () => "foo".Substring(-1)); + AssertExtensions.Throws("startIndex", () => "foo".Substring(-1, 0)); // Start index > string.Length - Assert.Throws("startIndex", () => "foo".Substring(4)); - Assert.Throws("startIndex", () => "foo".Substring(4, 0)); + AssertExtensions.Throws("startIndex", () => "foo".Substring(4)); + AssertExtensions.Throws("startIndex", () => "foo".Substring(4, 0)); // Length < 0 or length > string.Length - Assert.Throws("length", () => "foo".Substring(0, -1)); - Assert.Throws("length", () => "foo".Substring(0, 4)); + AssertExtensions.Throws("length", () => "foo".Substring(0, -1)); + AssertExtensions.Throws("length", () => "foo".Substring(0, 4)); // Start index + length > string.Length - Assert.Throws("length", () => "foo".Substring(3, 2)); - Assert.Throws("length", () => "foo".Substring(2, 2)); + AssertExtensions.Throws("length", () => "foo".Substring(3, 2)); + AssertExtensions.Throws("length", () => "foo".Substring(2, 2)); } [Theory] @@ -2212,16 +2212,16 @@ public static void ToCharArray(string s, int startIndex, int length, char[] expe public static void ToCharArray_Invalid() { // StartIndex < 0 or startIndex > string.Length - Assert.Throws("startIndex", () => "foo".ToCharArray(-1, 0)); - Assert.Throws("startIndex", () => "foo".ToCharArray(4, 0)); // Start index > string.Length + AssertExtensions.Throws("startIndex", () => "foo".ToCharArray(-1, 0)); + AssertExtensions.Throws("startIndex", () => "foo".ToCharArray(4, 0)); // Start index > string.Length // Length < 0 or length > string.Length - Assert.Throws("length", () => "foo".ToCharArray(0, -1)); - Assert.Throws("startIndex", () => "foo".ToCharArray(0, 4)); + AssertExtensions.Throws("length", () => "foo".ToCharArray(0, -1)); + AssertExtensions.Throws("startIndex", () => "foo".ToCharArray(0, 4)); // StartIndex + length > string.Length - Assert.Throws("startIndex", () => "foo".ToCharArray(3, 1)); - Assert.Throws("startIndex", () => "foo".ToCharArray(2, 2)); + AssertExtensions.Throws("startIndex", () => "foo".ToCharArray(3, 1)); + AssertExtensions.Throws("startIndex", () => "foo".ToCharArray(2, 2)); } [Theory] @@ -2536,16 +2536,16 @@ public static void CompareTest(string s1, string s2, string cultureName, bool ig [Fact] public static void CompareNegativeTest() { - Assert.Throws("culture", () => String.Compare("a", "b", false, null)); + AssertExtensions.Throws("culture", () => String.Compare("a", "b", false, null)); - Assert.Throws("options", () => String.Compare("a", "b", CultureInfo.InvariantCulture, (CompareOptions) 7891)); - Assert.Throws("culture", () => String.Compare("a", "b", null, CompareOptions.None)); + AssertExtensions.Throws("options", () => String.Compare("a", "b", CultureInfo.InvariantCulture, (CompareOptions) 7891)); + AssertExtensions.Throws("culture", () => String.Compare("a", "b", null, CompareOptions.None)); - Assert.Throws("culture", () => String.Compare("a", 0, "b", 0, 1, false, null)); - Assert.Throws("length1", () => String.Compare("a", 10,"b", 0, 1, false, CultureInfo.InvariantCulture)); - Assert.Throws("length2", () => String.Compare("a", 1, "b", 10,1, false, CultureInfo.InvariantCulture)); - Assert.Throws("offset1", () => String.Compare("a",-1, "b", 1 ,1, false, CultureInfo.InvariantCulture)); - Assert.Throws("offset2", () => String.Compare("a", 1, "b",-1 ,1, false, CultureInfo.InvariantCulture)); + AssertExtensions.Throws("culture", () => String.Compare("a", 0, "b", 0, 1, false, null)); + AssertExtensions.Throws("length1", () => String.Compare("a", 10,"b", 0, 1, false, CultureInfo.InvariantCulture)); + AssertExtensions.Throws("length2", () => String.Compare("a", 1, "b", 10,1, false, CultureInfo.InvariantCulture)); + AssertExtensions.Throws("offset1", () => String.Compare("a",-1, "b", 1 ,1, false, CultureInfo.InvariantCulture)); + AssertExtensions.Throws("offset2", () => String.Compare("a", 1, "b",-1 ,1, false, CultureInfo.InvariantCulture)); } [Theory] @@ -2560,8 +2560,8 @@ public static void CasingTest(string lowerForm, string upperForm, string culture [Fact] public static void CasingNegativeTest() { - Assert.Throws("culture", () => "".ToLower(null)); - Assert.Throws("culture", () => "".ToUpper(null)); + AssertExtensions.Throws("culture", () => "".ToLower(null)); + AssertExtensions.Throws("culture", () => "".ToUpper(null)); } [Theory] @@ -2576,8 +2576,8 @@ public static void StartEndWithTest(string source, string start, string end, str [Fact] public static void StartEndNegativeTest() { - Assert.Throws("value", () => "".StartsWith(null, true, null)); - Assert.Throws("value", () => "".EndsWith(null, true, null)); + AssertExtensions.Throws("value", () => "".StartsWith(null, true, null)); + AssertExtensions.Throws("value", () => "".EndsWith(null, true, null)); } [Fact] diff --git a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs index 1f1e07288558..146a466e0c17 100644 --- a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs @@ -95,22 +95,22 @@ public static void Join_Char_ObjectArray(char separator, object[] values, string [Fact] public static void Join_Char_NullValues_ThrowsArgumentNullException() { - Assert.Throws("value", () => string.Join('|', (string[])null)); - Assert.Throws("value", () => string.Join('|', (string[])null, 0, 0)); - Assert.Throws("values", () => string.Join('|', (object[])null)); - Assert.Throws("values", () => string.Join('|', (IEnumerable)null)); + AssertExtensions.Throws("value", () => string.Join('|', (string[])null)); + AssertExtensions.Throws("value", () => string.Join('|', (string[])null, 0, 0)); + AssertExtensions.Throws("values", () => string.Join('|', (object[])null)); + AssertExtensions.Throws("values", () => string.Join('|', (IEnumerable)null)); } [Fact] public static void Join_Char_NegativeStartIndex_ThrowsArgumentOutOfRangeException() { - Assert.Throws("startIndex", () => string.Join('|', new string[] { "Foo" }, -1, 0)); + AssertExtensions.Throws("startIndex", () => string.Join('|', new string[] { "Foo" }, -1, 0)); } [Fact] public static void Join_Char_NegativeCount_ThrowsArgumentOutOfRangeException() { - Assert.Throws("count", () => string.Join('|', new string[] { "Foo" }, 0, -1)); + AssertExtensions.Throws("count", () => string.Join('|', new string[] { "Foo" }, 0, -1)); } [Theory] @@ -122,7 +122,7 @@ public static void Join_Char_NegativeCount_ThrowsArgumentOutOfRangeException() [InlineData(-1, 0)] public static void Join_Char_InvalidStartIndexCount_ThrowsArgumentOutOfRangeException(int startIndex, int count) { - Assert.Throws("startIndex", () => string.Join('|', new string[] { "Foo" }, startIndex, count)); + AssertExtensions.Throws("startIndex", () => string.Join('|', new string[] { "Foo" }, startIndex, count)); } public static IEnumerable Replace_StringComparison_TestData() diff --git a/src/System.Runtime/tests/System/Text/StringBuilderTests.cs b/src/System.Runtime/tests/System/Text/StringBuilderTests.cs index 2d3ce1551aab..aec6a6ec808e 100644 --- a/src/System.Runtime/tests/System/Text/StringBuilderTests.cs +++ b/src/System.Runtime/tests/System/Text/StringBuilderTests.cs @@ -41,7 +41,7 @@ public static void Ctor_Int() [Fact] public static void Ctor_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new StringBuilder(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new StringBuilder(-1)); // Capacity < 0 } [Fact] @@ -59,10 +59,10 @@ public static void Ctor_Int_Int() [Fact] public static void Ctor_Int_Int_Invalid() { - Assert.Throws("capacity", () => new StringBuilder(-1, 1)); // Capacity < 0 - Assert.Throws("maxCapacity", () => new StringBuilder(0, 0)); // MaxCapacity < 1 + AssertExtensions.Throws("capacity", () => new StringBuilder(-1, 1)); // Capacity < 0 + AssertExtensions.Throws("maxCapacity", () => new StringBuilder(0, 0)); // MaxCapacity < 1 - Assert.Throws("capacity", () => new StringBuilder(2, 1)); // Capacity > maxCapacity + AssertExtensions.Throws("capacity", () => new StringBuilder(2, 1)); // Capacity > maxCapacity } [Theory] @@ -96,7 +96,7 @@ public static void Ctor_String_Int(string value) [Fact] public static void Ctor_String_Int_NegativeCapacity_ThrowsArgumentOutOfRangeException() { - Assert.Throws("capacity", () => new StringBuilder("", -1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => new StringBuilder("", -1)); // Capacity < 0 } [Theory] @@ -119,12 +119,12 @@ public static void Ctor_String_Int_Int_Int(string value, int startIndex, int len [Fact] public static void Ctor_String_Int_Int_Int_Invalid() { - Assert.Throws("startIndex", () => new StringBuilder("foo", -1, 0, 0)); // Start index < 0 - Assert.Throws("length", () => new StringBuilder("foo", 0, -1, 0)); // Length < 0 - Assert.Throws("capacity", () => new StringBuilder("foo", 0, 0, -1)); // Capacity < 0 + AssertExtensions.Throws("startIndex", () => new StringBuilder("foo", -1, 0, 0)); // Start index < 0 + AssertExtensions.Throws("length", () => new StringBuilder("foo", 0, -1, 0)); // Length < 0 + AssertExtensions.Throws("capacity", () => new StringBuilder("foo", 0, 0, -1)); // Capacity < 0 - Assert.Throws("length", () => new StringBuilder("foo", 4, 0, 0)); // Start index + length > builder.Length - Assert.Throws("length", () => new StringBuilder("foo", 3, 1, 0)); // Start index + length > builder.Length + AssertExtensions.Throws("length", () => new StringBuilder("foo", 4, 0, 0)); // Start index + length > builder.Length + AssertExtensions.Throws("length", () => new StringBuilder("foo", 3, 1, 0)); // Start index + length > builder.Length } [Fact] @@ -152,8 +152,8 @@ public static void Item_Get_Set_InvalidIndex() Assert.Throws(() => builder[-1]); // Index < 0 Assert.Throws(() => builder[5]); // Index >= string.Length - Assert.Throws("index", () => builder[-1] = 'a'); // Index < 0 - Assert.Throws("index", () => builder[5] = 'a'); // Index >= string.Length + AssertExtensions.Throws("index", () => builder[-1] = 'a'); // Index < 0 + AssertExtensions.Throws("index", () => builder[5] = 'a'); // Index >= string.Length } [Fact] @@ -179,9 +179,9 @@ public static void Capacity_Set_Invalid_ThrowsArgumentOutOfRangeException() { var builder = new StringBuilder(10, 10); builder.Append("Hello"); - Assert.Throws("value", () => builder.Capacity = -1); // Capacity < 0 - Assert.Throws("value", () => builder.Capacity = builder.MaxCapacity + 1); // Capacity > builder.MaxCapacity - Assert.Throws("value", () => builder.Capacity = builder.Length - 1); // Capacity < builder.Length + AssertExtensions.Throws("value", () => builder.Capacity = -1); // Capacity < 0 + AssertExtensions.Throws("value", () => builder.Capacity = builder.MaxCapacity + 1); // Capacity > builder.MaxCapacity + AssertExtensions.Throws("value", () => builder.Capacity = builder.Length - 1); // Capacity < builder.Length } [Fact] @@ -204,8 +204,8 @@ public static void Length_Set_InvalidValue_ThrowsArgumentOutOfRangeException() var builder = new StringBuilder(10, 10); builder.Append("Hello"); - Assert.Throws("value", () => builder.Length = -1); // Value < 0 - Assert.Throws("value", () => builder.Length = builder.MaxCapacity + 1); // Value > builder.MaxCapacity + AssertExtensions.Throws("value", () => builder.Length = -1); // Value < 0 + AssertExtensions.Throws("value", () => builder.Length = builder.MaxCapacity + 1); // Value > builder.MaxCapacity } [Theory] @@ -505,7 +505,7 @@ public static void Append_Char(string original, char value, int repeatCount, str public static void Append_Char_NegativeRepeatCount_ThrowsArgumentOutOfRangeException() { var builder = new StringBuilder(0, 5); - Assert.Throws("repeatCount", () => builder.Append('a', -1)); + AssertExtensions.Throws("repeatCount", () => builder.Append('a', -1)); } [Fact] @@ -549,7 +549,7 @@ public static unsafe void Append_CharPointer_NegativeValueCount_ThrowsArgumentOu var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("valueCount", () => + AssertExtensions.Throws("valueCount", () => { fixed (char* value = new char[0]) { builder.Append(value, -1); } }); @@ -596,7 +596,7 @@ public static void Append_String(string original, string value, int startIndex, public static void Append_String_NullValueNonZeroStartIndexCount_ThrowsArgumentNullException() { var builder = new StringBuilder(); - Assert.Throws("value", () => builder.Append((string)null, 1, 1)); + AssertExtensions.Throws("value", () => builder.Append((string)null, 1, 1)); } [Theory] @@ -606,14 +606,14 @@ public static void Append_String_NullValueNonZeroStartIndexCount_ThrowsArgumentN public static void Append_String_InvalidIndexPlusCount_ThrowsArgumentOutOfRangeException(string value, int startIndex, int count) { var builder = new StringBuilder(); - Assert.Throws("startIndex", () => builder.Append(value, startIndex, count)); + AssertExtensions.Throws("startIndex", () => builder.Append(value, startIndex, count)); } [Fact] public static void Append_String_NegativeCount_ThrowsArgumentOutOfRangeException() { var builder = new StringBuilder(); - Assert.Throws("count", () => builder.Append("", 0, -1)); + AssertExtensions.Throws("count", () => builder.Append("", 0, -1)); } [Fact] @@ -659,16 +659,16 @@ public static void Append_CharArray_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("value", () => builder.Append((char[])null, 1, 1)); // Value is null, startIndex > 0 and count > 0 + AssertExtensions.Throws("value", () => builder.Append((char[])null, 1, 1)); // Value is null, startIndex > 0 and count > 0 - Assert.Throws("startIndex", () => builder.Append(new char[0], -1, 0)); // Start index < 0 - Assert.Throws("charCount", () => builder.Append(new char[0], 0, -1)); // Count < 0 + AssertExtensions.Throws("startIndex", () => builder.Append(new char[0], -1, 0)); // Start index < 0 + AssertExtensions.Throws("charCount", () => builder.Append(new char[0], 0, -1)); // Count < 0 - Assert.Throws("charCount", () => builder.Append(new char[5], 6, 0)); // Start index + count > value.Length - Assert.Throws("charCount", () => builder.Append(new char[5], 5, 1)); // Start index + count > value.Length + AssertExtensions.Throws("charCount", () => builder.Append(new char[5], 6, 0)); // Start index + count > value.Length + AssertExtensions.Throws("charCount", () => builder.Append(new char[5], 5, 1)); // Start index + count > value.Length - Assert.Throws("valueCount", () => builder.Append(new char[] { 'a' })); // New length > builder.MaxCapacity - Assert.Throws("valueCount", () => builder.Append(new char[] { 'a' }, 0, 1)); // New length > builder.MaxCapacity + AssertExtensions.Throws("valueCount", () => builder.Append(new char[] { 'a' })); // New length > builder.MaxCapacity + AssertExtensions.Throws("valueCount", () => builder.Append(new char[] { 'a' }, 0, 1)); // New length > builder.MaxCapacity } [Fact] @@ -678,16 +678,16 @@ public static void Append_CharArray_InvalidDesktop() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("value", () => builder.Append((char[])null, 1, 1)); // Value is null, startIndex > 0 and count > 0 + AssertExtensions.Throws("value", () => builder.Append((char[])null, 1, 1)); // Value is null, startIndex > 0 and count > 0 - Assert.Throws("startIndex", () => builder.Append(new char[0], -1, 0)); // Start index < 0 - Assert.Throws("count", () => builder.Append(new char[0], 0, -1)); // Count < 0 + AssertExtensions.Throws("startIndex", () => builder.Append(new char[0], -1, 0)); // Start index < 0 + AssertExtensions.Throws("count", () => builder.Append(new char[0], 0, -1)); // Count < 0 - Assert.Throws("count", () => builder.Append(new char[5], 6, 0)); // Start index + count > value.Length - Assert.Throws("count", () => builder.Append(new char[5], 5, 1)); // Start index + count > value.Length + AssertExtensions.Throws("count", () => builder.Append(new char[5], 6, 0)); // Start index + count > value.Length + AssertExtensions.Throws("count", () => builder.Append(new char[5], 5, 1)); // Start index + count > value.Length - Assert.Throws("requiredLength", () => builder.Append(new char[] { 'a' })); - Assert.Throws("requiredLength", () => builder.Append(new char[] { 'a' }, 0, 1)); + AssertExtensions.Throws("requiredLength", () => builder.Append(new char[] { 'a' })); + AssertExtensions.Throws("requiredLength", () => builder.Append(new char[] { 'a' }, 0, 1)); } public static IEnumerable AppendFormat_TestData() @@ -815,18 +815,18 @@ public static void AppendFormat_Invalid() var obj3 = new object(); var obj4 = new object(); - Assert.Throws("format", () => builder.AppendFormat(null, obj1)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3, obj4)); // Format is null - Assert.Throws("args", () => builder.AppendFormat("", null)); // Args is null - Assert.Throws("format", () => builder.AppendFormat(null, (object[])null)); // Both format and args are null - Assert.Throws("format", () => builder.AppendFormat(formatter, null, obj1)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2, obj3)); // Format is null - Assert.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2, obj3, obj4)); // Format is null - Assert.Throws("args", () => builder.AppendFormat(formatter, "", null)); // Args is null - Assert.Throws("format", () => builder.AppendFormat(formatter, null, null)); // Both format and args are null + AssertExtensions.Throws("format", () => builder.AppendFormat(null, obj1)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(null, obj1, obj2, obj3, obj4)); // Format is null + AssertExtensions.Throws("args", () => builder.AppendFormat("", null)); // Args is null + AssertExtensions.Throws("format", () => builder.AppendFormat(null, (object[])null)); // Both format and args are null + AssertExtensions.Throws("format", () => builder.AppendFormat(formatter, null, obj1)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2, obj3)); // Format is null + AssertExtensions.Throws("format", () => builder.AppendFormat(formatter, null, obj1, obj2, obj3, obj4)); // Format is null + AssertExtensions.Throws("args", () => builder.AppendFormat(formatter, "", null)); // Args is null + AssertExtensions.Throws("format", () => builder.AppendFormat(formatter, null, null)); // Both format and args are null Assert.Throws(() => builder.AppendFormat("{-1}", obj1)); // Format has value < 0 Assert.Throws(() => builder.AppendFormat("{-1}", obj1, obj2)); // Format has value < 0 @@ -962,13 +962,13 @@ public static void CopyTo_StringBuilderWithMultipleChunks() public static void CopyTo_Invalid() { var builder = new StringBuilder("Hello"); - Assert.Throws("destination", () => builder.CopyTo(0, null, 0, 0)); // Destination is null + AssertExtensions.Throws("destination", () => builder.CopyTo(0, null, 0, 0)); // Destination is null - Assert.Throws("sourceIndex", () => builder.CopyTo(-1, new char[10], 0, 0)); // Source index < 0 - Assert.Throws("sourceIndex", () => builder.CopyTo(6, new char[10], 0, 0)); // Source index > builder.Length + AssertExtensions.Throws("sourceIndex", () => builder.CopyTo(-1, new char[10], 0, 0)); // Source index < 0 + AssertExtensions.Throws("sourceIndex", () => builder.CopyTo(6, new char[10], 0, 0)); // Source index > builder.Length - Assert.Throws("destinationIndex", () => builder.CopyTo(0, new char[10], -1, 0)); // Destination index < 0 - Assert.Throws("count", () => builder.CopyTo(0, new char[10], 0, -1)); // Count < 0 + AssertExtensions.Throws("destinationIndex", () => builder.CopyTo(0, new char[10], -1, 0)); // Destination index < 0 + AssertExtensions.Throws("count", () => builder.CopyTo(0, new char[10], 0, -1)); // Count < 0 Assert.Throws(null, () => builder.CopyTo(5, new char[10], 0, 1)); // Source index + count > builder.Length Assert.Throws(null, () => builder.CopyTo(4, new char[10], 0, 2)); // Source index + count > builder.Length @@ -998,8 +998,8 @@ public static void EnsureCapacity() public static void EnsureCapacity_InvalidCapacity_ThrowsArgumentOutOfRangeException() { var builder = new StringBuilder("Hello", 10); - Assert.Throws("capacity", () => builder.EnsureCapacity(-1)); // Capacity < 0 - Assert.Throws("capacity", () => builder.EnsureCapacity(unchecked(builder.MaxCapacity + 1))); // Capacity > builder.MaxCapacity + AssertExtensions.Throws("capacity", () => builder.EnsureCapacity(-1)); // Capacity < 0 + AssertExtensions.Throws("capacity", () => builder.EnsureCapacity(unchecked(builder.MaxCapacity + 1))); // Capacity > builder.MaxCapacity } public static IEnumerable Equals_TestData() @@ -1067,8 +1067,8 @@ public static void Insert_UInt_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (uint)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (uint)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (uint)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (uint)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (uint)1)); // New length > builder.MaxCapacity } @@ -1089,8 +1089,8 @@ public static void Insert_Bool_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, true)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, true)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, true)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, true)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, true)); // New length > builder.MaxCapacity } @@ -1111,8 +1111,8 @@ public static void Insert_Byte_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (byte)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (byte)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (byte)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (byte)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (byte)1)); // New length > builder.MaxCapacity } @@ -1133,8 +1133,8 @@ public static void Insert_ULong_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (ulong)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (ulong)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (ulong)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (ulong)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (ulong)1)); // New length > builder.MaxCapacity } @@ -1155,8 +1155,8 @@ public static void Insert_UShort_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (ushort)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (ushort)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (ushort)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (ushort)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (ushort)1)); // New length > builder.MaxCapacity } @@ -1177,9 +1177,9 @@ public static void Insert_Char_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, '\0')); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, '\0')); // Index > builder.Length - Assert.Throws("requiredLength", () => builder.Insert(builder.Length, '\0')); // New length > builder.MaxCapacity + AssertExtensions.Throws("index", () => builder.Insert(-1, '\0')); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, '\0')); // Index > builder.Length + AssertExtensions.Throws("requiredLength", () => builder.Insert(builder.Length, '\0')); // New length > builder.MaxCapacity } [Theory] @@ -1202,8 +1202,8 @@ public static void Insert_Float_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (float)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (float)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (float)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (float)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (float)1)); // New length > builder.MaxCapacity } @@ -1226,8 +1226,8 @@ public static void Insert_Object_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, new object())); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, new object())); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, new object())); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, new object())); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, new object())); // New length > builder.MaxCapacity } @@ -1248,8 +1248,8 @@ public static void Insert_Long_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (long)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (long)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (long)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (long)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (long)1)); // New length > builder.MaxCapacity } @@ -1270,8 +1270,8 @@ public static void Insert_Int_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, 1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, 1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, 1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, 1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, 1)); // New length > builder.MaxCapacity } @@ -1292,8 +1292,8 @@ public static void Insert_Short_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (short)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (short)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (short)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (short)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (short)1)); // New length > builder.MaxCapacity } @@ -1317,8 +1317,8 @@ public static void Insert_Double_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (double)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (double)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (double)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (double)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (double)1)); // New length > builder.MaxCapacity } @@ -1342,8 +1342,8 @@ public static void Insert_Decimal_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (decimal)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (decimal)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (decimal)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (decimal)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (decimal)1)); // New length > builder.MaxCapacity } @@ -1364,8 +1364,8 @@ public static void Insert_SByte_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, (sbyte)1)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, (sbyte)1)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(-1, (sbyte)1)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, (sbyte)1)); // Index > builder.Length Assert.Throws(() => builder.Insert(builder.Length, (sbyte)1)); // New length > builder.MaxCapacity } @@ -1400,15 +1400,15 @@ public static void Insert_String_Count_Invalid() var builder = new StringBuilder(0, 6); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, "")); // Index < 0 - Assert.Throws("index", () => builder.Insert(-1, "", 0)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(-1, "")); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(-1, "", 0)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, "")); // Index > builder.Length - Assert.Throws("index", () => builder.Insert(builder.Length + 1, "", 0)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, "")); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, "", 0)); // Index > builder.Length - Assert.Throws("count", () => builder.Insert(0, "", -1)); // Count < 0 + AssertExtensions.Throws("count", () => builder.Insert(0, "", -1)); // Count < 0 - Assert.Throws("requiredLength", () => builder.Insert(builder.Length, "aa")); // New length > builder.MaxCapacity + AssertExtensions.Throws("requiredLength", () => builder.Insert(builder.Length, "aa")); // New length > builder.MaxCapacity Assert.Throws(() => builder.Insert(builder.Length, "aa", 1)); // New length > builder.MaxCapacity Assert.Throws(() => builder.Insert(builder.Length, "a", 2)); // New length > builder.MaxCapacity } @@ -1446,21 +1446,21 @@ public static void Insert_CharArray_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("index", () => builder.Insert(-1, new char[1])); // Index < 0 - Assert.Throws("index", () => builder.Insert(-1, new char[0], 0, 0)); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(-1, new char[1])); // Index < 0 + AssertExtensions.Throws("index", () => builder.Insert(-1, new char[0], 0, 0)); // Index < 0 - Assert.Throws("index", () => builder.Insert(builder.Length + 1, new char[1])); // Index > builder.Length - Assert.Throws("index", () => builder.Insert(builder.Length + 1, new char[0], 0, 0)); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, new char[1])); // Index > builder.Length + AssertExtensions.Throws("index", () => builder.Insert(builder.Length + 1, new char[0], 0, 0)); // Index > builder.Length Assert.Throws(() => builder.Insert(0, null, 1, 1)); // Value is null (startIndex and count are not zero) - Assert.Throws("startIndex", () => builder.Insert(0, new char[0], -1, 0)); // Start index < 0 + AssertExtensions.Throws("startIndex", () => builder.Insert(0, new char[0], -1, 0)); // Start index < 0 - Assert.Throws("startIndex", () => builder.Insert(0, new char[3], 4, 0)); // Start index + char count > value.Length - Assert.Throws("startIndex", () => builder.Insert(0, new char[3], 3, 1)); // Start index + char count > value.Length - Assert.Throws("startIndex", () => builder.Insert(0, new char[3], 2, 2)); // Start index + char count > value.Length + AssertExtensions.Throws("startIndex", () => builder.Insert(0, new char[3], 4, 0)); // Start index + char count > value.Length + AssertExtensions.Throws("startIndex", () => builder.Insert(0, new char[3], 3, 1)); // Start index + char count > value.Length + AssertExtensions.Throws("startIndex", () => builder.Insert(0, new char[3], 2, 2)); // Start index + char count > value.Length - Assert.Throws("requiredLength", () => builder.Insert(builder.Length, new char[1])); // New length > builder.MaxCapacity - Assert.Throws("requiredLength", () => builder.Insert(builder.Length, new char[] { 'a' }, 0, 1)); // New length > builder.MaxCapacity + AssertExtensions.Throws("requiredLength", () => builder.Insert(builder.Length, new char[1])); // New length > builder.MaxCapacity + AssertExtensions.Throws("requiredLength", () => builder.Insert(builder.Length, new char[] { 'a' }, 0, 1)); // New length > builder.MaxCapacity } [Fact] @@ -1469,7 +1469,7 @@ public static void Insert_CharArray_InvalidCount() { var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("charCount", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 + AssertExtensions.Throws("charCount", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 } [Fact] @@ -1478,7 +1478,7 @@ public static void Insert_CharArray_InvalidCount_Desktop() { var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("count", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 + AssertExtensions.Throws("count", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 } [Fact] @@ -1487,7 +1487,7 @@ public static void Insert_CharArray_InvalidCharCount() { var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("charCount", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 + AssertExtensions.Throws("charCount", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 } [Fact] @@ -1496,7 +1496,7 @@ public static void Insert_CharArray_InvalidCharCount_Desktop() { var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("count", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 + AssertExtensions.Throws("count", () => builder.Insert(0, new char[0], 0, -1)); // Char count < 0 } [Theory] @@ -1530,11 +1530,11 @@ public static void Remove_StringBuilderWithMultipleChunks(int startIndex, int co public static void Remove_Invalid() { var builder = new StringBuilder("Hello"); - Assert.Throws("startIndex", () => builder.Remove(-1, 0)); // Start index < 0 - Assert.Throws("length", () => builder.Remove(0, -1)); // Length < 0 - Assert.Throws("length", () => builder.Remove(6, 0)); // Start index + length > 0 - Assert.Throws("length", () => builder.Remove(5, 1)); // Start index + length > 0 - Assert.Throws("length", () => builder.Remove(4, 2)); // Start index + length > 0 + AssertExtensions.Throws("startIndex", () => builder.Remove(-1, 0)); // Start index < 0 + AssertExtensions.Throws("length", () => builder.Remove(0, -1)); // Length < 0 + AssertExtensions.Throws("length", () => builder.Remove(6, 0)); // Start index + length > 0 + AssertExtensions.Throws("length", () => builder.Remove(5, 1)); // Start index + length > 0 + AssertExtensions.Throws("length", () => builder.Remove(4, 2)); // Start index + length > 0 } [Fact] @@ -1542,11 +1542,11 @@ public static void Remove_Invalid() public static void Remove_Invalid_Desktop() { var builder = new StringBuilder("Hello"); - Assert.Throws("startIndex", () => builder.Remove(-1, 0)); // Start index < 0 - Assert.Throws("length", () => builder.Remove(0, -1)); // Length < 0 - Assert.Throws("index", () => builder.Remove(6, 0)); // Start index + length > 0 - Assert.Throws("index", () => builder.Remove(5, 1)); // Start index + length > 0 - Assert.Throws("index", () => builder.Remove(4, 2)); // Start index + length > 0 + AssertExtensions.Throws("startIndex", () => builder.Remove(-1, 0)); // Start index < 0 + AssertExtensions.Throws("length", () => builder.Remove(0, -1)); // Length < 0 + AssertExtensions.Throws("index", () => builder.Remove(6, 0)); // Start index + length > 0 + AssertExtensions.Throws("index", () => builder.Remove(5, 1)); // Start index + length > 0 + AssertExtensions.Throws("index", () => builder.Remove(4, 2)); // Start index + length > 0 } [Theory] @@ -1586,12 +1586,12 @@ public static void Replace_Char_StringBuilderWithMultipleChunks() public static void Replace_Char_Invalid() { var builder = new StringBuilder("Hello"); - Assert.Throws("startIndex", () => builder.Replace('a', 'b', -1, 0)); // Start index < 0 - Assert.Throws("count", () => builder.Replace('a', 'b', 0, -1)); // Count < 0 + AssertExtensions.Throws("startIndex", () => builder.Replace('a', 'b', -1, 0)); // Start index < 0 + AssertExtensions.Throws("count", () => builder.Replace('a', 'b', 0, -1)); // Count < 0 - Assert.Throws("startIndex", () => builder.Replace('a', 'b', 6, 0)); // Count + start index > builder.Length - Assert.Throws("count", () => builder.Replace('a', 'b', 5, 1)); // Count + start index > builder.Length - Assert.Throws("count", () => builder.Replace('a', 'b', 4, 2)); // Count + start index > builder.Length + AssertExtensions.Throws("startIndex", () => builder.Replace('a', 'b', 6, 0)); // Count + start index > builder.Length + AssertExtensions.Throws("count", () => builder.Replace('a', 'b', 5, 1)); // Count + start index > builder.Length + AssertExtensions.Throws("count", () => builder.Replace('a', 'b', 4, 2)); // Count + start index > builder.Length } [Theory] @@ -1658,21 +1658,21 @@ public static void Replace_String_Invalid() var builder = new StringBuilder(0, 5); builder.Append("Hello"); - Assert.Throws("oldValue", () => builder.Replace(null, "")); // Old value is null - Assert.Throws("oldValue", () => builder.Replace(null, "a", 0, 0)); // Old value is null + AssertExtensions.Throws("oldValue", () => builder.Replace(null, "")); // Old value is null + AssertExtensions.Throws("oldValue", () => builder.Replace(null, "a", 0, 0)); // Old value is null - Assert.Throws("oldValue", () => builder.Replace("", "a")); // Old value is empty - Assert.Throws("oldValue", () => builder.Replace("", "a", 0, 0)); // Old value is empty + AssertExtensions.Throws("oldValue", () => builder.Replace("", "a")); // Old value is empty + AssertExtensions.Throws("oldValue", () => builder.Replace("", "a", 0, 0)); // Old value is empty - Assert.Throws("requiredLength", () => builder.Replace("o", "oo")); // New length > builder.MaxCapacity - Assert.Throws("requiredLength", () => builder.Replace("o", "oo", 0, 5)); // New length > builder.MaxCapacity + AssertExtensions.Throws("requiredLength", () => builder.Replace("o", "oo")); // New length > builder.MaxCapacity + AssertExtensions.Throws("requiredLength", () => builder.Replace("o", "oo", 0, 5)); // New length > builder.MaxCapacity - Assert.Throws("startIndex", () => builder.Replace("a", "b", -1, 0)); // Start index < 0 - Assert.Throws("count", () => builder.Replace("a", "b", 0, -1)); // Count < 0 + AssertExtensions.Throws("startIndex", () => builder.Replace("a", "b", -1, 0)); // Start index < 0 + AssertExtensions.Throws("count", () => builder.Replace("a", "b", 0, -1)); // Count < 0 - Assert.Throws("startIndex", () => builder.Replace("a", "b", 6, 0)); // Count + start index > builder.Length - Assert.Throws("count", () => builder.Replace("a", "b", 5, 1)); // Count + start index > builder.Length - Assert.Throws("count", () => builder.Replace("a", "b", 4, 2)); // Count + start index > builder.Length + AssertExtensions.Throws("startIndex", () => builder.Replace("a", "b", 6, 0)); // Count + start index > builder.Length + AssertExtensions.Throws("count", () => builder.Replace("a", "b", 5, 1)); // Count + start index > builder.Length + AssertExtensions.Throws("count", () => builder.Replace("a", "b", 4, 2)); // Count + start index > builder.Length } [Theory] @@ -1707,12 +1707,12 @@ public static void ToString_StringBuilderWithMultipleChunks() public static void ToString_Invalid() { var builder = new StringBuilder("Hello"); - Assert.Throws("startIndex", () => builder.ToString(-1, 0)); // Start index < 0 - Assert.Throws("length", () => builder.ToString(0, -1)); // Length < 0 + AssertExtensions.Throws("startIndex", () => builder.ToString(-1, 0)); // Start index < 0 + AssertExtensions.Throws("length", () => builder.ToString(0, -1)); // Length < 0 - Assert.Throws("startIndex", () => builder.ToString(6, 0)); // Length + start index > builder.Length - Assert.Throws("length", () => builder.ToString(5, 1)); // Length + start index > builder.Length - Assert.Throws("length", () => builder.ToString(4, 2)); // Length + start index > builder.Length + AssertExtensions.Throws("startIndex", () => builder.ToString(6, 0)); // Length + start index > builder.Length + AssertExtensions.Throws("length", () => builder.ToString(5, 1)); // Length + start index > builder.Length + AssertExtensions.Throws("length", () => builder.ToString(4, 2)); // Length + start index > builder.Length } public class CustomFormatter : ICustomFormatter, IFormatProvider diff --git a/src/System.Runtime/tests/System/TimeSpanTests.netcoreapp.cs b/src/System.Runtime/tests/System/TimeSpanTests.netcoreapp.cs index 79d1c9546cdd..f4c6ef025f95 100644 --- a/src/System.Runtime/tests/System/TimeSpanTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/TimeSpanTests.netcoreapp.cs @@ -38,8 +38,8 @@ public static void OverflowingMultiplication() [Fact] public static void NaNMultiplication() { - Assert.Throws("factor", () => TimeSpan.FromDays(1) * double.NaN); - Assert.Throws("factor", () => double.NaN * TimeSpan.FromDays(1)); + AssertExtensions.Throws("factor", () => TimeSpan.FromDays(1) * double.NaN); + AssertExtensions.Throws("factor", () => double.NaN * TimeSpan.FromDays(1)); } [Theory, MemberData(nameof(MultiplicationTestData))] @@ -64,7 +64,7 @@ public static void DivideByZero() [Fact] public static void NaNDivision() { - Assert.Throws("divisor", () => TimeSpan.FromDays(1) / double.NaN); + AssertExtensions.Throws("divisor", () => TimeSpan.FromDays(1) / double.NaN); } [Theory, MemberData(nameof(MultiplicationTestData))] @@ -82,7 +82,7 @@ public static void NamedOverflowingMultiplication() [Fact] public static void NamedNaNMultiplication() { - Assert.Throws("factor", () => TimeSpan.FromDays(1).Multiply(double.NaN)); + AssertExtensions.Throws("factor", () => TimeSpan.FromDays(1).Multiply(double.NaN)); } [Theory, MemberData(nameof(MultiplicationTestData))] @@ -107,7 +107,7 @@ public static void NamedDivideByZero() [Fact] public static void NamedNaNDivision() { - Assert.Throws("divisor", () => TimeSpan.FromDays(1).Divide(double.NaN)); + AssertExtensions.Throws("divisor", () => TimeSpan.FromDays(1).Divide(double.NaN)); } } -} \ No newline at end of file +} diff --git a/src/System.Runtime/tests/System/TimeZoneInfoTests.cs b/src/System.Runtime/tests/System/TimeZoneInfoTests.cs index f04561aa727e..241d0cc137ff 100644 --- a/src/System.Runtime/tests/System/TimeZoneInfoTests.cs +++ b/src/System.Runtime/tests/System/TimeZoneInfoTests.cs @@ -914,11 +914,11 @@ public static void ConvertTime_Tonga() [Fact] public static void ConvertTime_NullTimeZone_ThrowsArgumentNullException() { - Assert.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), null)); - Assert.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTimeOffset(), null)); + AssertExtensions.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), null)); + AssertExtensions.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTimeOffset(), null)); - Assert.Throws("sourceTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), null, s_casablancaTz)); - Assert.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), s_casablancaTz, null)); + AssertExtensions.Throws("sourceTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), null, s_casablancaTz)); + AssertExtensions.Throws("destinationTimeZone", () => TimeZoneInfo.ConvertTime(new DateTime(), s_casablancaTz, null)); } [Fact] diff --git a/src/System.Runtime/tests/System/TupleTests.cs b/src/System.Runtime/tests/System/TupleTests.cs index 0e5a97cb81f4..9b08c0646344 100644 --- a/src/System.Runtime/tests/System/TupleTests.cs +++ b/src/System.Runtime/tests/System/TupleTests.cs @@ -254,7 +254,7 @@ public void NotEqual() internal void CompareToThrows() { Tuple tupleB = new Tuple((int)10000); - Assert.Throws("other", () => ((IComparable)Tuple).CompareTo(tupleB)); + AssertExtensions.Throws("other", () => ((IComparable)Tuple).CompareTo(tupleB)); } } diff --git a/src/System.Runtime/tests/System/TypeTests.cs b/src/System.Runtime/tests/System/TypeTests.cs index 1b7b961aa655..24550d7fc2c8 100644 --- a/src/System.Runtime/tests/System/TypeTests.cs +++ b/src/System.Runtime/tests/System/TypeTests.cs @@ -291,7 +291,7 @@ public static void GetTypeCode(Type t, TypeCode typeCode) public static void ReflectionOnlyGetType() { - Assert.Throws("typeName", () => Type.ReflectionOnlyGetType(null, true, false)); + AssertExtensions.Throws("typeName", () => Type.ReflectionOnlyGetType(null, true, false)); Assert.Throws(() => Type.ReflectionOnlyGetType("", true, true)); Assert.Throws(() => Type.ReflectionOnlyGetType("System.Tests.TypeTests", false, true)); } diff --git a/src/System.Runtime/tests/System/Uri.CreateStringTests.cs b/src/System.Runtime/tests/System/Uri.CreateStringTests.cs index 6d2b5ffa9946..a4c363ae54ac 100644 --- a/src/System.Runtime/tests/System/Uri.CreateStringTests.cs +++ b/src/System.Runtime/tests/System/Uri.CreateStringTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -978,8 +978,8 @@ public void Relative(string uriString, bool relativeOrAbsolute) [Fact] public void Create_String_Null_Throws_ArgumentNullException() { - Assert.Throws("uriString", () => new Uri(null)); - Assert.Throws("uriString", () => new Uri(null, UriKind.Absolute)); + AssertExtensions.Throws("uriString", () => new Uri(null)); + AssertExtensions.Throws("uriString", () => new Uri(null, UriKind.Absolute)); Uri uri; Assert.False(Uri.TryCreate(null, UriKind.Absolute, out uri)); diff --git a/src/System.Runtime/tests/System/Uri.MethodsTests.cs b/src/System.Runtime/tests/System/Uri.MethodsTests.cs index f64211fe3719..caa59582323f 100644 --- a/src/System.Runtime/tests/System/Uri.MethodsTests.cs +++ b/src/System.Runtime/tests/System/Uri.MethodsTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -101,7 +101,7 @@ public void MakeRelative_Invalid() { var baseUri = new Uri("http://www.domain.com/"); var relativeUri = new Uri("/path/", UriKind.Relative); - Assert.Throws("uri", () => baseUri.MakeRelativeUri(null)); // Uri is null + AssertExtensions.Throws("uri", () => baseUri.MakeRelativeUri(null)); // Uri is null Assert.Throws(() => relativeUri.MakeRelativeUri(baseUri)); // Base uri is relative Assert.Throws(() => baseUri.MakeRelativeUri(relativeUri)); // Uri is relative @@ -207,7 +207,7 @@ public void IsBaseOf(Uri uri1, Uri uri2, bool expected) [Fact] public void IsBaseOf_Null_ThrowsArgumentNullException() { - Assert.Throws("uri", () => new Uri("http://domain.com").IsBaseOf(null)); // Uri is null + AssertExtensions.Throws("uri", () => new Uri("http://domain.com").IsBaseOf(null)); // Uri is null } public static IEnumerable IsWellFormedOriginalString_TestData() @@ -306,8 +306,8 @@ public void Compare(Uri uri1, Uri uri2, UriComponents partsToCompare, UriFormat public void Compare_Invalid() { var uri = new Uri("http://domain.com"); - Assert.Throws("comparisonType", () => Uri.Compare(uri, uri, UriComponents.AbsoluteUri, UriFormat.UriEscaped, StringComparison.CurrentCulture - 1)); - Assert.Throws("comparisonType", () => Uri.Compare(uri, uri, UriComponents.AbsoluteUri, UriFormat.UriEscaped, StringComparison.OrdinalIgnoreCase + 1)); + AssertExtensions.Throws("comparisonType", () => Uri.Compare(uri, uri, UriComponents.AbsoluteUri, UriFormat.UriEscaped, StringComparison.CurrentCulture - 1)); + AssertExtensions.Throws("comparisonType", () => Uri.Compare(uri, uri, UriComponents.AbsoluteUri, UriFormat.UriEscaped, StringComparison.OrdinalIgnoreCase + 1)); } public static IEnumerable Equals_TestData() @@ -423,7 +423,7 @@ public void EscapeDataString_HighSurrogatePair() [Fact] public void EscapeDataString_Invalid() { - Assert.Throws("stringToEscape", () => Uri.EscapeDataString(null)); // StringToEscape is null + AssertExtensions.Throws("stringToEscape", () => Uri.EscapeDataString(null)); // StringToEscape is null Assert.Throws(() => Uri.EscapeDataString(UriCreateStringTests.s_longString)); // StringToEscape is too long Assert.Throws(() => Uri.EscapeDataString("\uD800")); // Incomplete surrogate pair provided @@ -443,7 +443,7 @@ public void UnescapeDataString(string stringToUnEscape, string expected) [Fact] public void UnescapedDataString_Null_ThrowsArgumentNullException() { - Assert.Throws("stringToUnescape", () => Uri.UnescapeDataString(null)); // StringToUnescape is null + AssertExtensions.Throws("stringToUnescape", () => Uri.UnescapeDataString(null)); // StringToUnescape is null } [Theory] @@ -465,7 +465,7 @@ public void EscapeUriString_HighSurrogatePair() [Fact] public void EscapeUriString_Invalid() { - Assert.Throws("stringToEscape", () => Uri.EscapeUriString(null)); // StringToEscape is null + AssertExtensions.Throws("stringToEscape", () => Uri.EscapeUriString(null)); // StringToEscape is null Assert.Throws(() => Uri.EscapeUriString(UriCreateStringTests.s_longString)); // StringToEscape is too long Assert.Throws(() => Uri.EscapeUriString("\uD800")); // Incomplete surrogate pair provided @@ -656,7 +656,7 @@ public void GetComponents_Invalid() Assert.Throws(() => absoluteUri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped - 1)); // Format is invalid Assert.Throws(() => absoluteUri.GetComponents(UriComponents.AbsoluteUri, UriFormat.SafeUnescaped + 1)); // Format is invalid - Assert.Throws("components", () => absoluteUri.GetComponents(UriComponents.HostAndPort | ~UriComponents.KeepDelimiter, UriFormat.UriEscaped)); // Components is invalid + AssertExtensions.Throws("components", () => absoluteUri.GetComponents(UriComponents.HostAndPort | ~UriComponents.KeepDelimiter, UriFormat.UriEscaped)); // Components is invalid Assert.Throws(() => relativeUri.GetComponents(UriComponents.AbsoluteUri, UriFormat.Unescaped)); // Uri is relative Assert.Throws(() => relativeUri.GetComponents(UriComponents.SerializationInfoString, UriFormat.UriEscaped - 1)); // Uri is relative, format is invalid diff --git a/src/System.Runtime/tests/System/VersionTests.cs b/src/System.Runtime/tests/System/VersionTests.cs index 2e50cb8c3789..f477ff3e4a04 100644 --- a/src/System.Runtime/tests/System/VersionTests.cs +++ b/src/System.Runtime/tests/System/VersionTests.cs @@ -36,8 +36,8 @@ public static void Ctor_Int_Int(int major, int minor) [Fact] public static void Ctor_Int_Int_Invalid() { - Assert.Throws("major", () => new Version(-1, 0)); // Major < 0 - Assert.Throws("minor", () => new Version(0, -1)); // Minor < 0 + AssertExtensions.Throws("major", () => new Version(-1, 0)); // Major < 0 + AssertExtensions.Throws("minor", () => new Version(0, -1)); // Minor < 0 } [Theory] @@ -52,9 +52,9 @@ public static void Ctor_Int_Int_Int(int major, int minor, int build) [Fact] public static void Ctor_Int_Int_Int_Invalid() { - Assert.Throws("major", () => new Version(-1, 0, 0)); // Major < 0 - Assert.Throws("minor", () => new Version(0, -1, 0)); // Minor < 0 - Assert.Throws("build", () => new Version(0, 0, -1)); // Build < 0 + AssertExtensions.Throws("major", () => new Version(-1, 0, 0)); // Major < 0 + AssertExtensions.Throws("minor", () => new Version(0, -1, 0)); // Minor < 0 + AssertExtensions.Throws("build", () => new Version(0, 0, -1)); // Build < 0 } [Theory] @@ -76,10 +76,10 @@ public static void Ctor_Int_Int_Int_Int(int major, int minor, int build, int rev [Fact] public static void Ctor_Int_Int_Int_Int_Invalid() { - Assert.Throws("major", () => new Version(-1, 0, 0, 0)); // Major < 0 - Assert.Throws("minor", () => new Version(0, -1, 0, 0)); // Minor < 0 - Assert.Throws("build", () => new Version(0, 0, -1, 0)); // Build < 0 - Assert.Throws("revision", () => new Version(0, 0, 0, -1)); // Revision < 0 + AssertExtensions.Throws("major", () => new Version(-1, 0, 0, 0)); // Major < 0 + AssertExtensions.Throws("minor", () => new Version(0, -1, 0, 0)); // Minor < 0 + AssertExtensions.Throws("build", () => new Version(0, 0, -1, 0)); // Build < 0 + AssertExtensions.Throws("revision", () => new Version(0, 0, 0, -1)); // Revision < 0 } public static IEnumerable CompareTo_TestData() @@ -146,10 +146,10 @@ public static void CompareTo_Invalid() Version nullVersion = null; Version testVersion = new Version(1, 2); - Assert.Throws("v1", () => testVersion >= nullVersion); // V2 is null - Assert.Throws("v1", () => testVersion > nullVersion); // V2 is null - Assert.Throws("v1", () => nullVersion < testVersion); // V1 is null - Assert.Throws("v1", () => nullVersion <= testVersion); // V1 is null + AssertExtensions.Throws("v1", () => testVersion >= nullVersion); // V2 is null + AssertExtensions.Throws("v1", () => testVersion > nullVersion); // V2 is null + AssertExtensions.Throws("v1", () => nullVersion < testVersion); // V1 is null + AssertExtensions.Throws("v1", () => nullVersion <= testVersion); // V1 is null } private static IEnumerable Equals_TestData() @@ -274,8 +274,8 @@ public static void ToString(Version version, string[] expected) int maxFieldCount = expected.Length - 1; Assert.Equal(expected[maxFieldCount], version.ToString()); - Assert.Throws("fieldCount", () => version.ToString(-1)); // Index < 0 - Assert.Throws("fieldCount", () => version.ToString(maxFieldCount + 1)); // Index > version.fieldCount + AssertExtensions.Throws("fieldCount", () => version.ToString(-1)); // Index < 0 + AssertExtensions.Throws("fieldCount", () => version.ToString(maxFieldCount + 1)); // Index > version.fieldCount } private static void VerifyVersion(Version version, int major, int minor, int build, int revision) diff --git a/src/System.Security.AccessControl/tests/AccessRule.Tests.cs b/src/System.Security.AccessControl/tests/AccessRule.Tests.cs index 1e9302cd5fdb..6114e61e7db6 100644 --- a/src/System.Security.AccessControl/tests/AccessRule.Tests.cs +++ b/src/System.Security.AccessControl/tests/AccessRule.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -25,16 +25,16 @@ public static IEnumerable AccessRule_TestData() [Fact] public virtual void AccessRule_Constructor_Invalid() { - Assert.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 0, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), -1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 2147483647, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1073741823, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 0, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), -1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 2147483647, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1073741823, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AccessControlType)0)); - Assert.Throws("accessControlType", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)3)); + AssertExtensions.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AccessControlType)0)); + AssertExtensions.Throws("accessControlType", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)3)); } [Theory] @@ -61,11 +61,11 @@ public override AccessRule Constructor(IdentityReference identityReference, int [Fact] public override void AccessRule_Constructor_Invalid() { - Assert.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AccessControlType)0)); - Assert.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AccessControlType)0)); - Assert.Throws("type", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)2)); + AssertExtensions.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AccessControlType)0)); + AssertExtensions.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AccessControlType)0)); + AssertExtensions.Throws("type", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AccessControlType)2)); } } } diff --git a/src/System.Security.AccessControl/tests/Ace/Ace.Common.Tests.cs b/src/System.Security.AccessControl/tests/Ace/Ace.Common.Tests.cs index 610c31be8d82..aac69c98da83 100644 --- a/src/System.Security.AccessControl/tests/Ace/Ace.Common.Tests.cs +++ b/src/System.Security.AccessControl/tests/Ace/Ace.Common.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -87,11 +87,11 @@ public static IEnumerable CommonAce_TestObjects() [Fact] public void CommonAce_Constructor_Invalid() { - Assert.Throws("securityIdentifier", () => new CommonAce((AceFlags)0, (AceQualifier)0, 1, null, true, new byte[4])); - Assert.Throws("qualifier", () => CommonAce_CreateTestData(8, 4, 1, "S-1-5-11", true, 4, 0)); - Assert.Throws("qualifier", () => CommonAce_CreateTestData(8, -1, 1, "S-1-5-11", true, 4, 0)); - Assert.Throws("opaque", () => CommonAce_CreateTestData(2, 1, 2, "S-1-5-11", true, 1, 0)); - Assert.Throws("opaque", () => CommonAce_CreateTestData(2, 1, 2, "S-1-5-11", true, 17, 0)); + AssertExtensions.Throws("securityIdentifier", () => new CommonAce((AceFlags)0, (AceQualifier)0, 1, null, true, new byte[4])); + AssertExtensions.Throws("qualifier", () => CommonAce_CreateTestData(8, 4, 1, "S-1-5-11", true, 4, 0)); + AssertExtensions.Throws("qualifier", () => CommonAce_CreateTestData(8, -1, 1, "S-1-5-11", true, 4, 0)); + AssertExtensions.Throws("opaque", () => CommonAce_CreateTestData(2, 1, 2, "S-1-5-11", true, 1, 0)); + AssertExtensions.Throws("opaque", () => CommonAce_CreateTestData(2, 1, 2, "S-1-5-11", true, 17, 0)); } @@ -99,20 +99,20 @@ public void CommonAce_Constructor_Invalid() public void CommonAce_CreateBinaryForm_Invalid() { CommonAce ace = (CommonAce)CommonAce_CreateTestData(0, 0, 1, "S-1-5-11", false, 4, 0)[0]; - Assert.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(null, 1)); - Assert.Throws("offset", () => CommonAce.CreateFromBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => CommonAce.CreateFromBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => CommonAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); } [Fact] public void CommonAce_GetBinaryForm_Invalid() { CommonAce ace = (CommonAce)CommonAce_CreateTestData(0, 0, 1, "S-1-5-11", false, 4, 0)[0]; - Assert.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); - Assert.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); } [Theory] diff --git a/src/System.Security.AccessControl/tests/Ace/Ace.Compound.Tests.cs b/src/System.Security.AccessControl/tests/Ace/Ace.Compound.Tests.cs index dd8ff30374ad..32fddbcc13b8 100644 --- a/src/System.Security.AccessControl/tests/Ace/Ace.Compound.Tests.cs +++ b/src/System.Security.AccessControl/tests/Ace/Ace.Compound.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -71,27 +71,27 @@ public static IEnumerable CompoundAce_TestObjects() [Fact] public void CompoundAce_Constructor_Invalid() { - Assert.Throws("securityIdentifier", () => new CompoundAce((AceFlags)0, 1, (CompoundAceType)1, null)); + AssertExtensions.Throws("securityIdentifier", () => new CompoundAce((AceFlags)0, 1, (CompoundAceType)1, null)); } [Fact] public void CompoundAce_CreateBinaryForm_Invalid() { CompoundAce ace = (CompoundAce)CompoundAce_CreateTestData(0, 1, 1, "S-1-5-11", 0)[0]; - Assert.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(null, 1)); - Assert.Throws("offset", () => CompoundAce.CreateFromBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => CompoundAce.CreateFromBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => CompoundAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); } [Fact] public void CompoundAce_GetBinaryForm_Invalid() { CompoundAce ace = (CompoundAce)CompoundAce_CreateTestData(0, 1, 1, "S-1-5-11", 0)[0]; - Assert.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); - Assert.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); } [Theory] diff --git a/src/System.Security.AccessControl/tests/Ace/Ace.Custom.Tests.cs b/src/System.Security.AccessControl/tests/Ace/Ace.Custom.Tests.cs index c5a2e42bbad0..fa7c3cc2cbe6 100644 --- a/src/System.Security.AccessControl/tests/Ace/Ace.Custom.Tests.cs +++ b/src/System.Security.AccessControl/tests/Ace/Ace.Custom.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -54,20 +54,20 @@ public void CustomAce_Constructor_Invalid() public void CustomAce_CreateBinaryForm_Invalid() { GenericAce ace = new CustomAce((AceType)19, (AceFlags)0, new byte[4]); - Assert.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(null, 1)); - Assert.Throws("offset", () => CustomAce.CreateFromBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => CustomAce.CreateFromBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => CustomAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); } [Fact] public void CustomAce_GetBinaryForm_Invalid() { GenericAce ace = new CustomAce((AceType)19, (AceFlags)0, new byte[4]); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); - Assert.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); } [Theory] diff --git a/src/System.Security.AccessControl/tests/Ace/Ace.Object.Tests.cs b/src/System.Security.AccessControl/tests/Ace/Ace.Object.Tests.cs index bd7fadaa4212..6c86e1dde732 100644 --- a/src/System.Security.AccessControl/tests/Ace/Ace.Object.Tests.cs +++ b/src/System.Security.AccessControl/tests/Ace/Ace.Object.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -117,31 +117,31 @@ public static IEnumerable ObjectAce_TestObjects() [Fact] public void ObjectAce_Constructor_Invalid() { - Assert.Throws("securityIdentifier", () => new ObjectAce((AceFlags)0, (AceQualifier)0, 1, null, (ObjectAceFlags)1, new Guid("{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}"), new Guid("{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}"), true, new byte[4])); - Assert.Throws("qualifier", () => ObjectAce_CreateTestData(8, 4, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 4, 0)); - Assert.Throws("qualifier", () => ObjectAce_CreateTestData(8, -1, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 4, 0)); - Assert.Throws("opaque", () => ObjectAce_CreateTestData(2, 1, 2, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 1, 0)); - Assert.Throws("opaque", () => ObjectAce_CreateTestData(2, 1, 2, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 17, 0)); + AssertExtensions.Throws("securityIdentifier", () => new ObjectAce((AceFlags)0, (AceQualifier)0, 1, null, (ObjectAceFlags)1, new Guid("{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}"), new Guid("{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}"), true, new byte[4])); + AssertExtensions.Throws("qualifier", () => ObjectAce_CreateTestData(8, 4, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 4, 0)); + AssertExtensions.Throws("qualifier", () => ObjectAce_CreateTestData(8, -1, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 4, 0)); + AssertExtensions.Throws("opaque", () => ObjectAce_CreateTestData(2, 1, 2, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 1, 0)); + AssertExtensions.Throws("opaque", () => ObjectAce_CreateTestData(2, 1, 2, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", true, 17, 0)); } [Fact] public void ObjectAce_CreateBinaryForm_Invalid() { ObjectAce ace = (ObjectAce)ObjectAce_CreateTestData(0, 0, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", false, 8, 0)[0]; - Assert.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(null, 1)); - Assert.Throws("offset", () => ObjectAce.CreateFromBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => ObjectAce.CreateFromBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => ObjectAce.CreateFromBinaryForm(new byte[ace.BinaryLength], 1)); } [Fact] public void ObjectAce_GetBinaryForm_Invalid() { ObjectAce ace = (ObjectAce)ObjectAce_CreateTestData(0, 0, 1, "S-1-5-11", 1, "{73D03E18-5C03-422c-9EC7-C4C5B1CB1612}", "{3CFD5DF9-9146-43c8-BF99-78E7E2DE4BAF}", false, 8, 0)[0]; - Assert.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); - Assert.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); - Assert.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(null, 1)); + AssertExtensions.Throws("offset", () => ace.GetBinaryForm(new byte[1], -1)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength + 1], 2)); + AssertExtensions.Throws("binaryForm", () => ace.GetBinaryForm(new byte[ace.BinaryLength], 1)); } [Theory] diff --git a/src/System.Security.AccessControl/tests/AuditRule.Tests.cs b/src/System.Security.AccessControl/tests/AuditRule.Tests.cs index ac350e434028..2ae81ce08b28 100644 --- a/src/System.Security.AccessControl/tests/AuditRule.Tests.cs +++ b/src/System.Security.AccessControl/tests/AuditRule.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -26,16 +26,16 @@ public static IEnumerable AuditRule_TestData() [Fact] public virtual void AuditRule_Constructor_Invalid() { - Assert.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 0, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), -1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 2147483647, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1073741823, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 0, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), -1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 2147483647, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("accessMask", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1073741823, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AuditFlags)0)); - Assert.Throws("AuditFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)3)); + AssertExtensions.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AuditFlags)0)); + AssertExtensions.Throws("AuditFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)3)); } [Theory] @@ -62,11 +62,11 @@ public override AuditRule Constructor(IdentityReference identityReference, int a [Fact] public override void AuditRule_Constructor_Invalid() { - Assert.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("identity", () => Constructor(null, 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AuditFlags)0)); - Assert.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AuditFlags)0)); - Assert.Throws("auditFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)4)); + AssertExtensions.Throws("inheritanceFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)4, (PropagationFlags)1, (AuditFlags)0)); + AssertExtensions.Throws("propagationFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)4, (AuditFlags)0)); + AssertExtensions.Throws("auditFlags", () => Constructor(new SecurityIdentifier("S-1-5-32-544"), 1, true, (InheritanceFlags)1, (PropagationFlags)1, (AuditFlags)4)); } } } diff --git a/src/System.Security.AccessControl/tests/System.Security.AccessControl.Tests.csproj b/src/System.Security.AccessControl/tests/System.Security.AccessControl.Tests.csproj index 3d2d6b23e3e9..10f3a586b994 100644 --- a/src/System.Security.AccessControl/tests/System.Security.AccessControl.Tests.csproj +++ b/src/System.Security.AccessControl/tests/System.Security.AccessControl.Tests.csproj @@ -72,6 +72,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Security.Claims/tests/ClaimsPrincipalTests.cs b/src/System.Security.Claims/tests/ClaimsPrincipalTests.cs index e9aa4b948419..a3165db0dde2 100644 --- a/src/System.Security.Claims/tests/ClaimsPrincipalTests.cs +++ b/src/System.Security.Claims/tests/ClaimsPrincipalTests.cs @@ -196,10 +196,10 @@ public void Ctor_IEnumerableClaimsIdentity_Multiple() [Fact] public void Ctor_ArgumentValidation() { - Assert.Throws("identities", () => new ClaimsPrincipal((IEnumerable)null)); - Assert.Throws("identity", () => new ClaimsPrincipal((IIdentity)null)); - Assert.Throws("principal", () => new ClaimsPrincipal((IPrincipal)null)); - Assert.Throws("reader", () => new ClaimsPrincipal((BinaryReader)null)); + AssertExtensions.Throws("identities", () => new ClaimsPrincipal((IEnumerable)null)); + AssertExtensions.Throws("identity", () => new ClaimsPrincipal((IIdentity)null)); + AssertExtensions.Throws("principal", () => new ClaimsPrincipal((IPrincipal)null)); + AssertExtensions.Throws("reader", () => new ClaimsPrincipal((BinaryReader)null)); } [Fact] diff --git a/src/System.Security.Claims/tests/GenericIdentityTests.cs b/src/System.Security.Claims/tests/GenericIdentityTests.cs index 1277c74d149d..ae00d8ee0526 100644 --- a/src/System.Security.Claims/tests/GenericIdentityTests.cs +++ b/src/System.Security.Claims/tests/GenericIdentityTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Security.Principal; using Xunit; @@ -39,8 +40,8 @@ public void EmptyName() [Fact] public void Ctor_ArgumentValidation() { - Assert.Throws("name", () => new GenericIdentity(null)); - Assert.Throws("type", () => new GenericIdentity("user", null)); + AssertExtensions.Throws("name", () => new GenericIdentity(null)); + AssertExtensions.Throws("type", () => new GenericIdentity("user", null)); } } } diff --git a/src/System.Security.Claims/tests/GenericPrincipalTests.cs b/src/System.Security.Claims/tests/GenericPrincipalTests.cs index 4c8b4f43becd..9d8c1f5ceb33 100644 --- a/src/System.Security.Claims/tests/GenericPrincipalTests.cs +++ b/src/System.Security.Claims/tests/GenericPrincipalTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Security.Principal; using Xunit; @@ -42,7 +43,7 @@ public void IsInRole_CaseInsensitive() [Fact] public void Ctor_ArgumentValidation() { - Assert.Throws("identity", () => new GenericPrincipal(null, new string[5])); + AssertExtensions.Throws("identity", () => new GenericPrincipal(null, new string[5])); } } } diff --git a/src/System.Security.Claims/tests/System.Security.Claims.Tests.csproj b/src/System.Security.Claims/tests/System.Security.Claims.Tests.csproj index 3e13881c45a6..083819b4d555 100644 --- a/src/System.Security.Claims/tests/System.Security.Claims.Tests.csproj +++ b/src/System.Security.Claims/tests/System.Security.Claims.Tests.csproj @@ -12,6 +12,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs diff --git a/src/System.Security.Cryptography.Algorithms/tests/ECDiffieHellmanPublicKeyTests.cs b/src/System.Security.Cryptography.Algorithms/tests/ECDiffieHellmanPublicKeyTests.cs index c05419d65c2d..a769d4e2c573 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/ECDiffieHellmanPublicKeyTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/ECDiffieHellmanPublicKeyTests.cs @@ -16,7 +16,7 @@ public TestDerived(byte[] keyBlob) : base(keyBlob) { } [Fact] public void TestInvalidConstructorArgs() { - Assert.Throws("keyBlob", () => new TestDerived(null)); + AssertExtensions.Throws("keyBlob", () => new TestDerived(null)); } [Fact] diff --git a/src/System.Security.Cryptography.Algorithms/tests/HashAlgorithmTest.cs b/src/System.Security.Cryptography.Algorithms/tests/HashAlgorithmTest.cs index 8c6a71e1e4d6..be91caa14c4e 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/HashAlgorithmTest.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/HashAlgorithmTest.cs @@ -161,8 +161,8 @@ public void InvalidInput_ComputeHash() { using (HashAlgorithm hash = Create()) { - Assert.Throws("buffer", () => hash.ComputeHash((byte[])null)); - Assert.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash((byte[])null)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); } } @@ -171,8 +171,8 @@ public void InvalidInput_TransformBlock() { using (HashAlgorithm hash = Create()) { - Assert.Throws("inputBuffer", () => hash.TransformBlock(null, 0, 0, null, 0)); - Assert.Throws("inputOffset", () => hash.TransformBlock(Array.Empty(), -1, 0, null, 0)); + AssertExtensions.Throws("inputBuffer", () => hash.TransformBlock(null, 0, 0, null, 0)); + AssertExtensions.Throws("inputOffset", () => hash.TransformBlock(Array.Empty(), -1, 0, null, 0)); Assert.Throws(null, () => hash.TransformBlock(Array.Empty(), 0, 1, null, 0)); Assert.Throws(null, () => hash.TransformBlock(Array.Empty(), 1, 0, null, 0)); } @@ -183,8 +183,8 @@ public void InvalidInput_TransformFinalBlock() { using (HashAlgorithm hash = Create()) { - Assert.Throws("inputBuffer", () => hash.TransformFinalBlock(null, 0, 0)); - Assert.Throws("inputOffset", () => hash.TransformFinalBlock(Array.Empty(), -1, 0)); + AssertExtensions.Throws("inputBuffer", () => hash.TransformFinalBlock(null, 0, 0)); + AssertExtensions.Throws("inputOffset", () => hash.TransformFinalBlock(Array.Empty(), -1, 0)); Assert.Throws(null, () => hash.TransformFinalBlock(Array.Empty(), 1, 0)); Assert.Throws(null, () => hash.TransformFinalBlock(Array.Empty(), 0, -1)); Assert.Throws(null, () => hash.TransformFinalBlock(Array.Empty(), 0, 1)); @@ -226,8 +226,8 @@ public void InvalidInput_Null() { using (HashAlgorithm hash = Create()) { - Assert.Throws("buffer", () => hash.ComputeHash((byte[])null)); - Assert.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash((byte[])null)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); Assert.Throws(() => hash.ComputeHash((Stream)null)); } } @@ -237,7 +237,7 @@ public void InvalidInput_NegativeOffset() { using (HashAlgorithm hash = Create()) { - Assert.Throws("offset", () => hash.ComputeHash(Array.Empty(), -1, 0)); + AssertExtensions.Throws("offset", () => hash.ComputeHash(Array.Empty(), -1, 0)); } } diff --git a/src/System.Security.Cryptography.Algorithms/tests/HmacTests.cs b/src/System.Security.Cryptography.Algorithms/tests/HmacTests.cs index 508926e79d0d..45d0ae45fe54 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/HmacTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/HmacTests.cs @@ -112,8 +112,8 @@ public void InvalidInput_Null() { using (HMAC hash = Create()) { - Assert.Throws("buffer", () => hash.ComputeHash((byte[])null)); - Assert.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash((byte[])null)); + AssertExtensions.Throws("buffer", () => hash.ComputeHash(null, 0, 0)); Assert.Throws(() => hash.ComputeHash((Stream)null)); } } @@ -123,7 +123,7 @@ public void InvalidInput_NegativeOffset() { using (HMAC hash = Create()) { - Assert.Throws("offset", () => hash.ComputeHash(Array.Empty(), -1, 0)); + AssertExtensions.Throws("offset", () => hash.ComputeHash(Array.Empty(), -1, 0)); } } diff --git a/src/System.Security.Cryptography.Algorithms/tests/RandomNumberGeneratorTests.cs b/src/System.Security.Cryptography.Algorithms/tests/RandomNumberGeneratorTests.cs index b319322b3e3b..ac6c12631b75 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/RandomNumberGeneratorTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/RandomNumberGeneratorTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -139,7 +140,7 @@ public static void GetNonZeroBytes() { using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) { - Assert.Throws("data", () => rng.GetNonZeroBytes(null)); + AssertExtensions.Throws("data", () => rng.GetNonZeroBytes(null)); // Array should not have any zeros byte[] rand = new byte[65536]; @@ -241,7 +242,7 @@ public static void GetBytes_InvalidArgs() { using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) { - Assert.Throws("data", () => rng.GetNonZeroBytes(null)); + AssertExtensions.Throws("data", () => rng.GetNonZeroBytes(null)); GetBytes_InvalidArgs(rng); } } @@ -258,9 +259,9 @@ public static void GetBytes_InvalidArgs_Base() private static void GetBytes_InvalidArgs(RandomNumberGenerator rng) { - Assert.Throws("data", () => rng.GetBytes(null, 0, 0)); - Assert.Throws("offset", () => rng.GetBytes(Array.Empty(), -1, 0)); - Assert.Throws("count", () => rng.GetBytes(Array.Empty(), 0, -1)); + AssertExtensions.Throws("data", () => rng.GetBytes(null, 0, 0)); + AssertExtensions.Throws("offset", () => rng.GetBytes(Array.Empty(), -1, 0)); + AssertExtensions.Throws("count", () => rng.GetBytes(Array.Empty(), 0, -1)); Assert.Throws(() => rng.GetBytes(Array.Empty(), 0, 1)); // GetBytes(null) covered in test NullInput() } diff --git a/src/System.Security.Cryptography.Algorithms/tests/SignatureDescriptionTests.cs b/src/System.Security.Cryptography.Algorithms/tests/SignatureDescriptionTests.cs index 2fd89c8a971c..d5777b41a42f 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/SignatureDescriptionTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/SignatureDescriptionTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. // @@ -24,7 +24,7 @@ public void Constructor_Default() [Fact] public void Constructor_Null() { - Assert.Throws("el", () => new SignatureDescription(null)); + AssertExtensions.Throws("el", () => new SignatureDescription(null)); } [Fact] @@ -109,7 +109,7 @@ public void Deformatter() DSA dsa = DSA.Create(); // Deformatter with all properties null - Assert.Throws("name", () => sig.CreateDeformatter(dsa)); + AssertExtensions.Throws("name", () => sig.CreateDeformatter(dsa)); // Deformatter with invalid DeformatterAlgorithm property sig.DeformatterAlgorithm = "DSA"; @@ -135,7 +135,7 @@ public void Digest() SignatureDescription sig = new SignatureDescription(); // null hash - Assert.Throws("name", () => hash = sig.CreateDigest()); + AssertExtensions.Throws("name", () => hash = sig.CreateDigest()); sig.DigestAlgorithm = "SHA1"; hash = sig.CreateDigest(); @@ -179,7 +179,7 @@ public void Formatter() DSA dsa = DSA.Create(); // Formatter with all properties null - Assert.Throws("name", () => sig.CreateFormatter(dsa)); + AssertExtensions.Throws("name", () => sig.CreateFormatter(dsa)); // Formatter with invalid FormatterAlgorithm property AsymmetricSignatureFormatter fmt = null; diff --git a/src/System.Security.Cryptography.Algorithms/tests/System.Security.Cryptography.Algorithms.Tests.csproj b/src/System.Security.Cryptography.Algorithms/tests/System.Security.Cryptography.Algorithms.Tests.csproj index 9d148ef42ac9..cfd193f946fb 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/System.Security.Cryptography.Algorithms.Tests.csproj +++ b/src/System.Security.Cryptography.Algorithms/tests/System.Security.Cryptography.Algorithms.Tests.csproj @@ -16,6 +16,9 @@ $(DefineConstants);netcoreapp + + Common\System\AssertExtensions.cs + CommonTest\System\PlatformDetection.cs diff --git a/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj b/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj index 02cd1148c48e..473c023cc4f9 100644 --- a/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj +++ b/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj @@ -20,6 +20,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Security.Cryptography.Csp/tests/RNGCryptoServiceProviderTests.cs b/src/System.Security.Cryptography.Csp/tests/RNGCryptoServiceProviderTests.cs index 3a29c3b409e9..d2a685af1fde 100644 --- a/src/System.Security.Cryptography.Csp/tests/RNGCryptoServiceProviderTests.cs +++ b/src/System.Security.Cryptography.Csp/tests/RNGCryptoServiceProviderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Linq; using Xunit; @@ -40,7 +41,7 @@ public static void GetNonZeroBytes() { using (var rng = new RNGCryptoServiceProvider()) { - Assert.Throws("data", () => rng.GetNonZeroBytes(null)); + AssertExtensions.Throws("data", () => rng.GetNonZeroBytes(null)); // Array should not have any zeros byte[] rand = new byte[65536]; diff --git a/src/System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj b/src/System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj index 1c494fda43fd..c24708180a6c 100644 --- a/src/System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj +++ b/src/System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj @@ -20,6 +20,9 @@ + + Common\System\AssertExtensions.cs + CommonTest\System\Security\Cryptography\ByteUtils.cs diff --git a/src/System.Security.Cryptography.Encoding/tests/Base64TransformsTests.cs b/src/System.Security.Cryptography.Encoding/tests/Base64TransformsTests.cs index c7ced87de52c..37fde07d3b8d 100644 --- a/src/System.Security.Cryptography.Encoding/tests/Base64TransformsTests.cs +++ b/src/System.Security.Cryptography.Encoding/tests/Base64TransformsTests.cs @@ -53,7 +53,7 @@ public void InvalidInput_ToBase64Transform() InvalidInput_Base64Transform(transform); // These exceptions only thrown in ToBase - Assert.Throws("offsetOut", () => transform.TransformFinalBlock(data_5bytes, 0, 5)); + AssertExtensions.Throws("offsetOut", () => transform.TransformFinalBlock(data_5bytes, 0, 5)); } } @@ -75,15 +75,15 @@ private void InvalidInput_Base64Transform(ICryptoTransform transform) { byte[] data_4bytes = Text.Encoding.ASCII.GetBytes("aaaa"); - Assert.Throws("inputBuffer", () => transform.TransformBlock(null, 0, 0, null, 0)); - Assert.Throws("inputOffset", () => transform.TransformBlock(Array.Empty(), -1, 0, null, 0)); - Assert.Throws("dst", () => transform.TransformBlock(data_4bytes, 0, 4, null, 0)); + AssertExtensions.Throws("inputBuffer", () => transform.TransformBlock(null, 0, 0, null, 0)); + AssertExtensions.Throws("inputOffset", () => transform.TransformBlock(Array.Empty(), -1, 0, null, 0)); + AssertExtensions.Throws("dst", () => transform.TransformBlock(data_4bytes, 0, 4, null, 0)); Assert.Throws(null, () => transform.TransformBlock(Array.Empty(), 0, 1, null, 0)); Assert.Throws(null, () => transform.TransformBlock(Array.Empty(), 1, 0, null, 0)); - Assert.Throws("inputBuffer", () => transform.TransformFinalBlock(null, 0, 0)); - Assert.Throws("inputOffset", () => transform.TransformFinalBlock(Array.Empty(), -1, 0)); - Assert.Throws("inputOffset", () => transform.TransformFinalBlock(Array.Empty(), -1, 0)); + AssertExtensions.Throws("inputBuffer", () => transform.TransformFinalBlock(null, 0, 0)); + AssertExtensions.Throws("inputOffset", () => transform.TransformFinalBlock(Array.Empty(), -1, 0)); + AssertExtensions.Throws("inputOffset", () => transform.TransformFinalBlock(Array.Empty(), -1, 0)); Assert.Throws(null, () => transform.TransformFinalBlock(Array.Empty(), 1, 0)); } @@ -128,7 +128,7 @@ public static void ValidateToBase64TransformFinalBlock(string data, string expec Assert.True(inputBytes.Length > 4); // Test passing blocks > 4 characters to TransformFinalBlock (not supported) - Assert.Throws("offsetOut", () => transform.TransformFinalBlock(inputBytes, 0, inputBytes.Length)); + AssertExtensions.Throws("offsetOut", () => transform.TransformFinalBlock(inputBytes, 0, inputBytes.Length)); } } diff --git a/src/System.Security.Cryptography.Encoding/tests/System.Security.Cryptography.Encoding.Tests.csproj b/src/System.Security.Cryptography.Encoding/tests/System.Security.Cryptography.Encoding.Tests.csproj index af0e73e9d173..186fd923b6fa 100644 --- a/src/System.Security.Cryptography.Encoding/tests/System.Security.Cryptography.Encoding.Tests.csproj +++ b/src/System.Security.Cryptography.Encoding/tests/System.Security.Cryptography.Encoding.Tests.csproj @@ -23,6 +23,9 @@ Common\System\Security\Cryptography\DerSequenceReader.cs + + Common\System\AssertExtensions.cs + CommonTest\System\Security\Cryptography\ByteUtils.cs diff --git a/src/System.Security.Cryptography.OpenSsl/tests/System.Security.Cryptography.OpenSsl.Tests.csproj b/src/System.Security.Cryptography.OpenSsl/tests/System.Security.Cryptography.OpenSsl.Tests.csproj index d23292848933..a966e6fcc623 100644 --- a/src/System.Security.Cryptography.OpenSsl/tests/System.Security.Cryptography.OpenSsl.Tests.csproj +++ b/src/System.Security.Cryptography.OpenSsl/tests/System.Security.Cryptography.OpenSsl.Tests.csproj @@ -16,6 +16,9 @@ Common\Interop\Unix\Interop.Libraries.cs + + Common\System\AssertExtensions.cs + CommonTest\System\Security\Cryptography\ByteUtils.cs diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CtorTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CtorTests.cs index 461bd8126390..897b93022168 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/CtorTests.cs +++ b/src/System.Security.Cryptography.X509Certificates/tests/CtorTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Runtime.InteropServices; using Xunit; @@ -330,8 +331,8 @@ public static void TestNullConstructorArguments() Assert.Throws(() => X509Certificate.CreateFromCertFile(null)); Assert.Throws(() => X509Certificate.CreateFromSignedFile(null)); - Assert.Throws("cert", () => new X509Certificate2((X509Certificate2)null)); - Assert.Throws("handle", () => new X509Certificate2(IntPtr.Zero)); + AssertExtensions.Throws("cert", () => new X509Certificate2((X509Certificate2)null)); + AssertExtensions.Throws("handle", () => new X509Certificate2(IntPtr.Zero)); // A null SecureString password does not throw using (new X509Certificate2(TestData.MsCertificate, (SecureString)null)) { } diff --git a/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj b/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj index f0384bf7a386..13a3989ecfa0 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj +++ b/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj @@ -35,6 +35,9 @@ + + Common\System\AssertExtensions.cs + CommonTest\System\Security\Cryptography\ByteUtils.cs diff --git a/src/System.Security.Cryptography.Xml/tests/EncryptionMethodTests.cs b/src/System.Security.Cryptography.Xml/tests/EncryptionMethodTests.cs index 153dc961d768..badf9507f75a 100644 --- a/src/System.Security.Cryptography.Xml/tests/EncryptionMethodTests.cs +++ b/src/System.Security.Cryptography.Xml/tests/EncryptionMethodTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Xml; using Xunit; @@ -44,7 +45,7 @@ public void KeySize_Set_SetsValue(int value) public void KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException(int value) { EncryptionMethod method = new EncryptionMethod(); - Assert.Throws("value", () => method.KeySize = value); + AssertExtensions.Throws("value", () => method.KeySize = value); } [Theory] @@ -146,7 +147,7 @@ public void LoadXml(string xml, string expectedKeyAlgorithm, int expectedKeySize [Fact] public void LoadXml_NullValue_ThrowsArgumentNullException() { - Assert.Throws("value", () => new EncryptionMethod().LoadXml(null)); + AssertExtensions.Throws("value", () => new EncryptionMethod().LoadXml(null)); } [Theory] @@ -164,4 +165,4 @@ public void LoadXml_NegativeKeySize_Throws(string keySize, Type exceptionType) Assert.Throws(exceptionType, () => method.LoadXml(value)); } } -} \ No newline at end of file +} diff --git a/src/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj b/src/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj index 7ecfcae91e92..1d5506fb7d95 100644 --- a/src/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj +++ b/src/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj @@ -53,6 +53,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Security.SecureString/tests/SecureStringTests.cs b/src/System.Security.SecureString/tests/SecureStringTests.cs index 256fa67c9b36..fe2e98112e56 100644 --- a/src/System.Security.SecureString/tests/SecureStringTests.cs +++ b/src/System.Security.SecureString/tests/SecureStringTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Linq; using System.Runtime.InteropServices; using System.Text; @@ -29,9 +30,9 @@ public static void Ctor(int length) [Fact] public static unsafe void Ctor_CharInt_Invalid() { - Assert.Throws("value", () => new SecureString(null, 0)); - Assert.Throws("length", () => { fixed (char* chars = "test") new SecureString(chars, -1); }); - Assert.Throws("length", () => CreateSecureString(CreateString(ushort.MaxValue + 2 /*65537: Max allowed length is 65536*/))); + AssertExtensions.Throws("value", () => new SecureString(null, 0)); + AssertExtensions.Throws("length", () => { fixed (char* chars = "test") new SecureString(chars, -1); }); + AssertExtensions.Throws("length", () => CreateSecureString(CreateString(ushort.MaxValue + 2 /*65537: Max allowed length is 65536*/))); } [Fact] @@ -55,7 +56,7 @@ public static void AppendChar_TooLong_Throws() { using (SecureString ss = CreateSecureString(CreateString(ushort.MaxValue + 1))) { - Assert.Throws("capacity", () => ss.AppendChar('a')); + AssertExtensions.Throws("capacity", () => ss.AppendChar('a')); } } @@ -198,13 +199,13 @@ public static void InsertAt_Invalid_Throws() { using (SecureString testString = CreateSecureString("bd")) { - Assert.Throws("index", () => testString.InsertAt(-1, 'S')); - Assert.Throws("index", () => testString.InsertAt(6, 'S')); + AssertExtensions.Throws("index", () => testString.InsertAt(-1, 'S')); + AssertExtensions.Throws("index", () => testString.InsertAt(6, 'S')); } using (SecureString testString = CreateSecureString(CreateString(ushort.MaxValue + 1))) { - Assert.Throws("capacity", () => testString.InsertAt(22, 'S')); + AssertExtensions.Throws("capacity", () => testString.InsertAt(22, 'S')); } } @@ -256,9 +257,9 @@ public static void RemoveAt_Invalid_Throws() { using (SecureString testString = CreateSecureString("test")) { - Assert.Throws("index", () => testString.RemoveAt(-1)); - Assert.Throws("index", () => testString.RemoveAt(testString.Length)); - Assert.Throws("index", () => testString.RemoveAt(testString.Length + 1)); + AssertExtensions.Throws("index", () => testString.RemoveAt(-1)); + AssertExtensions.Throws("index", () => testString.RemoveAt(testString.Length)); + AssertExtensions.Throws("index", () => testString.RemoveAt(testString.Length + 1)); } } @@ -292,19 +293,19 @@ public static void SetAt_Invalid_Throws() { using (SecureString testString = CreateSecureString("test")) { - Assert.Throws("index", () => testString.SetAt(-1, 'a')); - Assert.Throws("index", () => testString.SetAt(testString.Length, 'b')); - Assert.Throws("index", () => testString.SetAt(testString.Length + 1, 'c')); + AssertExtensions.Throws("index", () => testString.SetAt(-1, 'a')); + AssertExtensions.Throws("index", () => testString.SetAt(testString.Length, 'b')); + AssertExtensions.Throws("index", () => testString.SetAt(testString.Length + 1, 'c')); } } [Fact] public static void SecureStringMarshal_NullArgsAllowed_IntPtrZero() { - Assert.Throws("s", () => SecureStringMarshal.SecureStringToCoTaskMemAnsi(null)); - Assert.Throws("s", () => SecureStringMarshal.SecureStringToCoTaskMemUnicode(null)); - Assert.Throws("s", () => SecureStringMarshal.SecureStringToGlobalAllocAnsi(null)); - Assert.Throws("s", () => SecureStringMarshal.SecureStringToGlobalAllocUnicode(null)); + AssertExtensions.Throws("s", () => SecureStringMarshal.SecureStringToCoTaskMemAnsi(null)); + AssertExtensions.Throws("s", () => SecureStringMarshal.SecureStringToCoTaskMemUnicode(null)); + AssertExtensions.Throws("s", () => SecureStringMarshal.SecureStringToGlobalAllocAnsi(null)); + AssertExtensions.Throws("s", () => SecureStringMarshal.SecureStringToGlobalAllocUnicode(null)); } [Fact] diff --git a/src/System.Security.SecureString/tests/System.Security.SecureString.Tests.csproj b/src/System.Security.SecureString/tests/System.Security.SecureString.Tests.csproj index a8086cee2113..d354bca9be57 100644 --- a/src/System.Security.SecureString/tests/System.Security.SecureString.Tests.csproj +++ b/src/System.Security.SecureString/tests/System.Security.SecureString.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/ServiceControllerTests.cs b/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/ServiceControllerTests.cs index 52f50de9ef39..0470fd26223d 100644 --- a/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/ServiceControllerTests.cs +++ b/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/ServiceControllerTests.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.Win32; +using System; using System.Diagnostics; using System.Security.Principal; using Xunit; @@ -161,7 +162,7 @@ public void StartWithArguments() public void Start_NullArg_ThrowsArgumentNullException() { var controller = new ServiceController(_testService.TestServiceName); - Assert.Throws("args[0]", () => controller.Start(new string[] { null } )); + AssertExtensions.Throws("args[0]", () => controller.Start(new string[] { null } )); } [ConditionalFact(nameof(RunningWithElevatedPrivileges))] diff --git a/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/System.ServiceProcess.ServiceController.Tests.csproj b/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/System.ServiceProcess.ServiceController.Tests.csproj index 752fcc39960e..6b20cb91a0c9 100644 --- a/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/System.ServiceProcess.ServiceController.Tests.csproj +++ b/src/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.Tests/System.ServiceProcess.ServiceController.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Text.Encoding/tests/Decoder/Decoder.cs b/src/System.Text.Encoding/tests/Decoder/Decoder.cs index 78cdbd0fed02..c8be985ebd48 100644 --- a/src/System.Text.Encoding/tests/Decoder/Decoder.cs +++ b/src/System.Text.Encoding/tests/Decoder/Decoder.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -94,13 +94,13 @@ public static unsafe void ConvertNegativeTest() byte *pBytes = bytesPtr; char *pChars = charsPtr; - Assert.Throws("chars", () => decoder.Convert(pBytes, bytes.Length, null, 1, true, out bytesUsed, out charsUsed, out completed)); - Assert.Throws("bytes", () => decoder.Convert(null, bytes.Length, pChars, 1, true, out bytesUsed, out charsUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(pBytes, bytes.Length, null, 1, true, out bytesUsed, out charsUsed, out completed)); + AssertExtensions.Throws("bytes", () => decoder.Convert(null, bytes.Length, pChars, 1, true, out bytesUsed, out charsUsed, out completed)); - Assert.Throws("byteCount", () => decoder.Convert(pBytes, -1, pChars, 1, true, out bytesUsed, out charsUsed, out completed)); - Assert.Throws("charCount", () => decoder.Convert(pBytes, bytes.Length, pChars, -1, true, out bytesUsed, out charsUsed, out completed)); + AssertExtensions.Throws("byteCount", () => decoder.Convert(pBytes, -1, pChars, 1, true, out bytesUsed, out charsUsed, out completed)); + AssertExtensions.Throws("charCount", () => decoder.Convert(pBytes, bytes.Length, pChars, -1, true, out bytesUsed, out charsUsed, out completed)); - Assert.Throws("chars", () => decoder.Convert(pBytes, bytes.Length, pChars, 0, true, out bytesUsed, out charsUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(pBytes, bytes.Length, pChars, 0, true, out bytesUsed, out charsUsed, out completed)); } decoder = Encoding.GetEncoding("us-ascii", new EncoderExceptionFallback(), new DecoderExceptionFallback()).GetDecoder(); @@ -173,15 +173,15 @@ public static unsafe void GetCharsNegativeTest() byte *pBytes = bytesPtr; char *pChars = charsPtr; - Assert.Throws("chars", () => decoder.GetChars(pBytes, bytes.Length, null, 1, true)); - Assert.Throws("bytes", () => decoder.GetChars(null, bytes.Length, pChars, 1, true)); - Assert.Throws("bytes", () => decoder.GetCharCount(null, bytes.Length, true)); + AssertExtensions.Throws("chars", () => decoder.GetChars(pBytes, bytes.Length, null, 1, true)); + AssertExtensions.Throws("bytes", () => decoder.GetChars(null, bytes.Length, pChars, 1, true)); + AssertExtensions.Throws("bytes", () => decoder.GetCharCount(null, bytes.Length, true)); - Assert.Throws("byteCount", () => decoder.GetChars(pBytes, -1, pChars, 1, true)); - Assert.Throws("charCount", () => decoder.GetChars(pBytes, bytes.Length, pChars, -1, true)); - Assert.Throws("count", () => decoder.GetCharCount(pBytes, -1, true)); + AssertExtensions.Throws("byteCount", () => decoder.GetChars(pBytes, -1, pChars, 1, true)); + AssertExtensions.Throws("charCount", () => decoder.GetChars(pBytes, bytes.Length, pChars, -1, true)); + AssertExtensions.Throws("count", () => decoder.GetCharCount(pBytes, -1, true)); - Assert.Throws("chars", () => decoder.GetChars(pBytes, bytes.Length, pChars, 1, true)); + AssertExtensions.Throws("chars", () => decoder.GetChars(pBytes, bytes.Length, pChars, 1, true)); } decoder = Encoding.GetEncoding("us-ascii", new EncoderExceptionFallback(), new DecoderExceptionFallback()).GetDecoder(); diff --git a/src/System.Text.Encoding/tests/Encoder/Encoder.cs b/src/System.Text.Encoding/tests/Encoder/Encoder.cs index 3a998216d726..95f5f4885174 100644 --- a/src/System.Text.Encoding/tests/Encoder/Encoder.cs +++ b/src/System.Text.Encoding/tests/Encoder/Encoder.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -91,13 +91,13 @@ public static unsafe void ConvertNegativeTest() byte *pBytes = bytesPtr; char *pChars = charsPtr; - Assert.Throws("chars", () => encoder.Convert(null, chars.Length, pBytes, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); - Assert.Throws("bytes", () => encoder.Convert(pChars, chars.Length, null, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => encoder.Convert(null, chars.Length, pBytes, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(pChars, chars.Length, null, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); - Assert.Throws("byteCount", () => encoder.Convert(pChars, chars.Length, pBytes, -1, true, out charsUsed, out bytesUsed, out completed)); - Assert.Throws("charCount", () => encoder.Convert(pChars, -1, pBytes, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("byteCount", () => encoder.Convert(pChars, chars.Length, pBytes, -1, true, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("charCount", () => encoder.Convert(pChars, -1, pBytes, bytes.Length, true, out charsUsed, out bytesUsed, out completed)); - Assert.Throws("bytes", () => encoder.Convert(pChars, chars.Length, pBytes, 0, true, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(pChars, chars.Length, pBytes, 0, true, out charsUsed, out bytesUsed, out completed)); } encoder = Encoding.GetEncoding("us-ascii", new EncoderExceptionFallback(), new DecoderExceptionFallback()).GetEncoder(); @@ -166,15 +166,15 @@ public static unsafe void GetBytesNegativeTest() byte *pBytes = bytesPtr; char *pChars = charsPtr; - Assert.Throws("bytes", () => encoder.GetBytes(pChars, s.Length, null, 1, true)); - Assert.Throws("chars", () => encoder.GetBytes(null, s.Length, pBytes, 4, true)); - Assert.Throws("chars", () => encoder.GetByteCount(null, s.Length, true)); + AssertExtensions.Throws("bytes", () => encoder.GetBytes(pChars, s.Length, null, 1, true)); + AssertExtensions.Throws("chars", () => encoder.GetBytes(null, s.Length, pBytes, 4, true)); + AssertExtensions.Throws("chars", () => encoder.GetByteCount(null, s.Length, true)); - Assert.Throws("charCount", () => encoder.GetBytes(pChars, -1, pBytes, 4, true)); - Assert.Throws("byteCount", () => encoder.GetBytes(pChars, s.Length, pBytes, -1, true)); - Assert.Throws("count", () => encoder.GetByteCount(pChars, -1, true)); + AssertExtensions.Throws("charCount", () => encoder.GetBytes(pChars, -1, pBytes, 4, true)); + AssertExtensions.Throws("byteCount", () => encoder.GetBytes(pChars, s.Length, pBytes, -1, true)); + AssertExtensions.Throws("count", () => encoder.GetByteCount(pChars, -1, true)); - Assert.Throws("bytes", () => encoder.GetBytes(pChars, s.Length, pBytes, 1, true)); + AssertExtensions.Throws("bytes", () => encoder.GetBytes(pChars, s.Length, pBytes, 1, true)); } encoder = Encoding.GetEncoding("us-ascii", new EncoderExceptionFallback(), new DecoderExceptionFallback()).GetEncoder(); diff --git a/src/System.Text.Encoding/tests/Encoder/EncoderGetBytes2.cs b/src/System.Text.Encoding/tests/Encoder/EncoderGetBytes2.cs index cadf36dec380..28ebcbe9da3b 100644 --- a/src/System.Text.Encoding/tests/Encoder/EncoderGetBytes2.cs +++ b/src/System.Text.Encoding/tests/Encoder/EncoderGetBytes2.cs @@ -159,11 +159,11 @@ private void EncoderGetBytesMixedInputThrows(Encoder encoder, char[] chars, int byte[] b = new byte[byteLength]; - Assert.Throws("bytes", () => encoder.GetBytes(chars, 0, length, new byte[byteLength], 0, flush: true)); + AssertExtensions.Throws("bytes", () => encoder.GetBytes(chars, 0, length, new byte[byteLength], 0, flush: true)); // Fixed buffer so make larger b = new byte[20]; - Assert.Throws("bytes", () => VerificationFixedEncodingHelper(encoder, chars, length, b, byteLength)); + AssertExtensions.Throws("bytes", () => VerificationFixedEncodingHelper(encoder, chars, length, b, byteLength)); } private static unsafe void VerificationFixedEncodingHelper(Encoder encoder, char[] c, int charCount, byte[] b, int byteCount) diff --git a/src/System.Text.Encoding/tests/Encoding/EncodingConvertTests.cs b/src/System.Text.Encoding/tests/Encoding/EncodingConvertTests.cs index 7625d80165e2..1abdf4e9f11a 100644 --- a/src/System.Text.Encoding/tests/Encoding/EncodingConvertTests.cs +++ b/src/System.Text.Encoding/tests/Encoding/EncodingConvertTests.cs @@ -41,25 +41,25 @@ public void Convert(Encoding srcEncoding, Encoding dstEncoding, byte[] bytes, in public void Convert_Invalid() { // Bytes is null - Assert.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, null)); - Assert.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, null, 0, 0)); + AssertExtensions.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, null)); + AssertExtensions.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, null, 0, 0)); // SrcEncoding is null - Assert.Throws("srcEncoding", () => Encoding.Convert(null, Encoding.ASCII, new byte[0])); - Assert.Throws("srcEncoding", () => Encoding.Convert(null, Encoding.ASCII, new byte[0], 0, 0)); + AssertExtensions.Throws("srcEncoding", () => Encoding.Convert(null, Encoding.ASCII, new byte[0])); + AssertExtensions.Throws("srcEncoding", () => Encoding.Convert(null, Encoding.ASCII, new byte[0], 0, 0)); // DstEncoding is null - Assert.Throws("dstEncoding", () => Encoding.Convert(Encoding.ASCII, null, new byte[0])); - Assert.Throws("dstEncoding", () => Encoding.Convert(Encoding.ASCII, null, new byte[0], 0, 0)); + AssertExtensions.Throws("dstEncoding", () => Encoding.Convert(Encoding.ASCII, null, new byte[0])); + AssertExtensions.Throws("dstEncoding", () => Encoding.Convert(Encoding.ASCII, null, new byte[0], 0, 0)); // Invalid index - Assert.Throws("index", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], -1, 0)); - Assert.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 11, 0)); + AssertExtensions.Throws("index", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], -1, 0)); + AssertExtensions.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 11, 0)); // Invalid count - Assert.Throws("count", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 0, -1)); - Assert.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 0, 11)); - Assert.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 1, 10)); + AssertExtensions.Throws("count", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 0, -1)); + AssertExtensions.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 0, 11)); + AssertExtensions.Throws("bytes", () => Encoding.Convert(Encoding.ASCII, Encoding.ASCII, new byte[10], 1, 10)); } } } diff --git a/src/System.Text.Encoding/tests/Encoding/EncodingCtorTests.cs b/src/System.Text.Encoding/tests/Encoding/EncodingCtorTests.cs index cbfed824d3fa..69cd909838da 100644 --- a/src/System.Text.Encoding/tests/Encoding/EncodingCtorTests.cs +++ b/src/System.Text.Encoding/tests/Encoding/EncodingCtorTests.cs @@ -45,8 +45,8 @@ public void Ctor_Int_EncoderFallback_DecoderFallback(int codePage, EncoderFallba [Fact] public void Ctor_NegativeCodePage_ThrowsArgumentOutOfRangeException() { - Assert.Throws("codePage", () => new CustomEncoding(-1)); - Assert.Throws("codePage", () => new CustomEncoding(-1, null, null)); + AssertExtensions.Throws("codePage", () => new CustomEncoding(-1)); + AssertExtensions.Throws("codePage", () => new CustomEncoding(-1, null, null)); } [Fact] diff --git a/src/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs b/src/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs index 2a24fb56b5df..cf5475b76cec 100644 --- a/src/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs +++ b/src/System.Text.Encoding/tests/Encoding/EncodingGetEncodingTests.cs @@ -12,19 +12,19 @@ public class EncodingGetEncodingTest [Fact] public void GetEncoding_String_Invalid() { - Assert.Throws("name", () => Encoding.GetEncoding(null)); - Assert.Throws("name", () => Encoding.GetEncoding("no-such-encoding-name")); + AssertExtensions.Throws("name", () => Encoding.GetEncoding(null)); + AssertExtensions.Throws("name", () => Encoding.GetEncoding("no-such-encoding-name")); } [Fact] public void GetEncoding_Int_Invalid() { // Codepage is out of range - Assert.Throws("codepage", () => Encoding.GetEncoding(-1)); - Assert.Throws("codepage", () => Encoding.GetEncoding(65536)); + AssertExtensions.Throws("codepage", () => Encoding.GetEncoding(-1)); + AssertExtensions.Throws("codepage", () => Encoding.GetEncoding(65536)); // Codepage doesn't exist - Assert.Throws("codepage", () => Encoding.GetEncoding(42)); + AssertExtensions.Throws("codepage", () => Encoding.GetEncoding(42)); Assert.Throws(() => Encoding.GetEncoding(54321)); } diff --git a/src/System.Text.Encoding/tests/Fallback/DecoderReplacementFallbackTests.cs b/src/System.Text.Encoding/tests/Fallback/DecoderReplacementFallbackTests.cs index 295b1536808f..200eac7bc0d6 100644 --- a/src/System.Text.Encoding/tests/Fallback/DecoderReplacementFallbackTests.cs +++ b/src/System.Text.Encoding/tests/Fallback/DecoderReplacementFallbackTests.cs @@ -34,7 +34,7 @@ public void Ctor_String(string replacement) [Fact] public void Ctor_Invalid() { - Assert.Throws("replacement", () => new DecoderReplacementFallback(null)); + AssertExtensions.Throws("replacement", () => new DecoderReplacementFallback(null)); // Invalid surrogate pair Assert.Throws(() => new DecoderReplacementFallback("\uD800")); @@ -92,7 +92,7 @@ public void CreateFallbackBuffer_MultipleFallback_ThrowsArgumentException(string DecoderFallbackBuffer buffer = new DecoderReplacementFallback(replacement).CreateFallbackBuffer(); buffer.Fallback(new byte[] { 1 }, 0); - Assert.Throws("bytesUnknown", () => buffer.Fallback(new byte[] { 1 }, 0)); + AssertExtensions.Throws("bytesUnknown", () => buffer.Fallback(new byte[] { 1 }, 0)); } } } diff --git a/src/System.Text.Encoding/tests/Fallback/EncoderExceptionFallbackTests.cs b/src/System.Text.Encoding/tests/Fallback/EncoderExceptionFallbackTests.cs index 3d4672faf7f2..8096a76c1698 100644 --- a/src/System.Text.Encoding/tests/Fallback/EncoderExceptionFallbackTests.cs +++ b/src/System.Text.Encoding/tests/Fallback/EncoderExceptionFallbackTests.cs @@ -54,8 +54,8 @@ public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOu { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); - Assert.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); - Assert.Throws("charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); + AssertExtensions.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); + AssertExtensions.Throws("charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); } [Fact] @@ -64,8 +64,8 @@ public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOu { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); - Assert.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); - Assert.Throws("CharUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); + AssertExtensions.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); + AssertExtensions.Throws("CharUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); } } } diff --git a/src/System.Text.Encoding/tests/Fallback/EncoderReplacementFallbackTests.cs b/src/System.Text.Encoding/tests/Fallback/EncoderReplacementFallbackTests.cs index ba33164aa76d..0d5628f69e2a 100644 --- a/src/System.Text.Encoding/tests/Fallback/EncoderReplacementFallbackTests.cs +++ b/src/System.Text.Encoding/tests/Fallback/EncoderReplacementFallbackTests.cs @@ -34,7 +34,7 @@ public void Ctor_String(string replacement) [Fact] public void Ctor_Invalid() { - Assert.Throws("replacement", () => new EncoderReplacementFallback(null)); + AssertExtensions.Throws("replacement", () => new EncoderReplacementFallback(null)); // Invalid surrogate pair Assert.Throws(() => new EncoderReplacementFallback("\uD800")); @@ -90,8 +90,8 @@ public void CreateFallbackBuffer_MultipleFallback_ThrowsArgumentException(string EncoderFallbackBuffer buffer = new EncoderReplacementFallback(replacement).CreateFallbackBuffer(); buffer.Fallback('a', 0); - Assert.Throws("chars", () => buffer.Fallback('a', 0)); - Assert.Throws("chars", () => buffer.Fallback('\uD800', '\uDC00', 0)); + AssertExtensions.Throws("chars", () => buffer.Fallback('a', 0)); + AssertExtensions.Throws("chars", () => buffer.Fallback('\uD800', '\uDC00', 0)); } [Theory] @@ -109,8 +109,8 @@ public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOu { EncoderFallbackBuffer buffer = new EncoderReplacementFallback().CreateFallbackBuffer(); - Assert.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); - Assert.Throws("charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); + AssertExtensions.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); + AssertExtensions.Throws("charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); } [Fact] @@ -119,8 +119,8 @@ public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOu { EncoderFallbackBuffer buffer = new EncoderReplacementFallback().CreateFallbackBuffer(); - Assert.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); - Assert.Throws("CharUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); + AssertExtensions.Throws("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); + AssertExtensions.Throws("CharUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); } } } diff --git a/src/System.Text.Encoding/tests/NegativeEncodingTests.cs b/src/System.Text.Encoding/tests/NegativeEncodingTests.cs index 661ea54e96d6..b9f749cba91e 100644 --- a/src/System.Text.Encoding/tests/NegativeEncodingTests.cs +++ b/src/System.Text.Encoding/tests/NegativeEncodingTests.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -39,28 +40,28 @@ public static unsafe void GetByteCount_Invalid(Encoding encoding) { // Chars is null Assert.Throws(encoding is ASCIIEncoding ? "chars" : "s", () => encoding.GetByteCount((string)null)); - Assert.Throws("chars", () => encoding.GetByteCount((char[])null)); - Assert.Throws("chars", () => encoding.GetByteCount((char[])null, 0, 0)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount((char[])null)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount((char[])null, 0, 0)); // Index < 0 - Assert.Throws("index", () => encoding.GetByteCount(new char[3], -1, 0)); + AssertExtensions.Throws("index", () => encoding.GetByteCount(new char[3], -1, 0)); // Count < 0 - Assert.Throws("count", () => encoding.GetByteCount(new char[3], 0, -1)); + AssertExtensions.Throws("count", () => encoding.GetByteCount(new char[3], 0, -1)); // Index + count > chars.Length - Assert.Throws("chars", () => encoding.GetByteCount(new char[3], 0, 4)); - Assert.Throws("chars", () => encoding.GetByteCount(new char[3], 1, 3)); - Assert.Throws("chars", () => encoding.GetByteCount(new char[3], 2, 2)); - Assert.Throws("chars", () => encoding.GetByteCount(new char[3], 3, 1)); - Assert.Throws("chars", () => encoding.GetByteCount(new char[3], 4, 0)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(new char[3], 0, 4)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(new char[3], 1, 3)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(new char[3], 2, 2)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(new char[3], 3, 1)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(new char[3], 4, 0)); char[] chars = new char[3]; fixed (char* pChars = chars) { char* pCharsLocal = pChars; - Assert.Throws("chars", () => encoding.GetByteCount(null, 0)); - Assert.Throws("count", () => encoding.GetByteCount(pCharsLocal, -1)); + AssertExtensions.Throws("chars", () => encoding.GetByteCount(null, 0)); + AssertExtensions.Throws("count", () => encoding.GetByteCount(pCharsLocal, -1)); } } @@ -71,54 +72,54 @@ public static unsafe void GetBytes_Invalid(Encoding encoding) string expectedStringParamName = encoding is ASCIIEncoding ? "chars" : "s"; // Source is null - Assert.Throws("s", () => encoding.GetBytes((string)null)); - Assert.Throws("chars", () => encoding.GetBytes((char[])null)); - Assert.Throws("chars", () => encoding.GetBytes((char[])null, 0, 0)); + AssertExtensions.Throws("s", () => encoding.GetBytes((string)null)); + AssertExtensions.Throws("chars", () => encoding.GetBytes((char[])null)); + AssertExtensions.Throws("chars", () => encoding.GetBytes((char[])null, 0, 0)); Assert.Throws(expectedStringParamName, () => encoding.GetBytes((string)null, 0, 0, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes((char[])null, 0, 0, new byte[1], 0)); + AssertExtensions.Throws("chars", () => encoding.GetBytes((char[])null, 0, 0, new byte[1], 0)); // Bytes is null - Assert.Throws("bytes", () => encoding.GetBytes("abc", 0, 3, null, 0)); - Assert.Throws("bytes", () => encoding.GetBytes(new char[3], 0, 3, null, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes("abc", 0, 3, null, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(new char[3], 0, 3, null, 0)); // Char index < 0 - Assert.Throws("index", () => encoding.GetBytes(new char[1], -1, 0)); - Assert.Throws("charIndex", () => encoding.GetBytes("a", -1, 0, new byte[1], 0)); - Assert.Throws("charIndex", () => encoding.GetBytes(new char[1], -1, 0, new byte[1], 0)); + AssertExtensions.Throws("index", () => encoding.GetBytes(new char[1], -1, 0)); + AssertExtensions.Throws("charIndex", () => encoding.GetBytes("a", -1, 0, new byte[1], 0)); + AssertExtensions.Throws("charIndex", () => encoding.GetBytes(new char[1], -1, 0, new byte[1], 0)); // Char count < 0 - Assert.Throws("count", () => encoding.GetBytes(new char[1], 0, -1)); - Assert.Throws("charCount", () => encoding.GetBytes("a", 0, -1, new byte[1], 0)); - Assert.Throws("charCount", () => encoding.GetBytes(new char[1], 0, -1, new byte[1], 0)); + AssertExtensions.Throws("count", () => encoding.GetBytes(new char[1], 0, -1)); + AssertExtensions.Throws("charCount", () => encoding.GetBytes("a", 0, -1, new byte[1], 0)); + AssertExtensions.Throws("charCount", () => encoding.GetBytes(new char[1], 0, -1, new byte[1], 0)); // Char index + count > source.Length - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 2, 0)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 2, 0)); Assert.Throws(expectedStringParamName, () => encoding.GetBytes("a", 2, 0, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 2, 0, new byte[1], 0)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 2, 0, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 1, 1)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 1, 1)); Assert.Throws(expectedStringParamName, () => encoding.GetBytes("a", 1, 1, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 1, 1, new byte[1], 0)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 1, 1, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 0, 2)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 0, 2)); Assert.Throws(expectedStringParamName, () => encoding.GetBytes("a", 0, 2, new byte[1], 0)); - Assert.Throws("chars", () => encoding.GetBytes(new char[1], 0, 2, new byte[1], 0)); + AssertExtensions.Throws("chars", () => encoding.GetBytes(new char[1], 0, 2, new byte[1], 0)); // Byte index < 0 - Assert.Throws("byteIndex", () => encoding.GetBytes("a", 0, 1, new byte[1], -1)); - Assert.Throws("byteIndex", () => encoding.GetBytes(new char[1], 0, 1, new byte[1], -1)); + AssertExtensions.Throws("byteIndex", () => encoding.GetBytes("a", 0, 1, new byte[1], -1)); + AssertExtensions.Throws("byteIndex", () => encoding.GetBytes(new char[1], 0, 1, new byte[1], -1)); // Byte index > bytes.Length - Assert.Throws("byteIndex", () => encoding.GetBytes("a", 0, 1, new byte[1], 2)); - Assert.Throws("byteIndex", () => encoding.GetBytes(new char[1], 0, 1, new byte[1], 2)); + AssertExtensions.Throws("byteIndex", () => encoding.GetBytes("a", 0, 1, new byte[1], 2)); + AssertExtensions.Throws("byteIndex", () => encoding.GetBytes(new char[1], 0, 1, new byte[1], 2)); // Bytes does not have enough capacity to accomodate result - Assert.Throws("bytes", () => encoding.GetBytes("a", 0, 1, new byte[0], 0)); - Assert.Throws("bytes", () => encoding.GetBytes("abc", 0, 3, new byte[1], 0)); - Assert.Throws("bytes", () => encoding.GetBytes("\uD800\uDC00", 0, 2, new byte[1], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(new char[1], 0, 1, new byte[0], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(new char[3], 0, 3, new byte[1], 0)); - Assert.Throws("bytes", () => encoding.GetBytes("\uD800\uDC00".ToCharArray(), 0, 2, new byte[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes("a", 0, 1, new byte[0], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes("abc", 0, 3, new byte[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes("\uD800\uDC00", 0, 2, new byte[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(new char[1], 0, 1, new byte[0], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(new char[3], 0, 3, new byte[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes("\uD800\uDC00".ToCharArray(), 0, 2, new byte[1], 0)); char[] chars = new char[3]; byte[] bytes = new byte[3]; @@ -132,15 +133,15 @@ public static unsafe void GetBytes_Invalid(Encoding encoding) byte* pSmallBytesLocal = pSmallBytes; // Bytes or chars is null - Assert.Throws("chars", () => encoding.GetBytes((char*)null, 0, pBytesLocal, bytes.Length)); - Assert.Throws("bytes", () => encoding.GetBytes(pCharsLocal, chars.Length, (byte*)null, bytes.Length)); + AssertExtensions.Throws("chars", () => encoding.GetBytes((char*)null, 0, pBytesLocal, bytes.Length)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(pCharsLocal, chars.Length, (byte*)null, bytes.Length)); // CharCount or byteCount is negative - Assert.Throws("charCount", () => encoding.GetBytes(pCharsLocal, -1, pBytesLocal, bytes.Length)); - Assert.Throws("byteCount", () => encoding.GetBytes(pCharsLocal, chars.Length, pBytesLocal, -1)); + AssertExtensions.Throws("charCount", () => encoding.GetBytes(pCharsLocal, -1, pBytesLocal, bytes.Length)); + AssertExtensions.Throws("byteCount", () => encoding.GetBytes(pCharsLocal, chars.Length, pBytesLocal, -1)); // Bytes does not have enough capacity to accomodate result - Assert.Throws("bytes", () => encoding.GetBytes(pCharsLocal, chars.Length, pSmallBytesLocal, smallBytes.Length)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(pCharsLocal, chars.Length, pSmallBytesLocal, smallBytes.Length)); } } @@ -149,27 +150,27 @@ public static unsafe void GetBytes_Invalid(Encoding encoding) public static unsafe void GetCharCount_Invalid(Encoding encoding) { // Bytes is null - Assert.Throws("bytes", () => encoding.GetCharCount(null)); - Assert.Throws("bytes", () => encoding.GetCharCount(null, 0, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(null)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(null, 0, 0)); // Index or count < 0 - Assert.Throws("index", () => encoding.GetCharCount(new byte[4], -1, 0)); - Assert.Throws("count", () => encoding.GetCharCount(new byte[4], 0, -1)); + AssertExtensions.Throws("index", () => encoding.GetCharCount(new byte[4], -1, 0)); + AssertExtensions.Throws("count", () => encoding.GetCharCount(new byte[4], 0, -1)); // Index + count > bytes.Length - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 5, 0)); - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 4, 1)); - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 3, 2)); - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 2, 3)); - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 1, 4)); - Assert.Throws("bytes", () => encoding.GetCharCount(new byte[4], 0, 5)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 5, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 4, 1)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 3, 2)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 2, 3)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 1, 4)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(new byte[4], 0, 5)); byte[] bytes = new byte[4]; fixed (byte* pBytes = bytes) { byte* pBytesLocal = pBytes; - Assert.Throws("bytes", () => encoding.GetCharCount(null, 0)); - Assert.Throws("count", () => encoding.GetCharCount(pBytesLocal, -1)); + AssertExtensions.Throws("bytes", () => encoding.GetCharCount(null, 0)); + AssertExtensions.Throws("count", () => encoding.GetCharCount(pBytesLocal, -1)); } } @@ -178,39 +179,39 @@ public static unsafe void GetCharCount_Invalid(Encoding encoding) public static unsafe void GetChars_Invalid(Encoding encoding) { // Bytes is null - Assert.Throws("bytes", () => encoding.GetChars(null)); - Assert.Throws("bytes", () => encoding.GetChars(null, 0, 0)); - Assert.Throws("bytes", () => encoding.GetChars(null, 0, 0, new char[0], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(null)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(null, 0, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(null, 0, 0, new char[0], 0)); // Chars is null - Assert.Throws("chars", () => encoding.GetChars(new byte[4], 0, 4, null, 0)); + AssertExtensions.Throws("chars", () => encoding.GetChars(new byte[4], 0, 4, null, 0)); // Index < 0 - Assert.Throws("index", () => encoding.GetChars(new byte[4], -1, 4)); - Assert.Throws("byteIndex", () => encoding.GetChars(new byte[4], -1, 4, new char[1], 0)); + AssertExtensions.Throws("index", () => encoding.GetChars(new byte[4], -1, 4)); + AssertExtensions.Throws("byteIndex", () => encoding.GetChars(new byte[4], -1, 4, new char[1], 0)); // Count < 0 - Assert.Throws("count", () => encoding.GetChars(new byte[4], 0, -1)); - Assert.Throws("byteCount", () => encoding.GetChars(new byte[4], 0, -1, new char[1], 0)); + AssertExtensions.Throws("count", () => encoding.GetChars(new byte[4], 0, -1)); + AssertExtensions.Throws("byteCount", () => encoding.GetChars(new byte[4], 0, -1, new char[1], 0)); // Count > bytes.Length - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 0, 5)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 0, 5, new char[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 0, 5)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 0, 5, new char[1], 0)); // Index + count > bytes.Length - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 5, 0)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 5, 0, new char[1], 0)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 4, 1)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 4, 1, new char[1], 0)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 3, 2)); - Assert.Throws("bytes", () => encoding.GetChars(new byte[4], 3, 2, new char[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 5, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 5, 0, new char[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 4, 1)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 4, 1, new char[1], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 3, 2)); + AssertExtensions.Throws("bytes", () => encoding.GetChars(new byte[4], 3, 2, new char[1], 0)); // CharIndex < 0 or >= chars.Length - Assert.Throws("charIndex", () => encoding.GetChars(new byte[4], 0, 4, new char[1], -1)); - Assert.Throws("charIndex", () => encoding.GetChars(new byte[4], 0, 4, new char[1], 2)); + AssertExtensions.Throws("charIndex", () => encoding.GetChars(new byte[4], 0, 4, new char[1], -1)); + AssertExtensions.Throws("charIndex", () => encoding.GetChars(new byte[4], 0, 4, new char[1], 2)); // Chars does not have enough capacity to accomodate result - Assert.Throws("chars", () => encoding.GetChars(new byte[4], 0, 4, new char[1], 1)); + AssertExtensions.Throws("chars", () => encoding.GetChars(new byte[4], 0, 4, new char[1], 1)); byte[] bytes = new byte[encoding.GetMaxByteCount(2)]; char[] chars = new char[4]; @@ -224,15 +225,15 @@ public static unsafe void GetChars_Invalid(Encoding encoding) char* pSmallCharsLocal = pSmallChars; // Bytes or chars is null - Assert.Throws("bytes", () => encoding.GetChars((byte*)null, 0, pCharsLocal, chars.Length)); - Assert.Throws("chars", () => encoding.GetChars(pBytesLocal, bytes.Length, (char*)null, chars.Length)); + AssertExtensions.Throws("bytes", () => encoding.GetChars((byte*)null, 0, pCharsLocal, chars.Length)); + AssertExtensions.Throws("chars", () => encoding.GetChars(pBytesLocal, bytes.Length, (char*)null, chars.Length)); // ByteCount or charCount is negative - Assert.Throws("byteCount", () => encoding.GetChars(pBytesLocal, -1, pCharsLocal, chars.Length)); - Assert.Throws("charCount", () => encoding.GetChars(pBytesLocal, bytes.Length, pCharsLocal, -1)); + AssertExtensions.Throws("byteCount", () => encoding.GetChars(pBytesLocal, -1, pCharsLocal, chars.Length)); + AssertExtensions.Throws("charCount", () => encoding.GetChars(pBytesLocal, bytes.Length, pCharsLocal, -1)); // Chars does not have enough capacity to accomodate result - Assert.Throws("chars", () => encoding.GetChars(pBytesLocal, bytes.Length, pSmallCharsLocal, smallChars.Length)); + AssertExtensions.Throws("chars", () => encoding.GetChars(pBytesLocal, bytes.Length, pSmallCharsLocal, smallChars.Length)); } } @@ -240,19 +241,19 @@ public static unsafe void GetChars_Invalid(Encoding encoding) [MemberData(nameof(Encodings_TestData))] public static void GetMaxByteCount_Invalid(Encoding encoding) { - Assert.Throws("charCount", () => encoding.GetMaxByteCount(-1)); + AssertExtensions.Throws("charCount", () => encoding.GetMaxByteCount(-1)); if (!encoding.IsSingleByte) { - Assert.Throws("charCount", () => encoding.GetMaxByteCount(int.MaxValue / 2)); + AssertExtensions.Throws("charCount", () => encoding.GetMaxByteCount(int.MaxValue / 2)); } - Assert.Throws("charCount", () => encoding.GetMaxByteCount(int.MaxValue)); + AssertExtensions.Throws("charCount", () => encoding.GetMaxByteCount(int.MaxValue)); // Make sure that GetMaxByteCount respects the MaxCharCount property of EncoderFallback // However, Utf7Encoding ignores this if (!(encoding is UTF7Encoding)) { Encoding customizedMaxCharCountEncoding = Encoding.GetEncoding(encoding.CodePage, new HighMaxCharCountEncoderFallback(), DecoderFallback.ReplacementFallback); - Assert.Throws("charCount", () => customizedMaxCharCountEncoding.GetMaxByteCount(2)); + AssertExtensions.Throws("charCount", () => customizedMaxCharCountEncoding.GetMaxByteCount(2)); } } @@ -260,12 +261,12 @@ public static void GetMaxByteCount_Invalid(Encoding encoding) [MemberData(nameof(Encodings_TestData))] public static void GetMaxCharCount_Invalid(Encoding encoding) { - Assert.Throws("byteCount", () => encoding.GetMaxCharCount(-1)); + AssertExtensions.Throws("byteCount", () => encoding.GetMaxCharCount(-1)); // TODO: find a more generic way to find what byteCount is invalid if (encoding is UTF8Encoding) { - Assert.Throws("byteCount", () => encoding.GetMaxCharCount(int.MaxValue)); + AssertExtensions.Throws("byteCount", () => encoding.GetMaxCharCount(int.MaxValue)); } // Make sure that GetMaxCharCount respects the MaxCharCount property of DecoderFallback @@ -273,7 +274,7 @@ public static void GetMaxCharCount_Invalid(Encoding encoding) if (!(encoding is UTF7Encoding) && !(encoding is UTF32Encoding)) { Encoding customizedMaxCharCountEncoding = Encoding.GetEncoding(encoding.CodePage, EncoderFallback.ReplacementFallback, new HighMaxCharCountDecoderFallback()); - Assert.Throws("byteCount", () => customizedMaxCharCountEncoding.GetMaxCharCount(2)); + AssertExtensions.Throws("byteCount", () => customizedMaxCharCountEncoding.GetMaxCharCount(2)); } } @@ -282,17 +283,17 @@ public static void GetMaxCharCount_Invalid(Encoding encoding) public static void GetString_Invalid(Encoding encoding) { // Bytes is null - Assert.Throws("bytes", () => encoding.GetString(null)); - Assert.Throws("bytes", () => encoding.GetString(null, 0, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetString(null)); + AssertExtensions.Throws("bytes", () => encoding.GetString(null, 0, 0)); // Index or count < 0 Assert.Throws(encoding is ASCIIEncoding ? "byteIndex" : "index", () => encoding.GetString(new byte[1], -1, 0)); Assert.Throws(encoding is ASCIIEncoding ? "byteCount" : "count", () => encoding.GetString(new byte[1], 0, -1)); // Index + count > bytes.Length - Assert.Throws("bytes", () => encoding.GetString(new byte[1], 2, 0)); - Assert.Throws("bytes", () => encoding.GetString(new byte[1], 1, 1)); - Assert.Throws("bytes", () => encoding.GetString(new byte[1], 0, 2)); + AssertExtensions.Throws("bytes", () => encoding.GetString(new byte[1], 2, 0)); + AssertExtensions.Throws("bytes", () => encoding.GetString(new byte[1], 1, 1)); + AssertExtensions.Throws("bytes", () => encoding.GetString(new byte[1], 0, 2)); } public static unsafe void Encode_Invalid(Encoding encoding, string chars, int index, int count) @@ -378,16 +379,16 @@ public static IEnumerable Encoders_TestData() public static void Encoder_GetByteCount_Invalid(Encoder encoder, bool flush) { // Chars is null - Assert.Throws("chars", () => encoder.GetByteCount(null, 0, 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetByteCount(null, 0, 0, flush)); // Index is invalid - Assert.Throws("index", () => encoder.GetByteCount(new char[4], -1, 0, flush)); - Assert.Throws("chars", () => encoder.GetByteCount(new char[4], 5, 0, flush)); + AssertExtensions.Throws("index", () => encoder.GetByteCount(new char[4], -1, 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetByteCount(new char[4], 5, 0, flush)); // Count is invalid - Assert.Throws("count", () => encoder.GetByteCount(new char[4], 0, -1, flush)); - Assert.Throws("chars", () => encoder.GetByteCount(new char[4], 0, 5, flush)); - Assert.Throws("chars", () => encoder.GetByteCount(new char[4], 1, 4, flush)); + AssertExtensions.Throws("count", () => encoder.GetByteCount(new char[4], 0, -1, flush)); + AssertExtensions.Throws("chars", () => encoder.GetByteCount(new char[4], 0, 5, flush)); + AssertExtensions.Throws("chars", () => encoder.GetByteCount(new char[4], 1, 4, flush)); } [Theory] @@ -395,27 +396,27 @@ public static void Encoder_GetByteCount_Invalid(Encoder encoder, bool flush) public static void Encoder_GetBytes_Invalid(Encoder encoder, bool flush) { // Chars is null - Assert.Throws("chars", () => encoder.GetBytes(null, 0, 0, new byte[4], 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetBytes(null, 0, 0, new byte[4], 0, flush)); // CharIndex is invalid - Assert.Throws("charIndex", () => encoder.GetBytes(new char[4], -1, 0, new byte[4], 0, flush)); - Assert.Throws("chars", () => encoder.GetBytes(new char[4], 5, 0, new byte[4], 0, flush)); + AssertExtensions.Throws("charIndex", () => encoder.GetBytes(new char[4], -1, 0, new byte[4], 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetBytes(new char[4], 5, 0, new byte[4], 0, flush)); // CharCount is invalid - Assert.Throws("charCount", () => encoder.GetBytes(new char[4], 0, -1, new byte[4], 0, flush)); - Assert.Throws("chars", () => encoder.GetBytes(new char[4], 0, 5, new byte[4], 0, flush)); - Assert.Throws("chars", () => encoder.GetBytes(new char[4], 1, 4, new byte[4], 0, flush)); + AssertExtensions.Throws("charCount", () => encoder.GetBytes(new char[4], 0, -1, new byte[4], 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetBytes(new char[4], 0, 5, new byte[4], 0, flush)); + AssertExtensions.Throws("chars", () => encoder.GetBytes(new char[4], 1, 4, new byte[4], 0, flush)); // Bytes is null - Assert.Throws("bytes", () => encoder.GetBytes(new char[1], 0, 1, null, 0, flush)); + AssertExtensions.Throws("bytes", () => encoder.GetBytes(new char[1], 0, 1, null, 0, flush)); // ByteIndex is invalid - Assert.Throws("byteIndex", () => encoder.GetBytes(new char[1], 0, 1, new byte[4], -1, flush)); - Assert.Throws("byteIndex", () => encoder.GetBytes(new char[1], 0, 1, new byte[4], 5, flush)); + AssertExtensions.Throws("byteIndex", () => encoder.GetBytes(new char[1], 0, 1, new byte[4], -1, flush)); + AssertExtensions.Throws("byteIndex", () => encoder.GetBytes(new char[1], 0, 1, new byte[4], 5, flush)); // Bytes does not have enough space int byteCount = encoder.GetByteCount(new char[] { 'a' }, 0, 1, flush); - Assert.Throws("bytes", () => encoder.GetBytes(new char[] { 'a' }, 0, 1, new byte[byteCount - 1], 0, flush)); + AssertExtensions.Throws("bytes", () => encoder.GetBytes(new char[] { 'a' }, 0, 1, new byte[byteCount - 1], 0, flush)); } [Theory] @@ -434,50 +435,50 @@ public static void Encoder_Convert_Invalid(Encoder encoder, bool flush) }; // Chars is null - Assert.Throws("chars", () => encoder.Convert(null, 0, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => encoder.Convert(null, 0, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // CharIndex is invalid - Assert.Throws("charIndex", () => encoder.Convert(new char[4], -1, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("charIndex", () => encoder.Convert(new char[4], -1, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => encoder.Convert(new char[4], 5, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => encoder.Convert(new char[4], 5, 0, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // CharCount is invalid - Assert.Throws("charCount", () => encoder.Convert(new char[4], 0, -1, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("charCount", () => encoder.Convert(new char[4], 0, -1, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => encoder.Convert(new char[4], 0, 5, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => encoder.Convert(new char[4], 0, 5, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => encoder.Convert(new char[4], 1, 4, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => encoder.Convert(new char[4], 1, 4, new byte[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // Bytes is null - Assert.Throws("bytes", () => encoder.Convert(new char[1], 0, 1, null, 0, 0, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(new char[1], 0, 1, null, 0, 0, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // ByteIndex is invalid - Assert.Throws("byteIndex", () => encoder.Convert(new char[1], 0, 0, new byte[4], -1, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("byteIndex", () => encoder.Convert(new char[1], 0, 0, new byte[4], -1, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 5, 0, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 5, 0, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // ByteCount is invalid - Assert.Throws("byteCount", () => encoder.Convert(new char[1], 0, 0, new byte[4], 0, -1, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("byteCount", () => encoder.Convert(new char[1], 0, 0, new byte[4], 0, -1, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 0, 5, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 0, 5, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 1, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(new char[1], 0, 0, new byte[4], 1, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // Bytes does not have enough space int byteCount = encoder.GetByteCount(new char[] { 'a' }, 0, 1, flush); - Assert.Throws("bytes", () => encoder.Convert(new char[] { 'a' }, 0, 1, new byte[byteCount - 1], 0, byteCount - 1, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => encoder.Convert(new char[] { 'a' }, 0, 1, new byte[byteCount - 1], 0, byteCount - 1, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); } @@ -496,16 +497,16 @@ public static IEnumerable Decoders_TestData() public static void Decoder_GetCharCount_Invalid(Encoding _, Decoder decoder, bool flush) { // Bytes is null - Assert.Throws("bytes", () => decoder.GetCharCount(null, 0, 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetCharCount(null, 0, 0, flush)); // Index is invalid - Assert.Throws("index", () => decoder.GetCharCount(new byte[4], -1, 0, flush)); - Assert.Throws("bytes", () => decoder.GetCharCount(new byte[4], 5, 0, flush)); + AssertExtensions.Throws("index", () => decoder.GetCharCount(new byte[4], -1, 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetCharCount(new byte[4], 5, 0, flush)); // Count is invalid - Assert.Throws("count", () => decoder.GetCharCount(new byte[4], 0, -1, flush)); - Assert.Throws("bytes", () => decoder.GetCharCount(new byte[4], 0, 5, flush)); - Assert.Throws("bytes", () => decoder.GetCharCount(new byte[4], 1, 4, flush)); + AssertExtensions.Throws("count", () => decoder.GetCharCount(new byte[4], 0, -1, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetCharCount(new byte[4], 0, 5, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetCharCount(new byte[4], 1, 4, flush)); } [Theory] @@ -513,28 +514,28 @@ public static void Decoder_GetCharCount_Invalid(Encoding _, Decoder decoder, boo public static void Decoder_GetChars_Invalid(Encoding _, Decoder decoder, bool flush) { // Bytes is null - Assert.Throws("bytes", () => decoder.GetChars(null, 0, 0, new char[4], 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetChars(null, 0, 0, new char[4], 0, flush)); // ByteIndex is invalid - Assert.Throws("byteIndex", () => decoder.GetChars(new byte[4], -1, 0, new char[4], 0, flush)); - Assert.Throws("bytes", () => decoder.GetChars(new byte[4], 5, 0, new char[4], 0, flush)); + AssertExtensions.Throws("byteIndex", () => decoder.GetChars(new byte[4], -1, 0, new char[4], 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetChars(new byte[4], 5, 0, new char[4], 0, flush)); // ByteCount is invalid - Assert.Throws("byteCount", () => decoder.GetChars(new byte[4], 0, -1, new char[4], 0, flush)); - Assert.Throws("bytes", () => decoder.GetChars(new byte[4], 0, 5, new char[4], 0, flush)); - Assert.Throws("bytes", () => decoder.GetChars(new byte + AssertExtensions.Throws("byteCount", () => decoder.GetChars(new byte[4], 0, -1, new char[4], 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetChars(new byte[4], 0, 5, new char[4], 0, flush)); + AssertExtensions.Throws("bytes", () => decoder.GetChars(new byte [4], 1, 4, new char[4], 0, flush)); // Chars is null - Assert.Throws("chars", () => decoder.GetChars(new byte[1], 0, 1, null, 0, flush)); + AssertExtensions.Throws("chars", () => decoder.GetChars(new byte[1], 0, 1, null, 0, flush)); // CharIndex is invalid - Assert.Throws("charIndex", () => decoder.GetChars(new byte[1], 0, 1, new char[4], -1, flush)); - Assert.Throws("charIndex", () => decoder.GetChars(new byte[1], 0, 1, new char[4], 5, flush)); + AssertExtensions.Throws("charIndex", () => decoder.GetChars(new byte[1], 0, 1, new char[4], -1, flush)); + AssertExtensions.Throws("charIndex", () => decoder.GetChars(new byte[1], 0, 1, new char[4], 5, flush)); // Chars does not have enough space int charCount = decoder.GetCharCount(new byte[4], 0, 4, flush); - Assert.Throws("chars", () => decoder.GetChars(new byte[4], 0, 4, new char[charCount - 1], 0, flush)); + AssertExtensions.Throws("chars", () => decoder.GetChars(new byte[4], 0, 4, new char[charCount - 1], 0, flush)); } [Theory] @@ -553,49 +554,49 @@ public static void Decoder_Convert_Invalid(Encoding encoding, Decoder decoder, b }; // Bytes is null - Assert.Throws("bytes", () => decoder.Convert(null, 0, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => decoder.Convert(null, 0, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // ByteIndex is invalid - Assert.Throws("byteIndex", () => decoder.Convert(new byte[4], -1, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("byteIndex", () => decoder.Convert(new byte[4], -1, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => decoder.Convert(new byte[4], 5, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => decoder.Convert(new byte[4], 5, 0, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // ByteCount is invalid - Assert.Throws("byteCount", () => decoder.Convert(new byte[4], 0, -1, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("byteCount", () => decoder.Convert(new byte[4], 0, -1, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => decoder.Convert(new byte[4], 0, 5, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => decoder.Convert(new byte[4], 0, 5, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("bytes", () => decoder.Convert(new byte[4], 1, 4, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("bytes", () => decoder.Convert(new byte[4], 1, 4, new char[4], 0, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // Chars is null - Assert.Throws("chars", () => decoder.Convert(new byte[1], 0, 1, null, 0, 0, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(new byte[1], 0, 1, null, 0, 0, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // CharIndex is invalid - Assert.Throws("charIndex", () => decoder.Convert(new byte[1], 0, 0, new char[4], -1, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("charIndex", () => decoder.Convert(new byte[1], 0, 0, new char[4], -1, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 5, 0, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 5, 0, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // CharCount is invalid - Assert.Throws("charCount", () => decoder.Convert(new byte[1], 0, 0, new char[4], 0, -1, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("charCount", () => decoder.Convert(new byte[1], 0, 0, new char[4], 0, -1, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 0, 5, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 0, 5, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); - Assert.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 1, 4, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(new byte[1], 0, 0, new char[4], 1, 4, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); // Chars does not have enough space - Assert.Throws("chars", () => decoder.Convert(new byte[4], 0, 4, new char[0], 0, 0, flush, out charsUsed, out bytesUsed, out completed)); + AssertExtensions.Throws("chars", () => decoder.Convert(new byte[4], 0, 4, new char[0], 0, 0, flush, out charsUsed, out bytesUsed, out completed)); verifyOutParams(); } } diff --git a/src/System.Text.Encoding/tests/NegativeEncodingTests.netcoreapp.cs b/src/System.Text.Encoding/tests/NegativeEncodingTests.netcoreapp.cs index 6de577c230bf..372861132190 100644 --- a/src/System.Text.Encoding/tests/NegativeEncodingTests.netcoreapp.cs +++ b/src/System.Text.Encoding/tests/NegativeEncodingTests.netcoreapp.cs @@ -1,7 +1,8 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using Xunit; @@ -14,20 +15,20 @@ public static partial class NegativeEncodingTests public static unsafe void GetByteCount_Invalid_NetCoreApp(Encoding encoding) { // Chars is null - Assert.Throws("s", () => encoding.GetByteCount((string)null, 0, 0)); + AssertExtensions.Throws("s", () => encoding.GetByteCount((string)null, 0, 0)); // Index < 0 - Assert.Throws("index", () => encoding.GetByteCount("abc", -1, 0)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", -1, 0)); // Count < 0 - Assert.Throws("count", () => encoding.GetByteCount("abc", 0, -1)); + AssertExtensions.Throws("count", () => encoding.GetByteCount("abc", 0, -1)); // Index + count > chars.Length - Assert.Throws("index", () => encoding.GetByteCount("abc", 0, 4)); - Assert.Throws("index", () => encoding.GetByteCount("abc", 1, 3)); - Assert.Throws("index", () => encoding.GetByteCount("abc", 2, 2)); - Assert.Throws("index", () => encoding.GetByteCount("abc", 3, 1)); - Assert.Throws("index", () => encoding.GetByteCount("abc", 4, 0)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", 0, 4)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", 1, 3)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", 2, 2)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", 3, 1)); + AssertExtensions.Throws("index", () => encoding.GetByteCount("abc", 4, 0)); } [Theory] @@ -35,18 +36,18 @@ public static unsafe void GetByteCount_Invalid_NetCoreApp(Encoding encoding) public static unsafe void GetBytes_Invalid_NetCoreApp(Encoding encoding) { // Source is null - Assert.Throws("s", () => encoding.GetBytes((string)null, 0, 0)); + AssertExtensions.Throws("s", () => encoding.GetBytes((string)null, 0, 0)); // CharIndex < 0 - Assert.Throws("index", () => encoding.GetBytes("a", -1, 0)); + AssertExtensions.Throws("index", () => encoding.GetBytes("a", -1, 0)); // CharCount < 0 - Assert.Throws("count", () => encoding.GetBytes("a", 0, -1)); + AssertExtensions.Throws("count", () => encoding.GetBytes("a", 0, -1)); // CharIndex + charCount > source.Length - Assert.Throws("index", () => encoding.GetBytes("a", 2, 0)); - Assert.Throws("index", () => encoding.GetBytes("a", 1, 1)); - Assert.Throws("index", () => encoding.GetBytes("a", 0, 2)); + AssertExtensions.Throws("index", () => encoding.GetBytes("a", 2, 0)); + AssertExtensions.Throws("index", () => encoding.GetBytes("a", 1, 1)); + AssertExtensions.Throws("index", () => encoding.GetBytes("a", 0, 2)); } } } diff --git a/src/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj b/src/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj index 38004a0195dd..204e47f4e635 100644 --- a/src/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj +++ b/src/System.Text.Encoding/tests/System.Text.Encoding.Tests.csproj @@ -79,6 +79,9 @@ + + Common\System\AssertExtensions.cs + diff --git a/src/System.Text.Encoding/tests/UTF8Encoding/UTF8EncodingEncode.cs b/src/System.Text.Encoding/tests/UTF8Encoding/UTF8EncodingEncode.cs index cefb4a74eacb..e2e7bbc793a2 100644 --- a/src/System.Text.Encoding/tests/UTF8Encoding/UTF8EncodingEncode.cs +++ b/src/System.Text.Encoding/tests/UTF8Encoding/UTF8EncodingEncode.cs @@ -202,22 +202,22 @@ public static unsafe void GetBytes_InvalidASCIIUnicode() Encoding encoding = Encoding.UTF8; // Bytes does not have enough capacity to accomodate result string s = "T\uD83D\uDE01est"; - Assert.Throws("bytes", () => encoding.GetBytes(s, 0, 2, new byte[3], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(s, 0, 3, new byte[4], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(s, 0, 4, new byte[5], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(s, 0, 5, new byte[6], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(s, 0, 2, new byte[3], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(s, 0, 3, new byte[4], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(s, 0, 4, new byte[5], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(s, 0, 5, new byte[6], 0)); char[] c = s.ToCharArray(); - Assert.Throws("bytes", () => encoding.GetBytes(c, 0, 2, new byte[3], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(c, 0, 3, new byte[4], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(c, 0, 4, new byte[5], 0)); - Assert.Throws("bytes", () => encoding.GetBytes(c, 0, 5, new byte[6], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(c, 0, 2, new byte[3], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(c, 0, 3, new byte[4], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(c, 0, 4, new byte[5], 0)); + AssertExtensions.Throws("bytes", () => encoding.GetBytes(c, 0, 5, new byte[6], 0)); byte[] b = new byte[8]; - Assert.Throws("bytes", () => FixedEncodingHelper(c, 2, b, 3)); - Assert.Throws("bytes", () => FixedEncodingHelper(c, 3, b, 4)); - Assert.Throws("bytes", () => FixedEncodingHelper(c, 4, b, 5)); - Assert.Throws("bytes", () => FixedEncodingHelper(c, 5, b, 6)); + AssertExtensions.Throws("bytes", () => FixedEncodingHelper(c, 2, b, 3)); + AssertExtensions.Throws("bytes", () => FixedEncodingHelper(c, 3, b, 4)); + AssertExtensions.Throws("bytes", () => FixedEncodingHelper(c, 4, b, 5)); + AssertExtensions.Throws("bytes", () => FixedEncodingHelper(c, 5, b, 6)); } private static unsafe void FixedEncodingHelper(char[] c, int charCount, byte[] b, int byteCount) diff --git a/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncoding.cs b/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncoding.cs index afbf30444794..9813621eb615 100644 --- a/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncoding.cs +++ b/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncoding.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -56,15 +56,15 @@ public static unsafe void GetBytesNegativeTest() char *pChars = pCharsPtr; char *pInvalidSurrogate = pInvalidSurrogatePtr; - Assert.Throws("chars", () => enc.GetBytes(null, 1, pBytes, 1)); - Assert.Throws("chars", () => enc.GetByteCount(null, 1)); - Assert.Throws("bytes", () => enc.GetBytes(pChars, 1, null, 1)); + AssertExtensions.Throws("chars", () => enc.GetBytes(null, 1, pBytes, 1)); + AssertExtensions.Throws("chars", () => enc.GetByteCount(null, 1)); + AssertExtensions.Throws("bytes", () => enc.GetBytes(pChars, 1, null, 1)); - Assert.Throws("charCount", () => enc.GetBytes(pChars, -1, pBytes, 1)); - Assert.Throws("count", () => enc.GetByteCount(pChars, -1)); - Assert.Throws("byteCount", () => enc.GetBytes(pChars, 1, pBytes, -1)); + AssertExtensions.Throws("charCount", () => enc.GetBytes(pChars, -1, pBytes, 1)); + AssertExtensions.Throws("count", () => enc.GetByteCount(pChars, -1)); + AssertExtensions.Throws("byteCount", () => enc.GetBytes(pChars, 1, pBytes, -1)); - Assert.Throws("bytes", () => enc.GetBytes(pChars, 4, pBytes, 1)); + AssertExtensions.Throws("bytes", () => enc.GetBytes(pChars, 4, pBytes, 1)); Assert.Throws(() => enc.GetBytes(pInvalidSurrogate, 2, pBytes, 10)); Assert.Throws(() => enc.GetByteCount(pInvalidSurrogate, 2)); @@ -88,15 +88,15 @@ public static unsafe void GetCharsNegativeTest() byte *pInvalid = pInvalidPtr; char *pChars = pCharsPtr; - Assert.Throws("bytes", () => enc.GetChars(null, bytes.Length, pChars, 20)); - Assert.Throws("bytes", () => enc.GetCharCount(null, bytes.Length)); - Assert.Throws("chars", () => enc.GetChars(pBytes, bytes.Length, null, 20)); + AssertExtensions.Throws("bytes", () => enc.GetChars(null, bytes.Length, pChars, 20)); + AssertExtensions.Throws("bytes", () => enc.GetCharCount(null, bytes.Length)); + AssertExtensions.Throws("chars", () => enc.GetChars(pBytes, bytes.Length, null, 20)); - Assert.Throws("byteCount", () => enc.GetChars(pBytes, -1, pChars, 20)); - Assert.Throws("count", () => enc.GetCharCount(pBytes, -1)); - Assert.Throws("charCount", () => enc.GetChars(pBytes, bytes.Length, pChars, -1)); + AssertExtensions.Throws("byteCount", () => enc.GetChars(pBytes, -1, pChars, 20)); + AssertExtensions.Throws("count", () => enc.GetCharCount(pBytes, -1)); + AssertExtensions.Throws("charCount", () => enc.GetChars(pBytes, bytes.Length, pChars, -1)); - Assert.Throws("chars", () => enc.GetChars(pBytes, bytes.Length, pChars, 1)); + AssertExtensions.Throws("chars", () => enc.GetChars(pBytes, bytes.Length, pChars, 1)); Assert.Throws(() => enc.GetChars(pInvalid, invalid.Length, pChars, 20)); Assert.Throws(() => enc.GetCharCount(pInvalid, invalid.Length)); diff --git a/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncodingEncode.cs b/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncodingEncode.cs index f5da127dbb2f..ae24834d0936 100644 --- a/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncodingEncode.cs +++ b/src/System.Text.Encoding/tests/UnicodeEncoding/UnicodeEncodingEncode.cs @@ -120,7 +120,7 @@ public unsafe void GetByteCount_OverlyLargeCount_ThrowsArgumentOutOfRangeExcepti fixed (char* pChars = "abc") { char* pCharsLocal = pChars; - Assert.Throws("count", () => encoding.GetByteCount(pCharsLocal, int.MaxValue / 2 + 1)); + AssertExtensions.Throws("count", () => encoding.GetByteCount(pCharsLocal, int.MaxValue / 2 + 1)); } } diff --git a/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.cs b/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.cs index 20e073409397..7d11a3d06378 100644 --- a/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.cs +++ b/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.cs @@ -63,8 +63,8 @@ public static void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException() Regex regex = new Regex(@"(?a*)(?b*)(?c*)"); CaptureCollection captures = regex.Match("aaabbccccccccccaaaabc").Captures; - Assert.Throws("i", () => captures[-1]); - Assert.Throws("i", () => captures[captures.Count]); + AssertExtensions.Throws("i", () => captures[-1]); + AssertExtensions.Throws("i", () => captures[captures.Count]); } [Fact] @@ -108,7 +108,7 @@ public static void ICollection_CopyTo_Invalid() ICollection collection = regex.Match("aaabbccccccccccaaaabc").Captures; // Array is null - Assert.Throws("array", () => collection.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => collection.CopyTo(null, 0)); // Array is multidimensional Assert.Throws(null, () => collection.CopyTo(new object[10, 10], 0)); diff --git a/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.netcoreapp.cs b/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.netcoreapp.cs index 87d3a49cafc0..5e606a12f263 100644 --- a/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.netcoreapp.cs +++ b/src/System.Text.RegularExpressions/tests/CaptureCollectionTests.netcoreapp.cs @@ -128,11 +128,11 @@ public static void ICollectionOfT_CopyTo() public static void ICollectionOfT_CopyTo_Invalid() { ICollection collection = CreateCollection(); - Assert.Throws("array", () => collection.CopyTo((Capture[])null, 0)); - Assert.Throws("arrayIndex", () => collection.CopyTo(new Capture[1], -1)); + AssertExtensions.Throws("array", () => collection.CopyTo((Capture[])null, 0)); + AssertExtensions.Throws("arrayIndex", () => collection.CopyTo(new Capture[1], -1)); Assert.Throws(() => collection.CopyTo(new Capture[1], 0)); Assert.Throws(() => collection.CopyTo(new Capture[1], 1)); - Assert.Throws("arrayIndex", () => collection.CopyTo(new Capture[1], 2)); + AssertExtensions.Throws("arrayIndex", () => collection.CopyTo(new Capture[1], 2)); } [Fact] diff --git a/src/System.Text.RegularExpressions/tests/GroupCollectionTests.cs b/src/System.Text.RegularExpressions/tests/GroupCollectionTests.cs index 60a36991aa65..ca6ff9655552 100644 --- a/src/System.Text.RegularExpressions/tests/GroupCollectionTests.cs +++ b/src/System.Text.RegularExpressions/tests/GroupCollectionTests.cs @@ -111,7 +111,7 @@ public static void ICollection_CopyTo_Invalid() ICollection collection = regex.Match("aaabbccccccccccaaaabc").Groups; // Array is null - Assert.Throws("array", () => collection.CopyTo(null, 0)); + AssertExtensions.Throws("array", () => collection.CopyTo(null, 0)); // Array is multidimensional Assert.Throws(null, () => collection.CopyTo(new object[10, 10], 0)); diff --git a/src/System.Text.RegularExpressions/tests/GroupCollectionTests.netcoreapp.cs b/src/System.Text.RegularExpressions/tests/GroupCollectionTests.netcoreapp.cs index 6868348e5876..733b63ab8b27 100644 --- a/src/System.Text.RegularExpressions/tests/GroupCollectionTests.netcoreapp.cs +++ b/src/System.Text.RegularExpressions/tests/GroupCollectionTests.netcoreapp.cs @@ -125,11 +125,11 @@ public static void ICollectionOfT_CopyTo() public static void ICollectionOfT_CopyTo_Invalid() { ICollection collection = CreateCollection(); - Assert.Throws("array", () => collection.CopyTo(null, 0)); - Assert.Throws("arrayIndex", () => collection.CopyTo(new Group[1], -1)); + AssertExtensions.Throws("array", () => collection.CopyTo(null, 0)); + AssertExtensions.Throws("arrayIndex", () => collection.CopyTo(new Group[1], -1)); Assert.Throws(() => collection.CopyTo(new Group[1], 0)); Assert.Throws(() => collection.CopyTo(new Group[1], 1)); - Assert.Throws("arrayIndex", () => collection.CopyTo(new Group[1], 2)); + AssertExtensions.Throws("arrayIndex", () => collection.CopyTo(new Group[1], 2)); } [Fact] diff --git a/src/System.Text.RegularExpressions/tests/MatchCollectionTests.cs b/src/System.Text.RegularExpressions/tests/MatchCollectionTests.cs index a5e02eb85bcd..4ae2f6dbe878 100644 --- a/src/System.Text.RegularExpressions/tests/MatchCollectionTests.cs +++ b/src/System.Text.RegularExpressions/tests/MatchCollectionTests.cs @@ -60,8 +60,8 @@ public static void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException() { Regex regex = new Regex("e"); MatchCollection matches = regex.Matches("dotnet"); - Assert.Throws("i", () => matches[-1]); - Assert.Throws("i", () => matches[matches.Count]); + AssertExtensions.Throws("i", () => matches[-1]); + AssertExtensions.Throws("i", () => matches[matches.Count]); } [Fact] diff --git a/src/System.Text.RegularExpressions/tests/Regex.Ctor.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.Ctor.Tests.cs index 311c0b53c7b2..5f563d00ef7e 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.Ctor.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.Ctor.Tests.cs @@ -53,26 +53,26 @@ public static void Ctor(string pattern, RegexOptions options, TimeSpan matchTime public static void Ctor_Invalid() { // Pattern is null - Assert.Throws("pattern", () => new Regex(null)); - Assert.Throws("pattern", () => new Regex(null, RegexOptions.None)); - Assert.Throws("pattern", () => new Regex(null, RegexOptions.None, new TimeSpan())); + AssertExtensions.Throws("pattern", () => new Regex(null)); + AssertExtensions.Throws("pattern", () => new Regex(null, RegexOptions.None)); + AssertExtensions.Throws("pattern", () => new Regex(null, RegexOptions.None, new TimeSpan())); // Options are invalid - Assert.Throws("options", () => new Regex("foo", (RegexOptions)(-1))); - Assert.Throws("options", () => new Regex("foo", (RegexOptions)(-1), new TimeSpan())); + AssertExtensions.Throws("options", () => new Regex("foo", (RegexOptions)(-1))); + AssertExtensions.Throws("options", () => new Regex("foo", (RegexOptions)(-1), new TimeSpan())); - Assert.Throws("options", () => new Regex("foo", (RegexOptions)0x400)); - Assert.Throws("options", () => new Regex("foo", (RegexOptions)0x400, new TimeSpan())); + AssertExtensions.Throws("options", () => new Regex("foo", (RegexOptions)0x400)); + AssertExtensions.Throws("options", () => new Regex("foo", (RegexOptions)0x400, new TimeSpan())); - Assert.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.RightToLeft)); - Assert.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture)); - Assert.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Singleline)); - Assert.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace)); + AssertExtensions.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.RightToLeft)); + AssertExtensions.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture)); + AssertExtensions.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Singleline)); + AssertExtensions.Throws("options", () => new Regex("foo", RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace)); // MatchTimeout is invalid - Assert.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, new TimeSpan(-1))); - Assert.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, TimeSpan.Zero)); - Assert.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, TimeSpan.FromMilliseconds(int.MaxValue))); + AssertExtensions.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, new TimeSpan(-1))); + AssertExtensions.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, TimeSpan.Zero)); + AssertExtensions.Throws("matchTimeout", () => new Regex("foo", RegexOptions.None, TimeSpan.FromMilliseconds(int.MaxValue))); } [Fact] @@ -97,7 +97,7 @@ public void CacheSize_Set(int newCacheSize) [Fact] public void CacheSize_Set_NegativeValue_ThrowsArgumentOutOfRangeException() { - Assert.Throws("value", () => Regex.CacheSize = -1); + AssertExtensions.Throws("value", () => Regex.CacheSize = -1); } [Theory] diff --git a/src/System.Text.RegularExpressions/tests/Regex.EscapeUnescape.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.EscapeUnescape.Tests.cs index 2727771749ca..a8e9459cf7a4 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.EscapeUnescape.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.EscapeUnescape.Tests.cs @@ -22,7 +22,7 @@ public static void Escape(string str, string expected) [Fact] public void Escape_NullString_ThrowsArgumentNullException() { - Assert.Throws("str", () => Regex.Escape(null)); + AssertExtensions.Throws("str", () => Regex.Escape(null)); } [Theory] @@ -40,7 +40,7 @@ public void Unescape(string str, string expected) [Fact] public void Unscape_NullString_ThrowsArgumentNullException() { - Assert.Throws("str", () => Regex.Unescape(null)); + AssertExtensions.Throws("str", () => Regex.Unescape(null)); } } } diff --git a/src/System.Text.RegularExpressions/tests/Regex.GetGroupNames.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.GetGroupNames.Tests.cs index bf4f4d51fab4..4b56d685aa21 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.GetGroupNames.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.GetGroupNames.Tests.cs @@ -168,7 +168,7 @@ public void GroupNumberFromName_InvalidName_ReturnsMinusOne(string pattern, stri [Fact] public void GroupNumberFromName_NullName_ThrowsArgumentNullException() { - Assert.Throws("name", () => new Regex("foo").GroupNumberFromName(null)); + AssertExtensions.Throws("name", () => new Regex("foo").GroupNumberFromName(null)); } } } diff --git a/src/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs index 5d6cca9b6027..2147be1b1992 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -684,7 +684,7 @@ public void Result(string pattern, string input, string replacement, string expe public void Result_Invalid() { Match match = Regex.Match("foo", "foo"); - Assert.Throws("replacement", () => match.Result(null)); + AssertExtensions.Throws("replacement", () => match.Result(null)); Assert.Throws(() => RegularExpressions.Match.Empty.Result("any")); } @@ -716,18 +716,18 @@ public void Match_SpecialUnicodeCharacters() public void Match_Invalid() { // Input is null - Assert.Throws("input", () => Regex.Match(null, "pattern")); - Assert.Throws("input", () => Regex.Match(null, "pattern", RegexOptions.None)); - Assert.Throws("input", () => Regex.Match(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("input", () => Regex.Match(null, "pattern")); + AssertExtensions.Throws("input", () => Regex.Match(null, "pattern", RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.Match(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); - Assert.Throws("input", () => new Regex("pattern").Match(null)); - Assert.Throws("input", () => new Regex("pattern").Match(null, 0)); - Assert.Throws("input", () => new Regex("pattern").Match(null, 0, 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Match(null)); + AssertExtensions.Throws("input", () => new Regex("pattern").Match(null, 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Match(null, 0, 0)); // Pattern is null - Assert.Throws("pattern", () => Regex.Match("input", null)); - Assert.Throws("pattern", () => Regex.Match("input", null, RegexOptions.None)); - Assert.Throws("pattern", () => Regex.Match("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("pattern", () => Regex.Match("input", null)); + AssertExtensions.Throws("pattern", () => Regex.Match("input", null, RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.Match("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); // Start is invalid Assert.Throws(() => new Regex("pattern").Match("input", -1)); @@ -736,8 +736,8 @@ public void Match_Invalid() Assert.Throws(() => new Regex("pattern").Match("input", 6, 0)); // Length is invalid - Assert.Throws("length", () => new Regex("pattern").Match("input", 0, -1)); - Assert.Throws("length", () => new Regex("pattern").Match("input", 0, 6)); + AssertExtensions.Throws("length", () => new Regex("pattern").Match("input", 0, -1)); + AssertExtensions.Throws("length", () => new Regex("pattern").Match("input", 0, 6)); } [Theory] @@ -762,17 +762,17 @@ public void Match_InvalidPattern(string pattern) public void IsMatch_Invalid() { // Input is null - Assert.Throws("input", () => Regex.IsMatch(null, "pattern")); - Assert.Throws("input", () => Regex.IsMatch(null, "pattern", RegexOptions.None)); - Assert.Throws("input", () => Regex.IsMatch(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("input", () => Regex.IsMatch(null, "pattern")); + AssertExtensions.Throws("input", () => Regex.IsMatch(null, "pattern", RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.IsMatch(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); - Assert.Throws("input", () => new Regex("pattern").IsMatch(null)); - Assert.Throws("input", () => new Regex("pattern").IsMatch(null, 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").IsMatch(null)); + AssertExtensions.Throws("input", () => new Regex("pattern").IsMatch(null, 0)); // Pattern is null - Assert.Throws("pattern", () => Regex.IsMatch("input", null)); - Assert.Throws("pattern", () => Regex.IsMatch("input", null, RegexOptions.None)); - Assert.Throws("pattern", () => Regex.IsMatch("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("pattern", () => Regex.IsMatch("input", null)); + AssertExtensions.Throws("pattern", () => Regex.IsMatch("input", null, RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.IsMatch("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); // Start is invalid Assert.Throws(() => new Regex("pattern").IsMatch("input", -1)); diff --git a/src/System.Text.RegularExpressions/tests/Regex.MultipleMatches.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.MultipleMatches.Tests.cs index 4c8bec3830e8..0da289fe5a61 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.MultipleMatches.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.MultipleMatches.Tests.cs @@ -202,31 +202,31 @@ public static void VerifyMatch(Match match, CaptureData expected) public void Matches_Invalid() { // Input is null - Assert.Throws("input", () => Regex.Matches(null, "pattern")); - Assert.Throws("input", () => Regex.Matches(null, "pattern", RegexOptions.None)); - Assert.Throws("input", () => Regex.Matches(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("input", () => Regex.Matches(null, "pattern")); + AssertExtensions.Throws("input", () => Regex.Matches(null, "pattern", RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.Matches(null, "pattern", RegexOptions.None, TimeSpan.FromSeconds(1))); - Assert.Throws("input", () => new Regex("pattern").Matches(null)); - Assert.Throws("input", () => new Regex("pattern").Matches(null, 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Matches(null)); + AssertExtensions.Throws("input", () => new Regex("pattern").Matches(null, 0)); // Pattern is null - Assert.Throws("pattern", () => Regex.Matches("input", null)); - Assert.Throws("pattern", () => Regex.Matches("input", null, RegexOptions.None)); - Assert.Throws("pattern", () => Regex.Matches("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("pattern", () => Regex.Matches("input", null)); + AssertExtensions.Throws("pattern", () => Regex.Matches("input", null, RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.Matches("input", null, RegexOptions.None, TimeSpan.FromSeconds(1))); // Options are invalid - Assert.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)(-1))); - Assert.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)(-1), TimeSpan.FromSeconds(1))); - Assert.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)0x400)); - Assert.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)0x400, TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)(-1))); + AssertExtensions.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)(-1), TimeSpan.FromSeconds(1))); + AssertExtensions.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)0x400)); + AssertExtensions.Throws("options", () => Regex.Matches("input", "pattern", (RegexOptions)0x400, TimeSpan.FromSeconds(1))); // MatchTimeout is invalid - Assert.Throws("matchTimeout", () => Regex.Matches("input", "pattern", RegexOptions.None, TimeSpan.Zero)); - Assert.Throws("matchTimeout", () => Regex.Matches("input", "pattern", RegexOptions.None, TimeSpan.Zero)); + AssertExtensions.Throws("matchTimeout", () => Regex.Matches("input", "pattern", RegexOptions.None, TimeSpan.Zero)); + AssertExtensions.Throws("matchTimeout", () => Regex.Matches("input", "pattern", RegexOptions.None, TimeSpan.Zero)); // Start is invalid - Assert.Throws("startat", () => new Regex("pattern").Matches("input", -1)); - Assert.Throws("startat", () => new Regex("pattern").Matches("input", 6)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Matches("input", -1)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Matches("input", 6)); } [Fact] diff --git a/src/System.Text.RegularExpressions/tests/Regex.Replace.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.Replace.Tests.cs index aa34dd0e8b37..44f4d9457394 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.Replace.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.Replace.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -225,55 +225,55 @@ public void Replace_NoMatch() public void Replace_Invalid() { // Input is null - Assert.Throws("input", () => Regex.Replace(null, "pattern", "replacement")); - Assert.Throws("input", () => Regex.Replace(null, "pattern", "replacement", RegexOptions.None)); - Assert.Throws("input", () => Regex.Replace(null, "pattern", "replacement", RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("input", () => new Regex("pattern").Replace(null, "replacement")); - Assert.Throws("input", () => new Regex("pattern").Replace(null, "replacement", 0)); - Assert.Throws("input", () => new Regex("pattern").Replace(null, "replacement", 0, 0)); - - Assert.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1))); - Assert.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1), RegexOptions.None)); - Assert.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1), RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1))); - Assert.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1), 0)); - Assert.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1), 0, 0)); + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", "replacement")); + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", "replacement", RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", "replacement", RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, "replacement")); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, "replacement", 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, "replacement", 0, 0)); + + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1))); + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1), RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.Replace(null, "pattern", new MatchEvaluator(MatchEvaluator1), RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1))); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1), 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Replace(null, new MatchEvaluator(MatchEvaluator1), 0, 0)); // Pattern is null - Assert.Throws("pattern", () => Regex.Replace("input", null, "replacement")); - Assert.Throws("pattern", () => Regex.Replace("input", null, "replacement", RegexOptions.None)); - Assert.Throws("pattern", () => Regex.Replace("input", null, "replacement", RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1))); - Assert.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1), RegexOptions.None)); - Assert.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1), RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, "replacement")); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, "replacement", RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, "replacement", RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1))); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1), RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.Replace("input", null, new MatchEvaluator(MatchEvaluator1), RegexOptions.None, TimeSpan.FromMilliseconds(1))); // Replacement is null - Assert.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null)); - Assert.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null, RegexOptions.None)); - Assert.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null)); - Assert.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null, 0)); - Assert.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null, 0, 0)); - - Assert.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null)); - Assert.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null, RegexOptions.None)); - Assert.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null)); - Assert.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null, 0)); - Assert.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null, 0, 0)); + AssertExtensions.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null)); + AssertExtensions.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null, RegexOptions.None)); + AssertExtensions.Throws("replacement", () => Regex.Replace("input", "pattern", (string)null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null)); + AssertExtensions.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null, 0)); + AssertExtensions.Throws("replacement", () => new Regex("pattern").Replace("input", (string)null, 0, 0)); + + AssertExtensions.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null)); + AssertExtensions.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null, RegexOptions.None)); + AssertExtensions.Throws("evaluator", () => Regex.Replace("input", "pattern", (MatchEvaluator)null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null)); + AssertExtensions.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null, 0)); + AssertExtensions.Throws("evaluator", () => new Regex("pattern").Replace("input", (MatchEvaluator)null, 0, 0)); // Count is invalid - Assert.Throws("count", () => new Regex("pattern").Replace("input", "replacement", -2)); - Assert.Throws("count", () => new Regex("pattern").Replace("input", "replacement", -2, 0)); - Assert.Throws("count", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), -2)); - Assert.Throws("count", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), -2, 0)); + AssertExtensions.Throws("count", () => new Regex("pattern").Replace("input", "replacement", -2)); + AssertExtensions.Throws("count", () => new Regex("pattern").Replace("input", "replacement", -2, 0)); + AssertExtensions.Throws("count", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), -2)); + AssertExtensions.Throws("count", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), -2, 0)); // Start is invalid - Assert.Throws("startat", () => new Regex("pattern").Replace("input", "replacement", 0, -1)); - Assert.Throws("startat", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), 0, -1)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Replace("input", "replacement", 0, -1)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), 0, -1)); - Assert.Throws("startat", () => new Regex("pattern").Replace("input", "replacement", 0, 6)); - Assert.Throws("startat", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), 0, 6)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Replace("input", "replacement", 0, 6)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Replace("input", new MatchEvaluator(MatchEvaluator1), 0, 6)); } public static string MatchEvaluator1(Match match) => match.Value.ToLower() == "big" ? "Huge": "Tiny"; diff --git a/src/System.Text.RegularExpressions/tests/Regex.Split.Tests.cs b/src/System.Text.RegularExpressions/tests/Regex.Split.Tests.cs index 5dc8951acbc8..5d90f2187180 100644 --- a/src/System.Text.RegularExpressions/tests/Regex.Split.Tests.cs +++ b/src/System.Text.RegularExpressions/tests/Regex.Split.Tests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -90,25 +90,25 @@ public void Split(string pattern, string input, RegexOptions options, int count, public void Split_Invalid() { // Input is null - Assert.Throws("input", () => Regex.Split(null, "pattern")); - Assert.Throws("input", () => Regex.Split(null, "pattern", RegexOptions.None)); - Assert.Throws("input", () => Regex.Split(null, "pattern", RegexOptions.None, TimeSpan.FromMilliseconds(1))); - Assert.Throws("input", () => new Regex("pattern").Split(null)); - Assert.Throws("input", () => new Regex("pattern").Split(null, 0)); - Assert.Throws("input", () => new Regex("pattern").Split(null, 0, 0)); + AssertExtensions.Throws("input", () => Regex.Split(null, "pattern")); + AssertExtensions.Throws("input", () => Regex.Split(null, "pattern", RegexOptions.None)); + AssertExtensions.Throws("input", () => Regex.Split(null, "pattern", RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("input", () => new Regex("pattern").Split(null)); + AssertExtensions.Throws("input", () => new Regex("pattern").Split(null, 0)); + AssertExtensions.Throws("input", () => new Regex("pattern").Split(null, 0, 0)); // Pattern is null - Assert.Throws("pattern", () => Regex.Split("input", null)); - Assert.Throws("pattern", () => Regex.Split("input", null, RegexOptions.None)); - Assert.Throws("pattern", () => Regex.Split("input", null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); + AssertExtensions.Throws("pattern", () => Regex.Split("input", null)); + AssertExtensions.Throws("pattern", () => Regex.Split("input", null, RegexOptions.None)); + AssertExtensions.Throws("pattern", () => Regex.Split("input", null, RegexOptions.None, TimeSpan.FromMilliseconds(1))); // Count is invalid - Assert.Throws("count", () => new Regex("pattern").Split("input", -1)); - Assert.Throws("count", () => new Regex("pattern").Split("input", -1, 0)); + AssertExtensions.Throws("count", () => new Regex("pattern").Split("input", -1)); + AssertExtensions.Throws("count", () => new Regex("pattern").Split("input", -1, 0)); // Start is invalid - Assert.Throws("startat", () => new Regex("pattern").Split("input", 0, -1)); - Assert.Throws("startat", () => new Regex("pattern").Split("input", 0, 6)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Split("input", 0, -1)); + AssertExtensions.Throws("startat", () => new Regex("pattern").Split("input", 0, 6)); } } } diff --git a/src/System.Threading.Overlapped/tests/System.Threading.Overlapped.Tests.csproj b/src/System.Threading.Overlapped/tests/System.Threading.Overlapped.Tests.csproj index dd1e9acc6725..6b7a8c61b30e 100644 --- a/src/System.Threading.Overlapped/tests/System.Threading.Overlapped.Tests.csproj +++ b/src/System.Threading.Overlapped/tests/System.Threading.Overlapped.Tests.csproj @@ -23,6 +23,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_AllocateNativeOverlappedTests.cs b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_AllocateNativeOverlappedTests.cs index 7dcbf10f4b11..ec81939ea4a0 100644 --- a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_AllocateNativeOverlappedTests.cs +++ b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_AllocateNativeOverlappedTests.cs @@ -14,7 +14,7 @@ public unsafe void AllocateNativeOverlapped_NullAsCallback_ThrowsArgumentNullExc { using(ThreadPoolBoundHandle handle = CreateThreadPoolBoundHandle()) { - Assert.Throws("callback", () => + AssertExtensions.Throws("callback", () => { handle.AllocateNativeOverlapped(null, new object(), new byte[256]); }); @@ -26,7 +26,7 @@ public unsafe void AllocateNativeOverlapped_PreAllocated_ThrowsArgumentNullExcep { using(ThreadPoolBoundHandle handle = CreateThreadPoolBoundHandle()) { - Assert.Throws("preAllocated", () => + AssertExtensions.Throws("preAllocated", () => { handle.AllocateNativeOverlapped((PreAllocatedOverlapped)null); }); diff --git a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_BindHandleTests.cs b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_BindHandleTests.cs index 5deacc332274..8ea8535791f1 100644 --- a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_BindHandleTests.cs +++ b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_BindHandleTests.cs @@ -12,7 +12,7 @@ public partial class ThreadPoolBoundHandleTests [Fact] public void BindHandle_NullAsHandle_ThrowsArgumentNullException() { - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle((SafeHandle)null); }); @@ -23,7 +23,7 @@ public void BindHandle_ZeroAsHandle_ThrowsArgumentException() { using(SafeHandle handle = HandleFactory.CreateHandle(IntPtr.Zero)) { - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -35,7 +35,7 @@ public void BindHandle_MinusOneAsHandle_ThrowsArgumentException() { using(SafeHandle handle = HandleFactory.CreateHandle(new IntPtr(-1))) { - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -48,7 +48,7 @@ public void BindHandle_SyncHandleAsHandle_ThrowsArgumentException() using(SafeHandle handle = HandleFactory.CreateSyncFileHandleFoWrite()) { - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -62,7 +62,7 @@ public void BindHandle_ClosedSyncHandleAsHandle_ThrowsArgumentException() { handle.CloseWithoutDisposing(); - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -76,7 +76,7 @@ public void BindHandle_ClosedAsyncHandleAsHandle_ThrowsArgumentException() { handle.CloseWithoutDisposing(); - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -89,7 +89,7 @@ public void BindHandle_DisposedSyncHandleAsHandle_ThrowsArgumentException() Win32Handle handle = HandleFactory.CreateSyncFileHandleFoWrite(); handle.Dispose(); - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -102,7 +102,7 @@ public void BindHandle_DisposedAsyncHandleAsHandle_ThrowsArgumentException() Win32Handle handle = HandleFactory.CreateAsyncFileHandleForWrite(); handle.Dispose(); - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { ThreadPoolBoundHandle.BindHandle(handle); }); @@ -116,7 +116,7 @@ public void BindHandle_AlreadyBoundHandleAsHandle_ThrowsArgumentException() // Once ThreadPoolBoundHandle.BindHandle(handle); - Assert.Throws("handle", () => + AssertExtensions.Throws("handle", () => { // Twice ThreadPoolBoundHandle.BindHandle(handle); diff --git a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_FreeNativeOverlappedTests.cs b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_FreeNativeOverlappedTests.cs index 2062c70e88e9..4b9a87d75be7 100644 --- a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_FreeNativeOverlappedTests.cs +++ b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_FreeNativeOverlappedTests.cs @@ -13,7 +13,7 @@ public unsafe void FreeNativeOverlapped_NullAsNativeOverlapped_ThrowsArgumentNul { using(ThreadPoolBoundHandle handle = CreateThreadPoolBoundHandle()) { - Assert.Throws("overlapped", () => + AssertExtensions.Throws("overlapped", () => { handle.FreeNativeOverlapped((NativeOverlapped*)null); }); diff --git a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_GetNativeOverlappedStateTests.cs b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_GetNativeOverlappedStateTests.cs index e6515c891a6c..2b514607292d 100644 --- a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_GetNativeOverlappedStateTests.cs +++ b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_GetNativeOverlappedStateTests.cs @@ -12,7 +12,7 @@ public partial class ThreadPoolBoundHandleTests [Fact] public unsafe void GetNativeOverlappedState_NullAsNativeOverlapped_ThrowsArgumentNullException() { - Assert.Throws("overlapped", () => + AssertExtensions.Throws("overlapped", () => { ThreadPoolBoundHandle.GetNativeOverlappedState((NativeOverlapped*)null); }); diff --git a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_PreAllocatedOverlappedTests.cs b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_PreAllocatedOverlappedTests.cs index c4f0385b4c24..41715d9e4f02 100644 --- a/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_PreAllocatedOverlappedTests.cs +++ b/src/System.Threading.Overlapped/tests/ThreadPoolBoundHandle_PreAllocatedOverlappedTests.cs @@ -12,7 +12,7 @@ public partial class ThreadPoolBoundHandleTests [Fact] public unsafe void PreAllocatedOverlapped_NullAsCallback_ThrowsArgumentNullException() { - Assert.Throws("callback", () => + AssertExtensions.Throws("callback", () => { new PreAllocatedOverlapped(null, new object(), new byte[256]); }); diff --git a/src/System.Threading.Tasks.Extensions/tests/AsyncValueTaskMethodBuilderTests.cs b/src/System.Threading.Tasks.Extensions/tests/AsyncValueTaskMethodBuilderTests.cs index 6e47ae1d0e46..97f718c6fcdb 100644 --- a/src/System.Threading.Tasks.Extensions/tests/AsyncValueTaskMethodBuilderTests.cs +++ b/src/System.Threading.Tasks.Extensions/tests/AsyncValueTaskMethodBuilderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Runtime.CompilerServices; using Xunit; @@ -146,7 +147,7 @@ public void AwaitOnCompleted_ForcesTaskCreation(int numAwaits, bool awaitUnsafe) public void SetStateMachine_InvalidArgument_ThrowsException() { AsyncValueTaskMethodBuilder b = ValueTask.CreateAsyncMethodBuilder(); - Assert.Throws("stateMachine", () => b.SetStateMachine(null)); + AssertExtensions.Throws("stateMachine", () => b.SetStateMachine(null)); b.SetStateMachine(new DelegateStateMachine()); } diff --git a/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj b/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj index faeeaf728370..25e74041ef24 100644 --- a/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj +++ b/src/System.Threading.Tasks.Extensions/tests/System.Threading.Tasks.Extensions.Tests.csproj @@ -10,6 +10,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Threading.Tasks.Parallel/tests/ParallelForTests.cs b/src/System.Threading.Tasks.Parallel/tests/ParallelForTests.cs index 715bedea187c..07bbd1b3a897 100644 --- a/src/System.Threading.Tasks.Parallel/tests/ParallelForTests.cs +++ b/src/System.Threading.Tasks.Parallel/tests/ParallelForTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; @@ -18,17 +19,17 @@ public static void RunParallelExceptionTests() { // ParallelOptions tests ParallelOptions options = new ParallelOptions(); - Assert.Throws("MaxDegreeOfParallelism", () => options.MaxDegreeOfParallelism = 0); - Assert.Throws("MaxDegreeOfParallelism", () => options.MaxDegreeOfParallelism = -2); + AssertExtensions.Throws("MaxDegreeOfParallelism", () => options.MaxDegreeOfParallelism = 0); + AssertExtensions.Throws("MaxDegreeOfParallelism", () => options.MaxDegreeOfParallelism = -2); // Parallel.Invoke tests Action[] smallActionArray = new Action[] { () => { } }; Action[] largeActionArray = new Action[15]; for (int i = 0; i < 15; i++) largeActionArray[i] = () => { }; - Assert.Throws("actions", () => Parallel.Invoke((Action[])null)); - Assert.Throws("parallelOptions", () => Parallel.Invoke((ParallelOptions)null, () => { })); - Assert.Throws("actions", () => Parallel.Invoke(options, null)); + AssertExtensions.Throws("actions", () => Parallel.Invoke((Action[])null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.Invoke((ParallelOptions)null, () => { })); + AssertExtensions.Throws("actions", () => Parallel.Invoke(options, null)); Assert.Throws(() => Parallel.Invoke(options, (Action)null)); @@ -46,58 +47,58 @@ public static void RunParallelExceptionTests() options = new ParallelOptions(); // Reset to get rid of CT // Test P.For(from, to, action) - Assert.Throws("body", () => Parallel.For(0, 10, (Action)null)); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, (Action)null)); // Test P.For(from, to, options, action) - Assert.Throws("parallelOptions", () => Parallel.For(0, 10, null, _ => { })); - Assert.Throws("body", () => Parallel.For(0, 10, options, (Action)null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0, 10, null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, options, (Action)null)); // Test P.For(from, to, Action) - Assert.Throws("body", () => Parallel.For(0, 10, (Action)null)); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, (Action)null)); // Test P.For(from, to, options, Action) - Assert.Throws("parallelOptions", () => Parallel.For(0, 10, null, _ => { })); - Assert.Throws("body", () => Parallel.For(0, 10, options, (Action)null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0, 10, null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, options, (Action)null)); // Test P.For(from, to, Func, Func, Action) - Assert.Throws("localInit", () => Parallel.For(0, 10, (Func)null, (a, b, c) => "", _ => { })); - Assert.Throws("body", () => Parallel.For(0, 10, () => "", null, _ => { })); - Assert.Throws("localFinally", () => Parallel.For(0, 10, () => "", (a, b, c) => "", null)); + AssertExtensions.Throws("localInit", () => Parallel.For(0, 10, (Func)null, (a, b, c) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, () => "", null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.For(0, 10, () => "", (a, b, c) => "", null)); // Test P.For(from, to, options, Func, Func, Action) - Assert.Throws("parallelOptions", () => Parallel.For(0, 10, null, () => "", (a, b, c) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.For(0, 10, options, (Func)null, (a, b, c) => "", _ => { })); - Assert.Throws("body", () => Parallel.For(0, 10, options, () => "", null, _ => { })); - Assert.Throws("localFinally", () => Parallel.For(0, 10, options, () => "", (a, b, c) => "", null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0, 10, null, () => "", (a, b, c) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.For(0, 10, options, (Func)null, (a, b, c) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0, 10, options, () => "", null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.For(0, 10, options, () => "", (a, b, c) => "", null)); // // Parallel.For(64) tests // // Test P.For(from, to, Action) - Assert.Throws("body", () => Parallel.For(0L, 10L, (Action)null)); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, (Action)null)); // Test P.For(from, to, options, Action) - Assert.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, _ => { })); - Assert.Throws("body", () => Parallel.For(0L, 10L, options, (Action)null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, options, (Action)null)); // Test P.For(from, to, Action) - Assert.Throws("body", () => Parallel.For(0L, 10L, (Action)null)); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, (Action)null)); // Test P.For(from, to, options, Action) - Assert.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, _ => { })); - Assert.Throws("body", () => Parallel.For(0L, 10L, options, (Action)null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, options, (Action)null)); // Test P.For(from, to, Func, Func, Action) - Assert.Throws("localInit", () => Parallel.For(0L, 10L, (Func)null, (a, b, c) => "", _ => { })); - Assert.Throws("body", () => Parallel.For(0L, 10L, () => "", null, _ => { })); - Assert.Throws("localFinally", () => Parallel.For(0L, 10L, () => "", (a, b, c) => "", null)); + AssertExtensions.Throws("localInit", () => Parallel.For(0L, 10L, (Func)null, (a, b, c) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, () => "", null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.For(0L, 10L, () => "", (a, b, c) => "", null)); // Test P.For(from, to, options, Func, Func, Action) - Assert.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, () => "", (a, b, c) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.For(0L, 10L, options, (Func)null, (a, b, c) => "", _ => { })); - Assert.Throws("body", () => Parallel.For(0L, 10L, options, () => "", null, _ => { })); - Assert.Throws("localFinally", () => Parallel.For(0L, 10L, options, () => "", (a, b, c) => "", null)); + AssertExtensions.Throws("parallelOptions", () => Parallel.For(0L, 10L, null, () => "", (a, b, c) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.For(0L, 10L, options, (Func)null, (a, b, c) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.For(0L, 10L, options, () => "", null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.For(0L, 10L, options, () => "", (a, b, c) => "", null)); // Check that we properly handle pre-canceled requests options.CancellationToken = cts.Token; @@ -113,57 +114,57 @@ public static void RunParallelExceptionTests() // Test P.FE(IE, Action) string[] sArray = new string[] { "one", "two", "three" }; - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); // Test P.FE(IE, options, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, _ => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, _ => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); // Test P.FE(IE, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, (_, state) => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, (_, state) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); // Test P.FE(IE, options, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, (_, state) => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, (_, state) => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, (_, state) => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, (_, state) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); // Test P.FE(IE, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, (_, state, idx) => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, (_, state, idx) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, (Action)null)); // Test P.FE(IE, options, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, (_, state, idx) => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, (_, state, idx) => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, (_, state, idx) => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, (_, state, idx) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, options, (Action)null)); //Test P.FE(IE, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(sArray, (Func)null, (_, state, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(sArray, () => "", (_, state, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(sArray, (Func)null, (_, state, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(sArray, () => "", (_, state, local) => "", null)); //Test P.FE(IE, options, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(sArray, options, (Func)null, (_, state, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, options, () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(sArray, options, () => "", (_, state, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(sArray, options, (Func)null, (_, state, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, options, () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(sArray, options, () => "", (_, state, local) => "", null)); //Test P.FE(IE, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, () => "", (_, state, idx, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(sArray, (Func)null, (_, state, idx, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(sArray, () => "", (_, state, idx, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, () => "", (_, state, idx, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(sArray, (Func)null, (_, state, idx, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(sArray, () => "", (_, state, idx, local) => "", null)); //Test P.FE(IE, options, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, () => "", (_, state, idx, local) => "", _ => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, () => "", (_, state, idx, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(sArray, options, (Func)null, (_, state, idx, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(sArray, options, () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(sArray, options, () => "", (_, state, idx, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((IEnumerable)null, options, () => "", (_, state, idx, local) => "", _ => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(sArray, null, () => "", (_, state, idx, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(sArray, options, (Func)null, (_, state, idx, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(sArray, options, () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(sArray, options, () => "", (_, state, idx, local) => "", null)); // // Parallel.ForEach(Partitioner) tests @@ -172,35 +173,35 @@ public static void RunParallelExceptionTests() var partitioner = Partitioner.Create(sArray); // Test P.FE(Partitioner, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, _ => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), (Action)null)); // Test P.FE(Partitioner, options, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, options, _ => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, _ => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, options, _ => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Action)null)); // Test P.FE(Partitioner, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, (_, state) => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, (_, state) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), (Action)null)); // Test P.FE(Partitioner, options, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, options, (_, state) => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, (_, state) => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Action)null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, options, (_, state) => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, (_, state) => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Action)null)); //Test P.FE(Partitioner, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(Partitioner.Create(sArray), (Func)null, (_, state, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(Partitioner.Create(sArray), () => "", (_, state, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(Partitioner.Create(sArray), (Func)null, (_, state, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(Partitioner.Create(sArray), () => "", (_, state, local) => "", null)); //Test P.FE(Partitioner, options, Func, Func, Action) - Assert.Throws("source", () => Parallel.ForEach((Partitioner)null, options, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, () => "", (_, state, local) => "", _ => { })); - Assert.Throws("localInit", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Func)null, (_, state, local) => "", _ => { })); - Assert.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, () => "", (Func)null, _ => { })); - Assert.Throws("localFinally", () => Parallel.ForEach(Partitioner.Create(sArray), options, () => "", (_, state, local) => "", null)); + AssertExtensions.Throws("source", () => Parallel.ForEach((Partitioner)null, options, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("parallelOptions", () => Parallel.ForEach(Partitioner.Create(sArray), null, () => "", (_, state, local) => "", _ => { })); + AssertExtensions.Throws("localInit", () => Parallel.ForEach(Partitioner.Create(sArray), options, (Func)null, (_, state, local) => "", _ => { })); + AssertExtensions.Throws("body", () => Parallel.ForEach(Partitioner.Create(sArray), options, () => "", (Func)null, _ => { })); + AssertExtensions.Throws("localFinally", () => Parallel.ForEach(Partitioner.Create(sArray), options, () => "", (_, state, local) => "", null)); } // Cover converting P.ForEaches of arrays, lists to P.Fors diff --git a/src/System.Threading.Tasks.Parallel/tests/System.Threading.Tasks.Parallel.Tests.csproj b/src/System.Threading.Tasks.Parallel/tests/System.Threading.Tasks.Parallel.Tests.csproj index 3289100ab1c8..eabdde3b8300 100644 --- a/src/System.Threading.Tasks.Parallel/tests/System.Threading.Tasks.Parallel.Tests.csproj +++ b/src/System.Threading.Tasks.Parallel/tests/System.Threading.Tasks.Parallel.Tests.csproj @@ -11,6 +11,9 @@ + + Common\System\AssertExtensions.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Threading/tests/EventWaitHandleTests.cs b/src/System.Threading/tests/EventWaitHandleTests.cs index d983099563ba..4aee9e91ae58 100644 --- a/src/System.Threading/tests/EventWaitHandleTests.cs +++ b/src/System.Threading/tests/EventWaitHandleTests.cs @@ -144,7 +144,7 @@ public void OpenExisting_NotSupported_Unix() [Fact] public void OpenExisting_InvalidNames_Windows() { - Assert.Throws("name", () => EventWaitHandle.OpenExisting(null)); + AssertExtensions.Throws("name", () => EventWaitHandle.OpenExisting(null)); Assert.Throws(() => EventWaitHandle.OpenExisting(string.Empty)); Assert.Throws(() => EventWaitHandle.OpenExisting(new string('a', 10000))); } diff --git a/src/System.Threading/tests/MonitorTests.cs b/src/System.Threading/tests/MonitorTests.cs index 517b4d4c94ff..55dd51c976f6 100644 --- a/src/System.Threading/tests/MonitorTests.cs +++ b/src/System.Threading/tests/MonitorTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -107,12 +107,12 @@ public static void Enter_Invalid() bool lockTaken = false; var obj = new object(); - Assert.Throws("obj", () => Monitor.Enter(null)); - Assert.Throws("obj", () => Monitor.Enter(null, ref lockTaken)); + AssertExtensions.Throws("obj", () => Monitor.Enter(null)); + AssertExtensions.Throws("obj", () => Monitor.Enter(null, ref lockTaken)); Assert.False(lockTaken); lockTaken = true; - Assert.Throws("lockTaken", () => Monitor.Enter(obj, ref lockTaken)); + AssertExtensions.Throws("lockTaken", () => Monitor.Enter(obj, ref lockTaken)); Assert.False(lockTaken); } @@ -121,7 +121,7 @@ public static void Exit_Invalid() { var obj = new object(); int valueType = 1; - Assert.Throws("obj", () => Monitor.Exit(null)); + AssertExtensions.Throws("obj", () => Monitor.Exit(null)); Assert.Throws(() => Monitor.Exit(obj)); Assert.Throws(() => Monitor.Exit(new object())); @@ -154,21 +154,21 @@ public static void Exit_WhenHeldBySomeoneElse_ThrowsSynchronizationLockException public static void IsEntered_Invalid() { var obj = new object(); - Assert.Throws("obj", () => Monitor.IsEntered(null)); + AssertExtensions.Throws("obj", () => Monitor.IsEntered(null)); } [Fact] public static void Pulse_Invalid() { var obj = new object(); - Assert.Throws("obj", () => Monitor.Pulse(null)); + AssertExtensions.Throws("obj", () => Monitor.Pulse(null)); } [Fact] public static void PulseAll_Invalid() { var obj = new object(); - Assert.Throws("obj", () => Monitor.PulseAll(null)); + AssertExtensions.Throws("obj", () => Monitor.PulseAll(null)); } [Fact] @@ -189,35 +189,35 @@ public static void TryEnter_Invalid() bool lockTaken = false; var obj = new object(); - Assert.Throws("obj", () => Monitor.TryEnter(null)); - Assert.Throws("obj", () => Monitor.TryEnter(null, ref lockTaken)); - Assert.Throws("obj", () => Monitor.TryEnter(null, 1)); - Assert.Throws("obj", () => Monitor.TryEnter(null, 1, ref lockTaken)); - Assert.Throws("obj", () => Monitor.TryEnter(null, TimeSpan.Zero)); - Assert.Throws("obj", () => Monitor.TryEnter(null, TimeSpan.Zero, ref lockTaken)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null, ref lockTaken)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null, 1)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null, 1, ref lockTaken)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null, TimeSpan.Zero)); + AssertExtensions.Throws("obj", () => Monitor.TryEnter(null, TimeSpan.Zero, ref lockTaken)); - Assert.Throws("millisecondsTimeout", () => Monitor.TryEnter(null, -1)); - Assert.Throws("millisecondsTimeout", () => Monitor.TryEnter(null, -1, ref lockTaken)); - Assert.Throws("timeout", () => Monitor.TryEnter(null, TimeSpan.FromMilliseconds(-1))); - Assert.Throws("timeout", () => Monitor.TryEnter(null, TimeSpan.FromMilliseconds(-1), ref lockTaken)); + AssertExtensions.Throws("millisecondsTimeout", () => Monitor.TryEnter(null, -1)); + AssertExtensions.Throws("millisecondsTimeout", () => Monitor.TryEnter(null, -1, ref lockTaken)); + AssertExtensions.Throws("timeout", () => Monitor.TryEnter(null, TimeSpan.FromMilliseconds(-1))); + AssertExtensions.Throws("timeout", () => Monitor.TryEnter(null, TimeSpan.FromMilliseconds(-1), ref lockTaken)); lockTaken = true; - Assert.Throws("lockTaken", () => Monitor.TryEnter(obj, ref lockTaken)); + AssertExtensions.Throws("lockTaken", () => Monitor.TryEnter(obj, ref lockTaken)); lockTaken = true; - Assert.Throws("lockTaken", () => Monitor.TryEnter(obj, 0, ref lockTaken)); + AssertExtensions.Throws("lockTaken", () => Monitor.TryEnter(obj, 0, ref lockTaken)); lockTaken = true; - Assert.Throws("lockTaken", () => Monitor.TryEnter(obj, TimeSpan.Zero, ref lockTaken)); + AssertExtensions.Throws("lockTaken", () => Monitor.TryEnter(obj, TimeSpan.Zero, ref lockTaken)); } [Fact] public static void Wait_Invalid() { var obj = new object(); - Assert.Throws("obj", () => Monitor.Wait(null)); - Assert.Throws("obj", () => Monitor.Wait(null, 1)); - Assert.Throws("obj", () => Monitor.Wait(null, TimeSpan.Zero)); - Assert.Throws("millisecondsTimeout", () => Monitor.Wait(null, -1)); - Assert.Throws("timeout", () => Monitor.Wait(null, TimeSpan.FromMilliseconds(-1))); + AssertExtensions.Throws("obj", () => Monitor.Wait(null)); + AssertExtensions.Throws("obj", () => Monitor.Wait(null, 1)); + AssertExtensions.Throws("obj", () => Monitor.Wait(null, TimeSpan.Zero)); + AssertExtensions.Throws("millisecondsTimeout", () => Monitor.Wait(null, -1)); + AssertExtensions.Throws("timeout", () => Monitor.Wait(null, TimeSpan.FromMilliseconds(-1))); } [Fact] diff --git a/src/System.Threading/tests/MutexTests.cs b/src/System.Threading/tests/MutexTests.cs index 983c0ea95635..6bf3a92c3c72 100644 --- a/src/System.Threading/tests/MutexTests.cs +++ b/src/System.Threading/tests/MutexTests.cs @@ -99,7 +99,7 @@ public void OpenExisting() [Fact] public void OpenExisting_InvalidNames() { - Assert.Throws("name", () => Mutex.OpenExisting(null)); + AssertExtensions.Throws("name", () => Mutex.OpenExisting(null)); Assert.Throws(() => Mutex.OpenExisting(string.Empty)); Assert.Throws(() => Mutex.OpenExisting(new string('a', 10000))); } diff --git a/src/System.Threading/tests/SemaphoreTests.cs b/src/System.Threading/tests/SemaphoreTests.cs index 3cb4c1c8f202..e7f3ea835d7e 100644 --- a/src/System.Threading/tests/SemaphoreTests.cs +++ b/src/System.Threading/tests/SemaphoreTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Diagnostics; using System.Threading.Tasks; using Xunit; @@ -57,19 +58,19 @@ public void Ctor_InvalidArguments() { bool createdNew; - Assert.Throws("initialCount", () => new Semaphore(-1, 1)); - Assert.Throws("initialCount", () => new Semaphore(-2, 1)); - Assert.Throws("maximumCount", () => new Semaphore(0, 0)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-1, 1)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-2, 1)); + AssertExtensions.Throws("maximumCount", () => new Semaphore(0, 0)); Assert.Throws(() => new Semaphore(2, 1)); - Assert.Throws("initialCount", () => new Semaphore(-1, 1, null)); - Assert.Throws("initialCount", () => new Semaphore(-2, 1, null)); - Assert.Throws("maximumCount", () => new Semaphore(0, 0, null)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-1, 1, null)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-2, 1, null)); + AssertExtensions.Throws("maximumCount", () => new Semaphore(0, 0, null)); Assert.Throws(() => new Semaphore(2, 1, null)); - Assert.Throws("initialCount", () => new Semaphore(-1, 1, "CtorSemaphoreTest", out createdNew)); - Assert.Throws("initialCount", () => new Semaphore(-2, 1, "CtorSemaphoreTest", out createdNew)); - Assert.Throws("maximumCount", () => new Semaphore(0, 0, "CtorSemaphoreTest", out createdNew)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-1, 1, "CtorSemaphoreTest", out createdNew)); + AssertExtensions.Throws("initialCount", () => new Semaphore(-2, 1, "CtorSemaphoreTest", out createdNew)); + AssertExtensions.Throws("maximumCount", () => new Semaphore(0, 0, "CtorSemaphoreTest", out createdNew)); Assert.Throws(() => new Semaphore(2, 1, "CtorSemaphoreTest", out createdNew)); } @@ -134,7 +135,7 @@ public void Release() using (Semaphore s = new Semaphore(0, 10)) { Assert.Throws(() => s.Release(11)); - Assert.Throws("releaseCount", () => s.Release(-1)); + AssertExtensions.Throws("releaseCount", () => s.Release(-1)); } using (Semaphore s = new Semaphore(0, 10)) @@ -211,7 +212,7 @@ public void OpenExisting_NotSupported_Unix() [Fact] public void OpenExisting_InvalidNames_Windows() { - Assert.Throws("name", () => Semaphore.OpenExisting(null)); + AssertExtensions.Throws("name", () => Semaphore.OpenExisting(null)); Assert.Throws(() => Semaphore.OpenExisting(string.Empty)); Assert.Throws(() => Semaphore.OpenExisting(new string('a', 10000))); } diff --git a/src/System.Threading/tests/System.Threading.Tests.csproj b/src/System.Threading/tests/System.Threading.Tests.csproj index 0bcc8ea00ce6..d7c76321b31e 100644 --- a/src/System.Threading/tests/System.Threading.Tests.csproj +++ b/src/System.Threading/tests/System.Threading.Tests.csproj @@ -37,6 +37,9 @@ + + Common\System\AssertExtensions.cs + CommonTest\System\Diagnostics\Tracing\TestEventListener.cs diff --git a/src/System.Transactions.Local/tests/System.Transactions.Local.Tests.csproj b/src/System.Transactions.Local/tests/System.Transactions.Local.Tests.csproj index a62f7315e9a6..e02084848f24 100644 --- a/src/System.Transactions.Local/tests/System.Transactions.Local.Tests.csproj +++ b/src/System.Transactions.Local/tests/System.Transactions.Local.Tests.csproj @@ -18,6 +18,9 @@ + + Common\System\AssertExtensions.cs + \ No newline at end of file diff --git a/src/System.Transactions.Local/tests/TransactionScopeTest.cs b/src/System.Transactions.Local/tests/TransactionScopeTest.cs index 149f080c6db2..72dadc1a7cd5 100644 --- a/src/System.Transactions.Local/tests/TransactionScopeTest.cs +++ b/src/System.Transactions.Local/tests/TransactionScopeTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Xunit; namespace System.Transactions.Tests @@ -13,8 +14,8 @@ public class TransactionScopeTest [Fact] public void TransactionScopeWithInvalidTimeSpanThrows() { - Assert.Throws("transactionToUse", () => new TransactionScope(null, TimeSpan.FromSeconds(-1))); - Assert.Throws("scopeTimeout", () => new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(-1))); + AssertExtensions.Throws("transactionToUse", () => new TransactionScope(null, TimeSpan.FromSeconds(-1))); + AssertExtensions.Throws("scopeTimeout", () => new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(-1))); } [Fact] From 52e657701f7846ca209fe4350df0175391b7aaed Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Tue, 18 Apr 2017 10:00:20 -0700 Subject: [PATCH 134/336] Fix System.Diagnostic.Tracing configurations EventCounter is now in System.Private.CoreLib for uapaot so we have to exclude including that source code for that configuration. --- .../src/System.Diagnostics.Tracing.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj b/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj index 4f8307d8d9d8..7aeff68f63a5 100644 --- a/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj +++ b/src/System.Diagnostics.Tracing/src/System.Diagnostics.Tracing.csproj @@ -21,7 +21,7 @@ - + From f7f1320d5aeb59db4a8f054be23d872c6f6aade1 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Tue, 18 Apr 2017 10:01:14 -0700 Subject: [PATCH 135/336] Remove netfx asset copying from NETStandard.Library package We are now building the netfx assets live in corefx and removed them from the NETStandard.Library package so we need to adjust the consumption of that package to account for it. --- external/netstandard/Configurations.props | 1 - external/netstandard/netstandard.depproj | 7 ------- 2 files changed, 8 deletions(-) diff --git a/external/netstandard/Configurations.props b/external/netstandard/Configurations.props index d495fa4b2e02..2e14c5a1f6fb 100644 --- a/external/netstandard/Configurations.props +++ b/external/netstandard/Configurations.props @@ -11,7 +11,6 @@ netstandard1.6; netstandard2.0; netstandard; - netfx; \ No newline at end of file diff --git a/external/netstandard/netstandard.depproj b/external/netstandard/netstandard.depproj index 54580889b7b1..00b0561c6262 100644 --- a/external/netstandard/netstandard.depproj +++ b/external/netstandard/netstandard.depproj @@ -2,16 +2,11 @@ - true - true true true - - true Reference None <_NETStandardTFMFolder Condition="'$(NuGetTargetMoniker)' == '.NETStandard,Version=v2.0'">netstandard2.0 - <_NETStandardTFMFolder Condition="'$(IsNetFx)' == 'true'">net461 @@ -39,8 +34,6 @@ $(RefPath) - - $(RuntimePath) From cfcbe020b495895029d418aa8cbc0ff8192b3f62 Mon Sep 17 00:00:00 2001 From: Sepideh Khoshnood Date: Tue, 18 Apr 2017 10:26:30 -0700 Subject: [PATCH 136/336] Fix Desktop failures in XSLT tests (#18557) --- .../TestFiles/TestData/XsltApiV2/sample.xsd | 22 +++++++ .../TestFiles/TestData/XsltApiV2/script.txt | 6 ++ .../XsltArgumentList.cs | 63 +++++++++++++------ .../XslCompiledTransformApi/XsltSettings.cs | 32 ++++++++++ .../Xslt/XslTransformApi/CXslTransform.cs | 11 +++- ...ystem.Xml.Xsl.XslTransformApi.Tests.csproj | 3 + 6 files changed, 117 insertions(+), 20 deletions(-) create mode 100644 src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/sample.xsd create mode 100644 src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/script.txt diff --git a/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/sample.xsd b/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/sample.xsd new file mode 100644 index 000000000000..002e8761831e --- /dev/null +++ b/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/sample.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/script.txt b/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/script.txt new file mode 100644 index 000000000000..7858901f33e2 --- /dev/null +++ b/src/System.Private.Xml/tests/Xslt/TestFiles/TestData/XsltApiV2/script.txt @@ -0,0 +1,6 @@ + +public int add(int i, int j) +{ + return i+j; +} + \ No newline at end of file diff --git a/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs b/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs index 6199e57de6ee..89d96f6096b9 100644 --- a/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs +++ b/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs @@ -4656,6 +4656,7 @@ public XPathNodeIteratorTests(ITestOutputHelper output) : base(output) _output = output; } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework does support Compiling JScript/CSharp scripts")] //[Variation(id = 1, Desc = "Call Current without MoveNext")] [InlineData()] [Theory] @@ -4671,25 +4672,36 @@ public void NodeIter1() xslArg.AddParam("sourceUri", String.Empty, uriSource.ToString()); xslt.Load(FullFilePath("xsd2cs1.xsl"), new XsltSettings(true, true), new XmlUrlResolver()); + }); + + Assert.Equal("Compiling JScript/CSharp scripts is not supported", e.InnerException.Message); + } + + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "Only full framework supports Compiling JScript/CSharp scripts")] + //[Variation(id = 1, Desc = "Call Current without MoveNext")] + [Fact] + public void NodeIter1_FullFramework() + { + XslCompiledTransform xslt = new XslCompiledTransform(); + + XsltArgumentList xslArg = new XsltArgumentList(); + XmlUrlResolver ur = new XmlUrlResolver(); + Uri uriSource = ur.ResolveUri(null, FullFilePath("sample.xsd")); + xslArg.AddParam("sourceUri", String.Empty, uriSource.ToString()); + + xslt.Load(FullFilePath("xsd2cs1.xsl"), new XsltSettings(true, true), new XmlUrlResolver()); + + Assert.Throws(() => + { XPathDocument doc = new XPathDocument(FullFilePath("sample.xsd")); - StringWriter sw = new StringWriter(); - try + using (StringWriter sw = new StringWriter()) { xslt.Transform(doc, xslArg, sw); - sw.Dispose(); - _output.WriteLine("No exception is thrown when .Current is called before .MoveNext on XPathNodeIterator"); - Assert.True(false); - } - catch (System.InvalidOperationException ex) - { - _output.WriteLine(ex.ToString()); - return; } }); - - Assert.Equal("Compiling JScript/CSharp scripts is not supported", e.InnerException.Message); } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework does support Compiling JScript/CSharp scripts")] //[Variation(id = 2, Desc = "Call Current after MoveNext")] [InlineData()] [Theory] @@ -4705,15 +4717,30 @@ public void NodeIter2() xslArg.AddParam("sourceUri", String.Empty, uriSource.ToString()); xslt.Load(FullFilePath("xsd2cs2.xsl"), new XsltSettings(true, true), new XmlUrlResolver()); - - XPathDocument doc = new XPathDocument(FullFilePath("sample.xsd")); - StringWriter sw = new StringWriter(); - xslt.Transform(doc, xslArg, sw); - sw.Dispose(); - return; }); Assert.Equal("Compiling JScript/CSharp scripts is not supported", e.InnerException.Message); } + + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "Only full framework supports Compiling JScript/CSharp scripts")] + //[Variation(id = 2, Desc = "Call Current after MoveNext")] + [Fact] + public void NodeIter2_FullFramework() + { + XslCompiledTransform xslt = new XslCompiledTransform(); + + XsltArgumentList xslArg = new XsltArgumentList(); + XmlUrlResolver ur = new XmlUrlResolver(); + Uri uriSource = ur.ResolveUri(null, FullFilePath("sample.xsd")); + xslArg.AddParam("sourceUri", String.Empty, uriSource.ToString()); + + xslt.Load(FullFilePath("xsd2cs2.xsl"), new XsltSettings(true, true), new XmlUrlResolver()); + + XPathDocument doc = new XPathDocument(FullFilePath("sample.xsd")); + using (StringWriter sw = new StringWriter()) + { + xslt.Transform(doc, xslArg, sw); + } + } } } diff --git a/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltSettings.cs b/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltSettings.cs index 69265ea40a06..01d7d5519a68 100644 --- a/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltSettings.cs +++ b/src/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltSettings.cs @@ -47,6 +47,7 @@ private void VerifyResult(object actual, object expected, string message) Assert.Equal(actual, expected); } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework does support Compiling JScript/CSharp scripts")] //[Variation(id = 1, Desc = "Test the script block with EnableScript, should work", Pri = 0, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, true })] [InlineData(1, "XsltSettings.xml", "XsltSettings1.xsl", false, true)] //[Variation(id = 4, Desc = "Test the script block with TrustedXslt, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", true, true })] @@ -62,6 +63,22 @@ public void XsltSettings1_1_ContainsScript(object param0, object param1, object Assert.Equal("Compiling JScript/CSharp scripts is not supported", e.InnerException.Message); } + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "Only full framework supports Compiling JScript/CSharp scripts")] + //[Variation(id = 1, Desc = "Test the script block with EnableScript, should work", Pri = 0, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, true })] + [InlineData(1, "XsltSettings.xml", "XsltSettings1.xsl", false, true)] + //[Variation(id = 4, Desc = "Test the script block with TrustedXslt, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", true, true })] + [InlineData(4, "XsltSettings.xml", "XsltSettings1.xsl", true, true)] + //[Variation(id = 9, Desc = "Test the combination of script and document function with TrustedXslt, should work", Pri = 0, Params = new object[] { "XsltSettings.xml", "XsltSettings3.xsl", true, true })] + [InlineData(9, "XsltSettings.xml", "XsltSettings3.xsl", true, true)] + //[Variation(id = 11, Desc = "Test the combination of script and document function with EnableScript, only script should work", Pri = 2, Params = new object[] { "XsltSettings.xml", "XsltSettings3.xsl", false, true })] + [InlineData(11, "XsltSettings.xml", "XsltSettings3.xsl", false, true)] + [Theory] + public void XsltSettings1_1_ContainsScript_FullFramework(object param0, object param1, object param2, object param3, object param4) + { + XsltSettings1_1(param0, param1, param2, param3, param4); + } + + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Full framework does support Compiling JScript/CSharp scripts")] //[Variation(id = 15, Desc = "Test 1 with Default settings, should fail", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, true, false, false })] [InlineData(15, "XsltSettings.xml", "XsltSettings1.xsl", false, true, false, false)] //[Variation(id = 16, Desc = "Test 2 with EnableScript override, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, false, false, true })] @@ -77,6 +94,21 @@ public void XsltSettings1_2_ContainsScript(object param0, object param1, object Assert.Equal("Compiling JScript/CSharp scripts is not supported", e.InnerException.Message); } + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "Only full framework supports Compiling JScript/CSharp scripts")] + //[Variation(id = 15, Desc = "Test 1 with Default settings, should fail", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, true, false, false })] + [InlineData(15, "XsltSettings.xml", "XsltSettings1.xsl", false, true, false, false)] + //[Variation(id = 16, Desc = "Test 2 with EnableScript override, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings1.xsl", false, false, false, true })] + [InlineData(16, "XsltSettings.xml", "XsltSettings1.xsl", false, false, false, true)] + //[Variation(id = 19, Desc = "Test 9 with Default settings override, should fail", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings3.xsl", true, true, false, false })] + [InlineData(19, "XsltSettings.xml", "XsltSettings3.xsl", true, true, false, false)] + //[Variation(id = 20, Desc = "Test 10 with TrustedXslt override, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings3.xsl", false, false, true, true })] + [InlineData(20, "XsltSettings.xml", "XsltSettings3.xsl", false, false, true, true)] + [Theory] + public void XsltSettings1_2_ContainsScript_FullFramework(object param0, object param1, object param2, object param3, object param4, object param5, object param6) + { + XsltSettings1_2(param0, param1, param2, param3, param4, param5, param6); + } + //[Variation(id = 5, Desc = "Test the document function with EnableDocumentFunction, should work", Pri = 0, Params = new object[] { "XsltSettings.xml", "XsltSettings2.xsl", true, false })] [InlineData(5, "XsltSettings.xml", "XsltSettings2.xsl", true, false)] //[Variation(id = 8, Desc = "Test the document function with TrustedXslt, should work", Pri = 1, Params = new object[] { "XsltSettings.xml", "XsltSettings2.xsl", true, true })] diff --git a/src/System.Private.Xml/tests/Xslt/XslTransformApi/CXslTransform.cs b/src/System.Private.Xml/tests/Xslt/XslTransformApi/CXslTransform.cs index 18f83a665ef6..2048d5bc3146 100644 --- a/src/System.Private.Xml/tests/Xslt/XslTransformApi/CXslTransform.cs +++ b/src/System.Private.Xml/tests/Xslt/XslTransformApi/CXslTransform.cs @@ -1747,7 +1747,10 @@ public void LoadXmlReader2() } catch (System.Xml.Xsl.XsltCompileException e) { - CheckExpectedError(e.InnerException, "system.xml", "Xslt_WrongStylesheetElement", new string[] { "" }); + if (PlatformDetection.IsFullFramework) + CheckExpectedError(e.InnerException, "system.data.sqlxml", "Xslt_WrongStylesheetElement", new string[] { "" }); + else + CheckExpectedError(e.InnerException, "system.xml", "Xslt_WrongStylesheetElement", new string[] { "" }); return; } _output.WriteLine("No exception thrown for a loading a closed reader!"); @@ -1847,7 +1850,11 @@ public void LoadXmlReader5() } catch (System.Xml.Xsl.XsltCompileException e) { - CheckExpectedError(e.InnerException, "system.xml", "Xslt_WrongStylesheetElement", new string[] { "" }); + + if (PlatformDetection.IsFullFramework) + CheckExpectedError(e.InnerException, "system.data.sqlxml", "Xslt_WrongStylesheetElement", new string[] { "" }); + else + CheckExpectedError(e.InnerException, "system.xml", "Xslt_WrongStylesheetElement", new string[] { "" }); } finally { diff --git a/src/System.Private.Xml/tests/Xslt/XslTransformApi/System.Xml.Xsl.XslTransformApi.Tests.csproj b/src/System.Private.Xml/tests/Xslt/XslTransformApi/System.Xml.Xsl.XslTransformApi.Tests.csproj index 1c4fdf0072e6..37296f055f08 100644 --- a/src/System.Private.Xml/tests/Xslt/XslTransformApi/System.Xml.Xsl.XslTransformApi.Tests.csproj +++ b/src/System.Private.Xml/tests/Xslt/XslTransformApi/System.Xml.Xsl.XslTransformApi.Tests.csproj @@ -26,6 +26,9 @@ TestFiles\%(RecursiveDir)%(Filename)%(Extension) TestFiles\%(RecursiveDir) + + CommonTest\System\PlatformDetection.cs + From 88e110bc10f3d5c9e27c1df41cf8be3300fd8c7e Mon Sep 17 00:00:00 2001 From: Tarek Mahmoud Sayed Date: Tue, 18 Apr 2017 10:49:07 -0700 Subject: [PATCH 137/336] Sign System.JSON with original Silverlight key (#18558) * Sign System.JSON with original Silverlight key * add comments * update the comment --- BuildToolsVersion.txt | 2 +- Tools-Override/sign.targets | 5 +++++ src/System.Json/src/System.Json.csproj | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index 97192b5bb9aa..5793f9c30a53 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -1.0.27-prerelease-01514-02 \ No newline at end of file +1.0.27-prerelease-01517-02 \ No newline at end of file diff --git a/Tools-Override/sign.targets b/Tools-Override/sign.targets index 07f73ae6e57d..8ea0cca845b8 100644 --- a/Tools-Override/sign.targets +++ b/Tools-Override/sign.targets @@ -22,7 +22,12 @@ $(ToolsDir)MSFT.snk $(ToolsDir)ECMA.snk $(ToolsDir)Open.snk + $(ToolsDir)SilverlightPlatformPublicKey.snk + $(ToolsDir)SilverlightPublicKey.snk + Open + Silverlight + SilverlightExtension $(ToolsDir)Test.snk diff --git a/src/System.Json/src/System.Json.csproj b/src/System.Json/src/System.Json.csproj index f3f416d463cd..4f12ea9374e1 100644 --- a/src/System.Json/src/System.Json.csproj +++ b/src/System.Json/src/System.Json.csproj @@ -3,6 +3,10 @@ {B11B5B76-F583-44EA-A4B7-3ABD990594F6} + + SilverlightExtension From efd10d9d156e0d44be2a81adcaf2fb8e0e3eee73 Mon Sep 17 00:00:00 2001 From: Ian Hays Date: Tue, 18 Apr 2017 11:22:13 -0700 Subject: [PATCH 138/336] Expose the ExternalAttributes field in ZipArchive The ExternalFileAttributes field of a ZipArchiveEntry is currently hidden within the implementation and not accessible. This has been fine in the Windows world since it's not used but it is used by Unix's zip/unzip programs to store file permissions of an entry. As it currently stands, there is no way to carry Unix RWX permissions within a zip, so at unzip time the unzipper has to guess at permissions and manually chmod the entries. This PR simply exposes the raw field so that it may be used in any circumstance that requires access to the field. Tests are added to ensure that this field is set, read, and roundtrips properly with zips created from other common programs which use the field. --- external/test-runtime/XUnit.Runtime.depproj | 2 +- ...System.IO.Compression.ZipFile.Tests.csproj | 2 +- .../ref/System.IO.Compression.cs | 1 + .../System/IO/Compression/ZipArchiveEntry.cs | 18 +++++++- .../tests/Configurations.props | 2 + ...em.IO.Compression.Performance.Tests.csproj | 4 +- .../tests/System.IO.Compression.Tests.csproj | 9 +++- .../tests/ZipArchive/zip_netcoreappTests.cs | 45 +++++++++++++++++++ 8 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs diff --git a/external/test-runtime/XUnit.Runtime.depproj b/external/test-runtime/XUnit.Runtime.depproj index a0a7745a41b0..9b20236de420 100644 --- a/external/test-runtime/XUnit.Runtime.depproj +++ b/external/test-runtime/XUnit.Runtime.depproj @@ -59,7 +59,7 @@ 2.5.0 - 1.0.4-prerelease + 1.0.5-prerelease 1.0.0-prerelease diff --git a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj index 9bdfef74afa4..6d9e3c481271 100644 --- a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj +++ b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj @@ -44,7 +44,7 @@ - + %(RecursiveDir)%(Filename)%(Extension) diff --git a/src/System.IO.Compression/ref/System.IO.Compression.cs b/src/System.IO.Compression/ref/System.IO.Compression.cs index 627f9ca1b927..b43971ac2da7 100644 --- a/src/System.IO.Compression/ref/System.IO.Compression.cs +++ b/src/System.IO.Compression/ref/System.IO.Compression.cs @@ -90,6 +90,7 @@ public partial class ZipArchiveEntry internal ZipArchiveEntry() { } public System.IO.Compression.ZipArchive Archive { get { throw null; } } public long CompressedLength { get { throw null; } } + public int ExternalAttributes { get { throw null; } set { } } public string FullName { get { throw null; } } public System.DateTimeOffset LastWriteTime { get { throw null; } set { } } public long Length { get { throw null; } } diff --git a/src/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs b/src/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs index 32916ecf275a..1bc85c731bbb 100644 --- a/src/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs +++ b/src/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs @@ -39,6 +39,7 @@ public partial class ZipArchiveEntry private bool _currentlyOpenForWrite; private bool _everOpenedForWrite; private Stream _outstandingWriteStream; + private uint _externalFileAttr; private string _storedEntryName; private byte[] _storedEntryNameBytes; // only apply to update mode @@ -70,6 +71,7 @@ internal ZipArchiveEntry(ZipArchive archive, ZipCentralDirectoryFileHeader cd) _lastModified = new DateTimeOffset(ZipHelper.DosTimeToDateTime(cd.LastModified)); _compressedSize = cd.CompressedSize; _uncompressedSize = cd.UncompressedSize; + _externalFileAttr = cd.ExternalFileAttributes; _offsetOfLocalHeader = cd.RelativeOffsetOfLocalHeader; // we don't know this yet: should be _offsetOfLocalHeader + 30 + _storedEntryNameBytes.Length + extrafieldlength // but entryname/extra length could be different in LH @@ -116,6 +118,7 @@ internal ZipArchiveEntry(ZipArchive archive, string entryName) _compressedSize = 0; // we don't know these yet _uncompressedSize = 0; + _externalFileAttr = 0; _offsetOfLocalHeader = 0; _storedOffsetOfCompressedData = null; _crc32 = 0; @@ -165,6 +168,19 @@ public long CompressedLength } } + public int ExternalAttributes + { + get + { + return (int)_externalFileAttr; + } + set + { + ThrowIfInvalidArchive(); + _externalFileAttr = (uint)value; + } + } + /// /// The relative path of the entry as stored in the Zip archive. Note that Zip archives allow any string to be the path of the entry, including invalid and absolute paths. /// @@ -527,7 +543,7 @@ internal void WriteCentralDirectoryFileHeader() writer.Write(_fileComment != null ? (ushort)_fileComment.Length : (ushort)0); // file comment length writer.Write((ushort)0); // disk number start writer.Write((ushort)0); // internal file attributes - writer.Write((uint)0); // external file attributes + writer.Write(_externalFileAttr); // external file attributes writer.Write(offsetOfLocalHeaderTruncated); // offset of local header writer.Write(_storedEntryNameBytes); diff --git a/src/System.IO.Compression/tests/Configurations.props b/src/System.IO.Compression/tests/Configurations.props index cfc57211a43f..742254e254b5 100644 --- a/src/System.IO.Compression/tests/Configurations.props +++ b/src/System.IO.Compression/tests/Configurations.props @@ -4,6 +4,8 @@ netstandard-Unix; netstandard-Windows_NT; + netcoreapp-Unix; + netcoreapp-Windows_NT; \ No newline at end of file diff --git a/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj b/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj index 41d2afa4084e..e102420a72a8 100644 --- a/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj +++ b/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj @@ -23,7 +23,7 @@ - + %(RecursiveDir)%(Filename)%(Extension) @@ -34,4 +34,4 @@ - + \ No newline at end of file diff --git a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj index 497e5b7735a0..b684d3277844 100644 --- a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj +++ b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj @@ -4,6 +4,10 @@ {BC2E1649-291D-412E-9529-EDDA94FA7AD6} + + + + @@ -45,8 +49,11 @@ Common\System\IO\Compression\ZipTestHelper.cs + + + - + %(RecursiveDir)%(Filename)%(Extension) diff --git a/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs b/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs new file mode 100644 index 000000000000..72a53ea0f2b5 --- /dev/null +++ b/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs @@ -0,0 +1,45 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Xunit; + +namespace System.IO.Compression.Tests +{ + public class zip_netcoreappTests : ZipFileTestBase + { + [Theory] + [InlineData("sharpziplib.zip", 0)] + [InlineData("Linux_RW_RW_R__.zip", 0x8000 + 0x0100 + 0x0080 + 0x0020 + 0x0010 + 0x0004)] + [InlineData("Linux_RWXRW_R__.zip", 0x8000 + 0x01C0 + 0x0020 + 0x0010 + 0x0004)] + [InlineData("OSX_RWXRW_R__.zip", 0x8000 + 0x01C0 + 0x0020 + 0x0010 + 0x0004)] + public static async Task Read_UnixFilePermissions(string zipName, uint expectedAttr) + { + using (ZipArchive archive = new ZipArchive(await StreamHelpers.CreateTempCopyStream(compat(zipName)), ZipArchiveMode.Read)) + { + foreach (ZipArchiveEntry e in archive.Entries) + { + Assert.Equal(expectedAttr, ((uint)e.ExternalAttributes) >> 16); + } + } + } + + [Theory] + [InlineData(int.MaxValue)] + [InlineData(int.MinValue)] + [InlineData(0)] + public static async Task RoundTrips_UnixFilePermissions(int expectedAttr) + { + using (ZipArchive archive = new ZipArchive(await StreamHelpers.CreateTempCopyStream(zfile("normal.zip")), ZipArchiveMode.Update)) + { + foreach (ZipArchiveEntry e in archive.Entries) + { + e.ExternalAttributes = expectedAttr; + Assert.Equal(expectedAttr, e.ExternalAttributes); + } + } + } + } +} From c564ecd7805a4ced68bb0ebd07f2233feac1b716 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 18 Apr 2017 20:33:45 +0200 Subject: [PATCH 139/336] Adding missing ECDsaCng members (#18522) * Adding missing ECDsaCng members * Add two ECDsaCng members which throw PNSE * Moved method out of conditional compilation * nameof HashAlgorithm --- .../ref/System.Security.Cryptography.Cng.cs | 16 ++++++++ .../System.Security.Cryptography.Cng.csproj | 3 +- .../System/Security/Cryptography/ECDsaCng.cs | 41 +++++++++++++++++++ .../Security/Cryptography/ECKeyXmlFormat.cs | 17 ++++++++ ...patBaseline.netcoreapp.netfx461.ignore.txt | 10 ----- 5 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECKeyXmlFormat.cs diff --git a/src/System.Security.Cryptography.Cng/ref/System.Security.Cryptography.Cng.cs b/src/System.Security.Cryptography.Cng/ref/System.Security.Cryptography.Cng.cs index 75a44c1d582c..8b53155dead9 100644 --- a/src/System.Security.Cryptography.Cng/ref/System.Security.Cryptography.Cng.cs +++ b/src/System.Security.Cryptography.Cng/ref/System.Security.Cryptography.Cng.cs @@ -281,6 +281,7 @@ public ECDsaCng(System.Security.Cryptography.CngKey key) { } #if !netfx // types missing from netfx targeting pack public ECDsaCng(System.Security.Cryptography.ECCurve curve) { } #endif + public CngAlgorithm HashAlgorithm { get { throw null; } set { } } public System.Security.Cryptography.CngKey Key { get { throw null; } } public override int KeySize { get { throw null; } set { } } public override System.Security.Cryptography.KeySizes[] LegalKeySizes { get { throw null; } } @@ -290,14 +291,29 @@ protected override void Dispose(bool disposing) { } public override System.Security.Cryptography.ECParameters ExportParameters(bool includePrivateParameters) { throw null; } public override void GenerateKey(System.Security.Cryptography.ECCurve curve) { } #endif + public void FromXmlString(string xml, ECKeyXmlFormat format) { throw null; } protected override byte[] HashData(byte[] data, int offset, int count, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { throw null; } protected override byte[] HashData(System.IO.Stream data, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { throw null; } #if !netfx // types missing from netfx targeting pack public override void ImportParameters(System.Security.Cryptography.ECParameters parameters) { } #endif + public byte[] SignData(byte[] data) { throw null; } + public byte[] SignData(byte[] data, int offset, int count) { throw null; } + public byte[] SignData(System.IO.Stream data) { throw null; } public override byte[] SignHash(byte[] hash) { throw null; } + public string ToXmlString(ECKeyXmlFormat format) { throw null; } + public bool VerifyData(byte[] data, byte[] signature) { throw null; } + public bool VerifyData(byte[] data, int offset, int count, byte[] signature) { throw null; } + public bool VerifyData(System.IO.Stream data, byte[] signature) { throw null; } public override bool VerifyHash(byte[] hash, byte[] signature) { throw null; } } + public enum ECKeyXmlFormat + { + /// + /// Use the format described in RFC 4050 + /// + Rfc4050 + } public sealed partial class RSACng : System.Security.Cryptography.RSA { public RSACng() { } diff --git a/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj b/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj index 0eb826ef605f..75fb578fe5b8 100644 --- a/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj +++ b/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj @@ -54,6 +54,7 @@ + @@ -271,4 +272,4 @@ - + \ No newline at end of file diff --git a/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECDsaCng.cs b/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECDsaCng.cs index 3a761e5dcf05..ae22ee056f1c 100644 --- a/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECDsaCng.cs +++ b/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECDsaCng.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.IO; using Internal.Cryptography; namespace System.Security.Cryptography @@ -9,6 +10,22 @@ namespace System.Security.Cryptography public sealed partial class ECDsaCng : ECDsa { private CngAlgorithmCore _core; + private CngAlgorithm _hashAlgorithm; + + /// + /// Hash algorithm to use when generating a signature over arbitrary data + /// + public CngAlgorithm HashAlgorithm + { + get + { + return _hashAlgorithm; + } + set + { + _hashAlgorithm = value ?? throw new ArgumentNullException(nameof(value)); + } + } /// /// Creates a new ECDsaCng object that will use the specified key. The key's @@ -74,5 +91,29 @@ private byte[] ExportFullKeyBlob(bool includePrivateParameters) { return ECCng.ExportFullKeyBlob(Key, includePrivateParameters); } + + public void FromXmlString(string xml, ECKeyXmlFormat format) + => throw new PlatformNotSupportedException(); + + public byte[] SignData(byte[] data) + => SignData(data, new HashAlgorithmName(HashAlgorithm.Algorithm)); + + public byte[] SignData(byte[] data, int offset, int count) => + SignData(data, offset, count, new HashAlgorithmName(HashAlgorithm.Algorithm)); + + public byte[] SignData(Stream data) + => SignData(data, new HashAlgorithmName(HashAlgorithm.Algorithm)); + + public string ToXmlString(ECKeyXmlFormat format) + => throw new PlatformNotSupportedException(); + + public bool VerifyData(byte[] data, byte[] signature) + => VerifyData(data, signature, new HashAlgorithmName(HashAlgorithm.Algorithm)); + + public bool VerifyData(byte[] data, int offset, int count, byte[] signature) + => VerifyData(data, offset, count, signature, new HashAlgorithmName(HashAlgorithm.Algorithm)); + + public bool VerifyData(Stream data, byte[] signature) + => VerifyData(data, signature, new HashAlgorithmName(HashAlgorithm.Algorithm)); } } diff --git a/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECKeyXmlFormat.cs b/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECKeyXmlFormat.cs new file mode 100644 index 000000000000..e74a2a3a852b --- /dev/null +++ b/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography/ECKeyXmlFormat.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Security.Cryptography +{ + /// + /// XML serialization formats for elliptic curve keys + /// + public enum ECKeyXmlFormat + { + /// + /// Use the format described in RFC 4050 + /// + Rfc4050 + } +} diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt index 6c3845ef4622..2575eae4e569 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt @@ -3304,16 +3304,6 @@ MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(Syst MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.FromXmlString(System.String, System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.HashAlgorithm.set(System.Security.Cryptography.CngAlgorithm)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.Byte[], System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.SignData(System.IO.Stream)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ToXmlString(System.Security.Cryptography.ECKeyXmlFormat)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.Byte[], System.Int32, System.Int32, System.Byte[])' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.VerifyData(System.IO.Stream, System.Byte[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Object, System.Object, System.Reflection.MethodInfo, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Reflection.AssemblyName, System.Security.PermissionSet, System.Security.PermissionSet, System.Reflection.MethodInfo, System.Security.Permissions.SecurityAction, System.Object, System.Security.IPermission, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.Action.get()' does not exist in the implementation but it does exist in the contract. From 91dd6b52642158fb08b58cfc7b5fa954d43e82de Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Tue, 18 Apr 2017 11:46:02 -0700 Subject: [PATCH 140/336] Dead metadata (#18412) --- .../Metadata/Internal/NamespaceCache.cs | 43 ------------------- .../Reflection/Metadata/Internal/Tables.cs | 5 --- .../Metadata/MetadataReader.WinMD.cs | 6 --- .../Metadata/PortablePdb/Tables.Debug.cs | 5 --- .../DeclarativeSecurityAttribute.cs | 5 --- 5 files changed, 64 deletions(-) diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/NamespaceCache.cs b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/NamespaceCache.cs index 2c6d78a15dbc..cb7af5f34b87 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/NamespaceCache.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/NamespaceCache.cs @@ -15,7 +15,6 @@ internal class NamespaceCache private readonly object _namespaceTableAndListLock = new object(); private Dictionary _namespaceTable; private NamespaceData _rootNamespace; - private ImmutableArray _namespaceList; private uint _virtualNamespaceCounter; internal NamespaceCache(MetadataReader reader) @@ -384,36 +383,6 @@ private void PopulateTableWithExportedTypes(Dictionary - /// Populates namespaceList with distinct namespaces. No ordering is guaranteed. - /// - private void PopulateNamespaceList() - { - lock (_namespaceTableAndListLock) - { - if (_namespaceList != null) - { - return; - } - - Debug.Assert(_namespaceTable != null); - var namespaceNameSet = new Dictionary(); - var namespaceListBuilder = ImmutableArray.CreateBuilder(); - - foreach (var group in _namespaceTable) - { - var data = group.Value; - if (!namespaceNameSet.ContainsKey(data.FullName)) - { - namespaceNameSet.Add(data.FullName, null); - namespaceListBuilder.Add(group.Key); - } - } - - _namespaceList = namespaceListBuilder.ToImmutable(); - } - } - /// /// If the namespace table doesn't exist, populates it! /// @@ -427,18 +396,6 @@ private void EnsureNamespaceTableIsPopulated() Debug.Assert(_namespaceTable != null); } - /// - /// If the namespace list doesn't exist, populates it! - /// - private void EnsureNamespaceListIsPopulated() - { - if (_namespaceList == null) - { - PopulateNamespaceList(); - } - Debug.Assert(_namespaceList != null); - } - /// /// An intermediate class used to build NamespaceData instances. This was created because we wanted to /// use ImmutableArrays in NamespaceData, but having ArrayBuilders and ImmutableArrays that served the diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/Tables.cs b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/Tables.cs index fbc39f01d8c3..4642c7365445 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/Tables.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/Internal/Tables.cs @@ -811,11 +811,6 @@ internal BlobHandle GetValue(CustomAttributeHandle handle) return BlobHandle.FromOffset(this.Block.PeekHeapReference(rowOffset + _ValueOffset, _IsBlobHeapRefSizeSmall)); } - private uint GetParentTag(int index) - { - return this.Block.PeekTaggedReference(index * this.RowSize + _ParentOffset, _IsHasCustomAttributeRefSizeSmall); - } - internal void GetAttributeRange(EntityHandle parentHandle, out int firstImplRowId, out int lastImplRowId) { int startRowNumber, endRowNumber; diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.WinMD.cs b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.WinMD.cs index 2294ae6fb7b0..2c1467424b9f 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.WinMD.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.WinMD.cs @@ -366,12 +366,6 @@ private bool IsSystemAttribute(TypeReferenceHandle handle) StringHeap.EqualsRaw(TypeRefTable.GetName(handle), "Attribute"); } - private bool IsSystemEnum(TypeReferenceHandle handle) - { - return StringHeap.EqualsRaw(TypeRefTable.GetNamespace(handle), "System") && - StringHeap.EqualsRaw(TypeRefTable.GetName(handle), "Enum"); - } - private bool NeedsWinRTPrefix(TypeAttributes flags, EntityHandle extends) { if ((flags & (TypeAttributes.VisibilityMask | TypeAttributes.Interface)) != TypeAttributes.Public) diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/PortablePdb/Tables.Debug.cs b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/PortablePdb/Tables.Debug.cs index dadbdb002205..e40e7651b177 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/PortablePdb/Tables.Debug.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/PortablePdb/Tables.Debug.cs @@ -510,10 +510,5 @@ out endRowNumber lastImplRowId = endRowNumber + 1; } } - - private bool CheckSorted() - { - return Block.IsOrderedByReferenceAscending(RowSize, ParentOffset, _isHasCustomDebugInformationRefSizeSmall); - } } } diff --git a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/DeclarativeSecurityAttribute.cs b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/DeclarativeSecurityAttribute.cs index 163278ca4115..d778b392deeb 100644 --- a/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/DeclarativeSecurityAttribute.cs +++ b/src/System.Reflection.Metadata/src/System/Reflection/Metadata/TypeSystem/DeclarativeSecurityAttribute.cs @@ -23,11 +23,6 @@ internal DeclarativeSecurityAttribute(MetadataReader reader, int rowId) _rowId = rowId; } - private DeclarativeSecurityAttributeHandle Handle - { - get { return DeclarativeSecurityAttributeHandle.FromRowId(_rowId); } - } - public DeclarativeSecurityAction Action { get From 48b364991cd4e6478b34728225d0047232ab9dd8 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Tue, 18 Apr 2017 12:02:40 -0700 Subject: [PATCH 141/336] Update CoreClr, CoreFx to preview1-25218-03, preview1-25218-03, respectively (#18561) --- dependencies.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.props b/dependencies.props index afe02f3b370f..e38055c71a74 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,8 +9,8 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 4ddbf159025d0c1f43f7e8132d514e4949b5f531 - 4ddbf159025d0c1f43f7e8132d514e4949b5f531 + ee8cf8d1c5908ea7f63f0a769439456ff14672eb + ee8cf8d1c5908ea7f63f0a769439456ff14672eb 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 4ddbf159025d0c1f43f7e8132d514e4949b5f531 4ddbf159025d0c1f43f7e8132d514e4949b5f531 @@ -20,8 +20,8 @@ - preview1-25218-02 - preview1-25218-02 + preview1-25218-03 + preview1-25218-03 beta-25016-01 beta-25218-01 beta-25218-01 From 964b73bddbc784b33192b51556f0d594462b67e4 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 18 Apr 2017 21:14:51 +0200 Subject: [PATCH 142/336] Microsoft.Win32.Registry shouldn't be supported on uap (#18507) * Registry feature added && ifdefd * Include condition for registry reference * remove registry uap build * removed build configs from registry --- src/Microsoft.Win32.Registry/dir.props | 2 -- .../src/Configurations.props | 1 - .../src/Microsoft.Win32.Registry.csproj | 6 ++---- .../src/System.Diagnostics.Process.csproj | 3 ++- .../System/Diagnostics/PerformanceCounterLib.cs | 15 ++++++++++++++- .../Diagnostics/ProcessStartInfo.Windows.cs | 6 ++++++ 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.Win32.Registry/dir.props b/src/Microsoft.Win32.Registry/dir.props index 868c1ebc215e..cfdd3c3550e6 100644 --- a/src/Microsoft.Win32.Registry/dir.props +++ b/src/Microsoft.Win32.Registry/dir.props @@ -6,8 +6,6 @@ MSFT true false - true - false true diff --git a/src/Microsoft.Win32.Registry/src/Configurations.props b/src/Microsoft.Win32.Registry/src/Configurations.props index 988a1a18caaa..b1bed8d017a7 100644 --- a/src/Microsoft.Win32.Registry/src/Configurations.props +++ b/src/Microsoft.Win32.Registry/src/Configurations.props @@ -2,7 +2,6 @@ - uap-Windows_NT; netcoreapp-Windows_NT; netcoreapp-Unix; netfx; diff --git a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj index 3e79e544c58c..c92dc272438a 100644 --- a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj +++ b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj @@ -21,9 +21,7 @@ - - - + Common\Interop\Windows\Interop.RegistryOptions.cs @@ -40,7 +38,7 @@ - + Common\Interop\Windows\Interop.Libraries.cs diff --git a/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj b/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj index 10182086248e..9cdf888ae093 100644 --- a/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj +++ b/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj @@ -6,6 +6,7 @@ {F55047F8-E47B-46E3-B221-C23595AFE168} System.Diagnostics.Process System.Diagnostics.Process + $(DefineConstants);FEATURE_REGISTRY true @@ -377,7 +378,7 @@ - + diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs index f83a55e977d4..1ac863cdd20c 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs @@ -2,12 +2,13 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#if FEATURE_REGISTRY using Microsoft.Win32; +#endif using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.IO; -using System.Runtime.InteropServices; using System.Threading; namespace System.Diagnostics @@ -94,6 +95,7 @@ internal byte[] GetPerformanceData(string item) private Dictionary GetStringTable(bool isHelp) { +#if FEATURE_REGISTRY Dictionary stringTable; RegistryKey libraryKey; @@ -187,11 +189,16 @@ private Dictionary GetStringTable(bool isHelp) } return stringTable; +#else + return new Dictionary(); +#endif } internal class PerformanceMonitor { +#if FEATURE_REGISTRY private RegistryKey _perfDataKey = null; +#endif private string _machineName; internal PerformanceMonitor(string machineName) @@ -202,7 +209,9 @@ internal PerformanceMonitor(string machineName) private void Init() { +#if FEATURE_REGISTRY _perfDataKey = Registry.PerformanceData; +#endif } // Win32 RegQueryValueEx for perf data could deadlock (for a Mutex) up to 2mins in some @@ -216,6 +225,7 @@ private void Init() // in this case with InvalidOperationException after the wait time expires. internal byte[] GetData(string item) { +#if FEATURE_REGISTRY int waitRetries = 17; //2^16*10ms == approximately 10mins int waitSleep = 0; byte[] data = null; @@ -266,6 +276,9 @@ internal byte[] GetData(string item) } throw new Win32Exception(error); +#else + return Array.Empty(); +#endif } } } diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.Windows.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.Windows.cs index 68bf3470a538..49741042794b 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.Windows.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.Windows.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#if FEATURE_REGISTRY using Microsoft.Win32; +#endif using System.Collections.Generic; using System.IO; using System.Security; @@ -36,6 +38,7 @@ public string[] Verbs { get { +#if FEATURE_REGISTRY string extension = Path.GetExtension(FileName); if (string.IsNullOrEmpty(extension)) return Array.Empty(); @@ -66,6 +69,9 @@ public string[] Verbs return verbs.ToArray(); } } +#else + return Array.Empty(); +#endif } } From ec4d6f868eb6497216791fc158173e7123d6e73f Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Fri, 14 Apr 2017 14:47:44 -0700 Subject: [PATCH 143/336] Explicitly list paths for harvesting --- src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj | 3 +++ .../pkg/Microsoft.VisualBasic.pkgproj | 8 ++++++++ .../pkg/Microsoft.Win32.Registry.AccessControl.pkgproj | 2 ++ .../pkg/Microsoft.Win32.Registry.pkgproj | 2 ++ .../pkg/System.ComponentModel.Annotations.pkgproj | 4 ++++ .../pkg/System.Data.SqlClient.pkgproj | 4 ++++ .../pkg/System.Diagnostics.DiagnosticSource.pkgproj | 3 ++- .../pkg/System.IO.FileSystem.AccessControl.pkgproj | 2 ++ src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj | 1 + .../pkg/System.IO.Pipes.AccessControl.pkgproj | 2 ++ .../pkg/System.Net.Http.WinHttpHandler.pkgproj | 2 ++ src/System.Net.Http/pkg/System.Net.Http.pkgproj | 4 ++++ .../pkg/System.Reflection.DispatchProxy.pkgproj | 2 ++ .../pkg/System.Reflection.TypeExtensions.pkgproj | 5 ++++- ...tem.Runtime.InteropServices.RuntimeInformation.pkgproj | 2 ++ .../pkg/System.Security.AccessControl.pkgproj | 2 ++ .../pkg/System.Security.Cryptography.OpenSsl.pkgproj | 2 +- .../pkg/System.Security.Cryptography.Pkcs.pkgproj | 3 +++ .../System.Security.Cryptography.ProtectedData.pkgproj | 2 ++ .../pkg/System.Security.Principal.Windows.pkgproj | 3 ++- .../pkg/System.ServiceProcess.ServiceController.pkgproj | 2 ++ .../pkg/System.Text.Encoding.CodePages.pkgproj | 2 ++ .../pkg/System.Threading.AccessControl.pkgproj | 2 ++ 23 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj b/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj index e30ea9330bcd..1a173da4a958 100644 --- a/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj +++ b/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj @@ -31,6 +31,9 @@ true + + + \ No newline at end of file diff --git a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj index 2884f86fe9a6..b9b3573876c8 100644 --- a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj +++ b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj @@ -12,6 +12,14 @@ + + + + + + + + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj index 9a69a76fc316..392237d9cc4f 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj +++ b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj index 6b387c20d4f2..78c7715898d5 100644 --- a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj +++ b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj index 3f8c578e631a..414d17f6a7d3 100644 --- a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj +++ b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj @@ -17,6 +17,10 @@ + + + + \ No newline at end of file diff --git a/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj b/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj index 3a7a343759b0..f17fa01fbd1a 100644 --- a/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj +++ b/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj @@ -6,6 +6,10 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + + + + diff --git a/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj b/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj index 9d75bdcd8a34..e57500599d89 100644 --- a/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj +++ b/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj @@ -9,10 +9,11 @@ net46;net45;netcore45;netcoreapp1.0;wpa81;$(AllXamarinFrameworks) - + + \ No newline at end of file diff --git a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj index e64f01059114..bdd4508fd82e 100644 --- a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj +++ b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj b/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj index fe55a2b7efa5..9d8579fe7cf8 100644 --- a/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj +++ b/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj @@ -6,6 +6,7 @@ net46;netcore50;netcoreapp1.0;$(AllXamarinFrameworks) + \ No newline at end of file diff --git a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj index 4411d887a31d..0d3e75cab133 100644 --- a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj +++ b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj index 8ec8b4443522..4aa9257cbe65 100644 --- a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj +++ b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.Net.Http/pkg/System.Net.Http.pkgproj b/src/System.Net.Http/pkg/System.Net.Http.pkgproj index c241dc387009..3250fac03517 100644 --- a/src/System.Net.Http/pkg/System.Net.Http.pkgproj +++ b/src/System.Net.Http/pkg/System.Net.Http.pkgproj @@ -6,6 +6,10 @@ netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) + + + + diff --git a/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj b/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj index 357f7539f9cc..97c5f909c1f3 100644 --- a/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj +++ b/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj @@ -9,6 +9,8 @@ true + + diff --git a/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj b/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj index 13e3446265c5..2b6333bf0937 100644 --- a/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj +++ b/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj @@ -6,6 +6,10 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + + + + @@ -18,7 +22,6 @@ now that net461 supports netstandard2.0 and therefor nestandard1.5 we must support the ns1.5 API in net461, exclude the net462 assembly since it is redundant. --> - diff --git a/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj b/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj index b665d0d0e52b..96143a0748ea 100644 --- a/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj +++ b/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj @@ -6,6 +6,8 @@ net45;netcore45;wpa81;netcoreapp1.0;$(AllXamarinFrameworks) + + diff --git a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj index 2bdd207f94b4..911ba3198d3f 100644 --- a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj +++ b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj b/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj index 53673c47fc25..a604eac81f2c 100644 --- a/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj +++ b/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj @@ -6,10 +6,10 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - + \ No newline at end of file diff --git a/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj b/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj index 5edd8f7cecc8..de9e5dab7a9c 100644 --- a/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj +++ b/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj @@ -9,6 +9,9 @@ <_xamarinFrameworks Include="$(AllXamarinFrameworks)" /> + + + \ No newline at end of file diff --git a/src/System.Security.Cryptography.ProtectedData/pkg/System.Security.Cryptography.ProtectedData.pkgproj b/src/System.Security.Cryptography.ProtectedData/pkg/System.Security.Cryptography.ProtectedData.pkgproj index a2e03cbe81bf..e3fca0e7fba6 100644 --- a/src/System.Security.Cryptography.ProtectedData/pkg/System.Security.Cryptography.ProtectedData.pkgproj +++ b/src/System.Security.Cryptography.ProtectedData/pkg/System.Security.Cryptography.ProtectedData.pkgproj @@ -6,6 +6,8 @@ net46;netcore50;netcoreapp1.0;$(AllXamarinFrameworks) + + diff --git a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj index c0155aa26bb2..80d9b072d13e 100644 --- a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj +++ b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj @@ -9,10 +9,11 @@ .NETCoreApp,Version=v1.1;.NETCoreApp,Version=v2.0 - + + \ No newline at end of file diff --git a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj index c30415388a39..4e1b558590d7 100644 --- a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj +++ b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file diff --git a/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj b/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj index dd22c2009dd6..5293871e790c 100644 --- a/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj +++ b/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj @@ -6,6 +6,8 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + + diff --git a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj index 50f2e9c3a444..b1b2d5e2e5cb 100644 --- a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj +++ b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj @@ -9,6 +9,8 @@ win + + \ No newline at end of file From a2dafc909abd92793d381d7fe11254d2bac46045 Mon Sep 17 00:00:00 2001 From: Lakshmi Priya Sekar Date: Tue, 18 Apr 2017 12:29:56 -0700 Subject: [PATCH 144/336] Check only for known failure exitcodes from ping to throw TimeOut exception. --- .../src/System/Net/NetworkInformation/Ping.Unix.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs b/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs index 3d90d4486859..b2b377288481 100644 --- a/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs +++ b/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs @@ -175,9 +175,9 @@ private async Task SendWithPingUtility(IPAddress address, byte[] buff else { cts.Cancel(); - if (p.ExitCode != 0) + if (p.ExitCode == 1 || p.ExitCode == 2) { - // This means no reply was received, although transmission may have been successful. + // Throw timeout for known failure return codes from ping functions. return CreateTimedOutPingReply(); } From 0e718a78b591dfbd46ccd7ac9411d15c4cdb46eb Mon Sep 17 00:00:00 2001 From: "Yi Zhang (CLR)" Date: Tue, 18 Apr 2017 12:38:15 -0700 Subject: [PATCH 145/336] Tlbattributes (#18532) Bring back TypeLib related attributes. Not strictly required for net standard 2.0 but nice to have for tlbimp created dll to not have dangling references. --- .../ref/System.Runtime.InteropServices.cs | 96 +++++++++++++ .../Runtime/InteropServices/Attributes.cs | 134 ++++++++++++++++++ 2 files changed, 230 insertions(+) diff --git a/src/System.Runtime.InteropServices/ref/System.Runtime.InteropServices.cs b/src/System.Runtime.InteropServices/ref/System.Runtime.InteropServices.cs index f12dcac67b7d..4006b872a92f 100644 --- a/src/System.Runtime.InteropServices/ref/System.Runtime.InteropServices.cs +++ b/src/System.Runtime.InteropServices/ref/System.Runtime.InteropServices.cs @@ -464,6 +464,12 @@ public partial interface ICustomQueryInterface { System.Runtime.InteropServices.CustomQueryInterfaceResult GetInterface(ref System.Guid iid, out System.IntPtr ppv); } + [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] + public sealed class ImportedFromTypeLibAttribute : Attribute + { + public ImportedFromTypeLibAttribute(String tlbFile) { } + public String Value { get { throw null; } } + } [System.AttributeUsageAttribute((System.AttributeTargets)(2048), Inherited = false)] public sealed partial class InAttribute : System.Attribute { @@ -822,6 +828,96 @@ public TypeIdentifierAttribute(string scope, string identifier) { } public string Identifier { get { throw null; } } public string Scope { get { throw null; } } } + [AttributeUsage(AttributeTargets.Interface, Inherited = false)] + public sealed class TypeLibImportClassAttribute : Attribute + { + public TypeLibImportClassAttribute(Type importClass) { } + public String Value { get { throw null; } } + } + [Serializable] + [Flags()] + public enum TypeLibTypeFlags + { + FAppObject = 0x0001, + FCanCreate = 0x0002, + FLicensed = 0x0004, + FPreDeclId = 0x0008, + FHidden = 0x0010, + FControl = 0x0020, + FDual = 0x0040, + FNonExtensible = 0x0080, + FOleAutomation = 0x0100, + FRestricted = 0x0200, + FAggregatable = 0x0400, + FReplaceable = 0x0800, + FDispatchable = 0x1000, + FReverseBind = 0x2000, + } + [Serializable] + [Flags()] + public enum TypeLibFuncFlags + { + FRestricted = 0x0001, + FSource = 0x0002, + FBindable = 0x0004, + FRequestEdit = 0x0008, + FDisplayBind = 0x0010, + FDefaultBind = 0x0020, + FHidden = 0x0040, + FUsesGetLastError = 0x0080, + FDefaultCollelem = 0x0100, + FUiDefault = 0x0200, + FNonBrowsable = 0x0400, + FReplaceable = 0x0800, + FImmediateBind = 0x1000, + } + [Serializable] + [Flags()] + public enum TypeLibVarFlags + { + FReadOnly = 0x0001, + FSource = 0x0002, + FBindable = 0x0004, + FRequestEdit = 0x0008, + FDisplayBind = 0x0010, + FDefaultBind = 0x0020, + FHidden = 0x0040, + FRestricted = 0x0080, + FDefaultCollelem = 0x0100, + FUiDefault = 0x0200, + FNonBrowsable = 0x0400, + FReplaceable = 0x0800, + FImmediateBind = 0x1000, + } + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Enum | AttributeTargets.Struct, Inherited = false)] + public sealed class TypeLibTypeAttribute : Attribute + { + public TypeLibTypeAttribute(TypeLibTypeFlags flags) {} + public TypeLibTypeAttribute(short flags) { } + public TypeLibTypeFlags Value { get { throw null; } } + } + [AttributeUsage(AttributeTargets.Method, Inherited = false)] + public sealed class TypeLibFuncAttribute : Attribute + { + public TypeLibFuncAttribute(TypeLibFuncFlags flags) { } + public TypeLibFuncAttribute(short flags) { } + public TypeLibFuncFlags Value { get { throw null; } } + } + [AttributeUsage(AttributeTargets.Field, Inherited = false)] + public sealed class TypeLibVarAttribute : Attribute + { + public TypeLibVarAttribute(TypeLibVarFlags flags) { } + public TypeLibVarAttribute(short flags) { } + public TypeLibVarFlags Value { get { throw null; } } + } + [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] + [System.Runtime.InteropServices.ComVisible(true)] + public sealed class TypeLibVersionAttribute : Attribute + { + public TypeLibVersionAttribute(int major, int minor) {} + public int MajorVersion { get { throw null; } } + public int MinorVersion { get { throw null; } } + } [System.ComponentModel.EditorBrowsableAttribute((System.ComponentModel.EditorBrowsableState)(1))] [System.ObsoleteAttribute("UnknownWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.")] public sealed partial class UnknownWrapper diff --git a/src/System.Runtime.InteropServices/src/System/Runtime/InteropServices/Attributes.cs b/src/System.Runtime.InteropServices/src/System/Runtime/InteropServices/Attributes.cs index 7c38be429944..434941eb8199 100644 --- a/src/System.Runtime.InteropServices/src/System/Runtime/InteropServices/Attributes.cs +++ b/src/System.Runtime.InteropServices/src/System/Runtime/InteropServices/Attributes.cs @@ -95,6 +95,16 @@ public enum IDispatchImplType SystemDefinedImpl = 0, } + [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] + public sealed class ImportedFromTypeLibAttribute : Attribute + { + public ImportedFromTypeLibAttribute(String tlbFile) + { + Value = tlbFile; + } + public string Value { get; } + } + [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)] public sealed class ManagedToNativeComInteropStubAttribute : Attribute { @@ -129,4 +139,128 @@ public SetWin32ContextInIDispatchAttribute() { } } + + [AttributeUsage(AttributeTargets.Interface, Inherited = false)] + public sealed class TypeLibImportClassAttribute : Attribute + { + public TypeLibImportClassAttribute(Type importClass) + { + Value = importClass.ToString(); + } + public string Value { get; } + } + + [Serializable] + [Flags] + public enum TypeLibTypeFlags + { + FAppObject = 0x0001, + FCanCreate = 0x0002, + FLicensed = 0x0004, + FPreDeclId = 0x0008, + FHidden = 0x0010, + FControl = 0x0020, + FDual = 0x0040, + FNonExtensible = 0x0080, + FOleAutomation = 0x0100, + FRestricted = 0x0200, + FAggregatable = 0x0400, + FReplaceable = 0x0800, + FDispatchable = 0x1000, + FReverseBind = 0x2000, + } + + [Serializable] + [Flags] + public enum TypeLibFuncFlags + { + FRestricted = 0x0001, + FSource = 0x0002, + FBindable = 0x0004, + FRequestEdit = 0x0008, + FDisplayBind = 0x0010, + FDefaultBind = 0x0020, + FHidden = 0x0040, + FUsesGetLastError = 0x0080, + FDefaultCollelem = 0x0100, + FUiDefault = 0x0200, + FNonBrowsable = 0x0400, + FReplaceable = 0x0800, + FImmediateBind = 0x1000, + } + + [Serializable] + [Flags] + public enum TypeLibVarFlags + { + FReadOnly = 0x0001, + FSource = 0x0002, + FBindable = 0x0004, + FRequestEdit = 0x0008, + FDisplayBind = 0x0010, + FDefaultBind = 0x0020, + FHidden = 0x0040, + FRestricted = 0x0080, + FDefaultCollelem = 0x0100, + FUiDefault = 0x0200, + FNonBrowsable = 0x0400, + FReplaceable = 0x0800, + FImmediateBind = 0x1000, + } + + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Enum | AttributeTargets.Struct, Inherited = false)] + public sealed class TypeLibTypeAttribute : Attribute + { + public TypeLibTypeAttribute(TypeLibTypeFlags flags) + { + Value = flags; + } + public TypeLibTypeAttribute(short flags) + { + Value = (TypeLibTypeFlags)flags; + } + public TypeLibTypeFlags Value { get; } + } + + [AttributeUsage(AttributeTargets.Method, Inherited = false)] + public sealed class TypeLibFuncAttribute : Attribute + { + public TypeLibFuncAttribute(TypeLibFuncFlags flags) + { + Value = flags; + } + public TypeLibFuncAttribute(short flags) + { + Value = (TypeLibFuncFlags)flags; + } + public TypeLibFuncFlags Value { get; } + } + + [AttributeUsage(AttributeTargets.Field, Inherited = false)] + public sealed class TypeLibVarAttribute : Attribute + { + public TypeLibVarAttribute(TypeLibVarFlags flags) + { + Value = flags; + } + public TypeLibVarAttribute(short flags) + { + Value = (TypeLibVarFlags)flags; + } + public TypeLibVarFlags Value { get; } + } + + [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] + [System.Runtime.InteropServices.ComVisible(true)] + public sealed class TypeLibVersionAttribute : Attribute + { + public TypeLibVersionAttribute(int major, int minor) + { + MajorVersion = major; + MinorVersion = minor; + } + + public int MajorVersion { get; } + public int MinorVersion { get; } + } } From e6ac96035d369e5f70e6fe1a7249ed432f5473ac Mon Sep 17 00:00:00 2001 From: Ian Hays Date: Tue, 18 Apr 2017 12:52:10 -0700 Subject: [PATCH 146/336] Remove some bad Registry tests These tests assert a Windows limitation that was removed in win10 anniversary. They're testing windows behavior, not netcore behavior, so should be removed. --- .../RegistryKey/RegistryKey_CreateSubKey_str.cs | 17 ----------------- .../RegistryKey_CreateSubKey_str_rkpc.cs | 11 ----------- 2 files changed, 28 deletions(-) diff --git a/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str.cs b/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str.cs index fafc3e0b4311..3564bcfbd605 100644 --- a/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str.cs +++ b/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str.cs @@ -41,23 +41,6 @@ public void NegativeTests() }); } - [ActiveIssue(10546)] - [Fact] - public void NegativeTest_DeeplyNestedKey() - { - // Max number of parts to the registry key path is 509 (failing once it hits 510). - // As TestRegistryKey is already a subkey, that gives us 507 remaining parts before an - // exception is thrown. - const int maxNestedLevel = 507; - string exceedsNestedSubkeyName = string.Join(@"\", Enumerable.Repeat("a", maxNestedLevel)); - using (RegistryKey k = TestRegistryKey.CreateSubKey(exceedsNestedSubkeyName)) - { - // Verify TestRegistryKey is already nested, with 508 slashes meaning 509 parts - Assert.Equal(maxNestedLevel + 1, k.Name.Count(c => c == '\\')); - } - Assert.Throws(() => TestRegistryKey.CreateSubKey(exceedsNestedSubkeyName + @"\" + maxNestedLevel)); - } - [Fact] public void CreateSubkeyWithEmptyName() { diff --git a/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str_rkpc.cs b/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str_rkpc.cs index 306049a3d090..6fb01e69e765 100644 --- a/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str_rkpc.cs +++ b/src/Microsoft.Win32.Registry/tests/RegistryKey/RegistryKey_CreateSubKey_str_rkpc.cs @@ -111,17 +111,6 @@ public void NegativeTests() }); } - [ActiveIssue(10546)] - [Fact] - public void NegativeTest_DeeplyNestedKey() - { - //According to msdn documentation max nesting level exceeds is 510 but actual is 508 - const int maxNestedLevel = 508; - string exceedsNestedSubkeyName = string.Join(@"\", Enumerable.Repeat("a", maxNestedLevel)); - Assert.Throws(() => TestRegistryKey.CreateSubKey(exceedsNestedSubkeyName, true)); - Assert.Throws(() => TestRegistryKey.CreateSubKey(exceedsNestedSubkeyName, RegistryKeyPermissionCheck.ReadWriteSubTree)); - } - [Fact] public void CreateWritableSubkeyWithEmptyName() { From 5086ddc16a29d6b743de4f3e9baaecf1c43f4ee8 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Tue, 18 Apr 2017 13:19:52 -0700 Subject: [PATCH 147/336] Get System.Runtime.Tests.dll build through NUTC. (#18562) --- src/System.Runtime/tests/System.Runtime.Tests.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Runtime/tests/System.Runtime.Tests.csproj b/src/System.Runtime/tests/System.Runtime.Tests.csproj index ad4e1203d51a..c92de620a04a 100644 --- a/src/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/System.Runtime/tests/System.Runtime.Tests.csproj @@ -6,6 +6,7 @@ true 1718 $(DefineConstants);netcoreapp + $(DefineConstants);uapaot From 453f2480ad27aee6a0eb0565deee81095565f84d Mon Sep 17 00:00:00 2001 From: WinCPP Date: Wed, 19 Apr 2017 01:56:18 +0530 Subject: [PATCH 148/336] Remove unnecessary debug assert --- .../src/System/Dynamic/Utils/TypeExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs index 875b6dffe496..c45caba09330 100644 --- a/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs +++ b/src/System.Linq.Expressions/src/System/Dynamic/Utils/TypeExtensions.cs @@ -34,7 +34,6 @@ public static MethodInfo GetAnyStaticMethodValidated(this Type type, string name /// private static bool MatchesArgumentTypes(this MethodInfo mi, Type[] argTypes) { - Debug.Assert(mi != null); Debug.Assert(argTypes != null); if (mi == null) From 69bb01f3c489d0861c8c0593e020d42d4d27c6e7 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Tue, 18 Apr 2017 21:28:40 +0100 Subject: [PATCH 149/336] Compile Lifted Convert Expression with custom ByRef (#18446) Fixes #18444 Also contains further Convert tests, including ActiveIssue test for #18445 --- .../Compiler/LambdaCompiler.Unary.cs | 2 +- .../tests/Convert/ConvertCheckedTests.cs | 16 ++++ .../tests/Convert/ConvertTests.cs | 74 +++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs index b9ed49e22c85..fe7be411c12b 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs @@ -336,7 +336,7 @@ private void EmitConvert(UnaryExpression node, CompilationFlags flags) UnaryExpression e = Expression.Convert( Expression.Call( node.Method, - Expression.Convert(node.Operand, pis[0].ParameterType) + Expression.Convert(node.Operand, paramType) ), node.Type ); diff --git a/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs b/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs index 51026b5c74cc..6c5992761555 100644 --- a/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs +++ b/src/System.Linq.Expressions/tests/Convert/ConvertCheckedTests.cs @@ -18442,5 +18442,21 @@ public static void ConvertCheckedMakeUnary(object source, object result, bool us Delegate del = lambda.Compile(useInterpreter); Assert.Equal(result, del.DynamicInvoke()); } + + [Fact] + public static void CannotConvertNonVoidToVoid() + { + Assert.Throws(() => Expression.ConvertChecked(Expression.Constant(1), typeof(void))); + Assert.Throws(() => Expression.ConvertChecked(Expression.Constant("a"), typeof(void))); + Assert.Throws(() => Expression.ConvertChecked(Expression.Constant(DateTime.MinValue), typeof(void))); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void ConvertVoidToVoid(bool useInterpreter) + { + Action act = Expression.Lambda(Expression.ConvertChecked(Expression.Empty(), typeof(void))) + .Compile(useInterpreter); + act(); + } } } diff --git a/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs b/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs index dcee10ecd4c1..66b9ab599781 100644 --- a/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs +++ b/src/System.Linq.Expressions/tests/Convert/ConvertTests.cs @@ -16738,6 +16738,8 @@ private class CustomConversions public static CustomConversions ConvertFromInt(int x) => new CustomConversions {Value = x}; + public static CustomConversions ConvertFromRefInt(ref int x) => new CustomConversions { Value = x++ }; + public static void DoNothing(CustomConversions cc) { } @@ -16769,6 +16771,62 @@ public static void CustomConversionNotStandardNameFrom(bool useInterpreter) Assert.Equal(4, func().Value); } + [Theory, ClassData(typeof(CompilationTypes))] + public static void CustomConversionNotStandardNameFromLifted(bool useInterpreter) + { + Expression operand = Expression.Constant(4, typeof(int?)); + MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.ConvertFromInt)); + Expression> lambda = Expression.Lambda>( + Expression.Convert(operand, typeof(CustomConversions), method)); + Func func = lambda.Compile(useInterpreter); + Assert.Equal(4, func().Value); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void CustomConversionNotStandardNameFromLiftedNullOperand(bool useInterpreter) + { + Expression operand = Expression.Constant(null, typeof(int?)); + MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.ConvertFromInt)); + Expression> lambda = Expression.Lambda>( + Expression.Convert(operand, typeof(CustomConversions), method)); + Func func = lambda.Compile(useInterpreter); + Assert.Throws(() => func()); + } + + public delegate TResult ByRefFunc(ref T arg); + + [Theory, ClassData(typeof(CompilationTypes))] + public static void CustomConversionNotStandardNameFromLiftedByRef(bool useInterpreter) + { + var param = Expression.Parameter(typeof(int?).MakeByRefType()); + MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.ConvertFromRefInt)); + Expression> lambda = Expression.Lambda>( + Expression.Convert(param, typeof(CustomConversions), method), param); + ByRefFunc func = lambda.Compile(useInterpreter); + int? x = 5; + Assert.Equal(5, func(ref x).Value); + Assert.Equal(5, x); // Refness is lost on lifting. + } + + [Theory, InlineData(false)] + public static void CustomConversionNotStandardNameFromByRef(bool useInterpreter) + { + var param = Expression.Parameter(typeof(int).MakeByRefType()); + MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.ConvertFromRefInt)); + Expression> lambda = Expression.Lambda>( + Expression.Convert(param, typeof(CustomConversions), method), param); + ByRefFunc func = lambda.Compile(useInterpreter); + int x = 5; + Assert.Equal(5, func(ref x).Value); + Assert.Equal(6, x); + } + + [Fact, ActiveIssue(18445)] + public static void CustomConversionNotStandardNameFromByRefInterpreter() + { + CustomConversionNotStandardNameFromByRef(true); + } + [Fact] public static void CustomConversionNotStandardNameToWrongType() { @@ -16808,5 +16866,21 @@ public static void CustomConversionNotStandardNameToExcessiveArity() MethodInfo method = typeof(CustomConversions).GetMethod(nameof(CustomConversions.FromAddition)); Assert.Throws(() => Expression.Convert(operand, typeof(int), method)); } + + [Fact] + public static void CannotConvertNonVoidToVoid() + { + Assert.Throws(() => Expression.Convert(Expression.Constant(1), typeof(void))); + Assert.Throws(() => Expression.Convert(Expression.Constant("a"), typeof(void))); + Assert.Throws(() => Expression.Convert(Expression.Constant(DateTime.MinValue), typeof(void))); + } + + [Theory, ClassData(typeof(CompilationTypes))] + public static void ConvertVoidToVoid(bool useInterpreter) + { + Action act = Expression.Lambda(Expression.Convert(Expression.Empty(), typeof(void))) + .Compile(useInterpreter); + act(); + } } } From 72002dbb7e3e657adaeb002feca0399d9667a54b Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Fri, 14 Apr 2017 12:55:35 -0700 Subject: [PATCH 150/336] Re-enable package validation and clean up package content --- Packaging.props | 9 ---- external/netstandard/netstandard.depproj | 9 +++- .../packageIndex.json | 18 +++++--- .../pkg/Microsoft.CSharp.pkgproj | 6 +++ .../ref/Microsoft.CSharp.csproj | 3 ++ .../pkg/Microsoft.VisualBasic.pkgproj | 6 +++ ...osoft.Win32.Registry.AccessControl.pkgproj | 8 +++- .../src/Configurations.props | 2 +- ...rosoft.Win32.Registry.AccessControl.csproj | 2 +- .../pkg/Microsoft.Win32.Registry.pkgproj | 8 +++- .../src/Configurations.props | 3 +- .../src/Microsoft.Win32.Registry.csproj | 1 + src/System.Buffers/dir.props | 1 - src/System.Buffers/pkg/System.Buffers.pkgproj | 2 + src/System.Buffers/src/Configurations.props | 5 +- .../pkg/System.Collections.Immutable.pkgproj | 2 + .../src/Configurations.props | 5 +- .../System.ComponentModel.Annotations.pkgproj | 6 +++ ...Configuration.ConfigurationManager.pkgproj | 1 - .../pkg/System.Data.SqlClient.pkgproj | 9 +++- .../src/Configurations.props | 4 ++ .../src/System.Data.SqlClient.csproj | 32 +++++++++---- ...ystem.Diagnostics.DiagnosticSource.pkgproj | 3 +- .../ref/Configurations.props | 8 ++-- ...System.Diagnostics.DiagnosticSource.csproj | 6 +-- .../src/Configurations.props | 13 +++--- ...System.IO.FileSystem.AccessControl.pkgproj | 8 +++- .../src/Configurations.props | 1 + .../System.IO.FileSystem.AccessControl.csproj | 2 +- .../pkg/System.IO.Packaging.pkgproj | 1 - .../ref/Configurations.props | 5 +- .../src/Configurations.props | 6 ++- .../src/System.IO.Packaging.csproj | 9 +++- .../pkg/System.IO.Pipes.AccessControl.pkgproj | 8 +++- .../src/Configurations.props | 2 +- .../src/System.IO.Pipes.AccessControl.csproj | 2 +- .../pkg/System.IO.Ports.pkgproj | 2 +- src/System.IO.Ports/src/Configurations.props | 1 + .../src/System.IO.Ports.csproj | 3 +- .../pkg/System.Net.Http.Rtc.pkgproj | 13 ------ .../System.Net.Http.WinHttpHandler.pkgproj | 8 +++- .../src/Configurations.props | 2 +- .../src/System.Net.Http.WinHttpHandler.csproj | 2 +- .../pkg/System.Net.Http.pkgproj | 46 ------------------- ...em.Numerics.Vectors.WindowsRuntime.pkgproj | 16 ------- .../pkg/System.Numerics.Vectors.pkgproj | 2 +- .../pkg/System.Reflection.Context.pkgproj | 14 ------ .../System.Reflection.DispatchProxy.pkgproj | 7 ++- .../System.Reflection.DispatchProxy.csproj | 4 +- .../src/Configurations.props | 6 ++- .../System.Reflection.DispatchProxy.csproj | 6 ++- .../pkg/System.Reflection.Metadata.pkgproj | 2 + .../src/Configurations.props | 5 +- .../dir.props | 1 - .../System.Reflection.TypeExtensions.pkgproj | 15 ++++-- .../src/Configurations.props | 12 +++-- .../System.Reflection.TypeExtensions.csproj | 15 +++++- ...InteropServices.RuntimeInformation.pkgproj | 21 --------- ...tem.Runtime.WindowsRuntime.UI.Xaml.pkgproj | 21 --------- .../ref/Configurations.props | 1 - .../src/Configurations.props | 1 - .../pkg/System.Runtime.WindowsRuntime.pkgproj | 26 ----------- .../ref/Configurations.props | 1 - .../src/Configurations.props | 1 - .../pkg/System.Security.AccessControl.pkgproj | 7 ++- .../ref/System.Security.AccessControl.csproj | 3 ++ .../src/Configurations.props | 2 +- .../src/System.Security.AccessControl.csproj | 2 +- .../System.Security.Cryptography.Pkcs.pkgproj | 11 +++-- .../src/Configurations.props | 2 +- .../System.Security.Cryptography.Pkcs.csproj | 2 +- ...ecurity.Cryptography.ProtectedData.pkgproj | 8 +++- .../src/Configurations.props | 2 +- ...Security.Cryptography.ProtectedData.csproj | 2 +- .../System.Security.Cryptography.Xml.pkgproj | 10 +--- .../pkg/System.Security.Permissions.pkgproj | 2 +- .../src/Configurations.props | 3 +- .../src/System.Security.Permissions.csproj | 15 +----- .../System.Security.Principal.Windows.pkgproj | 11 +++-- .../src/Configurations.props | 2 +- .../System.Security.Principal.Windows.csproj | 2 +- ...m.ServiceProcess.ServiceController.pkgproj | 9 +++- .../src/Configurations.props | 2 +- ...em.ServiceProcess.ServiceController.csproj | 2 +- .../System.Text.Encoding.CodePages.pkgproj | 9 +++- .../ref/System.Text.Encoding.CodePages.csproj | 3 -- .../src/Configurations.props | 9 ++-- .../src/System.Text.Encoding.CodePages.csproj | 6 ++- ...s => CodePagesEncodingProvider.Default.cs} | 0 .../System.Threading.AccessControl.pkgproj | 8 +++- .../src/Configurations.props | 2 +- .../src/System.Threading.AccessControl.csproj | 2 +- .../System.Threading.Tasks.Dataflow.pkgproj | 2 + .../System.Threading.Tasks.Extensions.pkgproj | 2 + .../src/Configurations.props | 5 +- .../pkg/System.ValueTuple.pkgproj | 6 +-- .../ref/Configurations.props | 8 ++-- .../src/Configurations.props | 7 ++- 98 files changed, 310 insertions(+), 328 deletions(-) delete mode 100644 src/System.Net.Http.Rtc/pkg/System.Net.Http.Rtc.pkgproj delete mode 100644 src/System.Net.Http/pkg/System.Net.Http.pkgproj delete mode 100644 src/System.Numerics.Vectors.WindowsRuntime/pkg/System.Numerics.Vectors.WindowsRuntime.pkgproj delete mode 100644 src/System.Reflection.Context/pkg/System.Reflection.Context.pkgproj delete mode 100644 src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj delete mode 100644 src/System.Runtime.WindowsRuntime.UI.Xaml/pkg/System.Runtime.WindowsRuntime.UI.Xaml.pkgproj delete mode 100644 src/System.Runtime.WindowsRuntime/pkg/System.Runtime.WindowsRuntime.pkgproj rename src/System.Text.Encoding.CodePages/src/System/Text/{CodePagesEncodingProvider.Unix.cs => CodePagesEncodingProvider.Default.cs} (100%) diff --git a/Packaging.props b/Packaging.props index 4f245d61f121..225ae6f3ea5e 100644 --- a/Packaging.props +++ b/Packaging.props @@ -27,19 +27,10 @@ 4.4.0 true true - - true - - - - .NETFramework,Version=v4.6;.NETFramework,Version=v4.6.1;.NETFramework,Version=v4.6.2;.NETFramework,Version=v4.6.3 - - - + .NETStandard,Version=v1.0;.NETStandard,Version=v1.1;.NETStandard,Version=v1.2 + \ No newline at end of file diff --git a/src/Microsoft.CSharp/ref/Microsoft.CSharp.csproj b/src/Microsoft.CSharp/ref/Microsoft.CSharp.csproj index 7eaebff307ef..90ff226bc350 100644 --- a/src/Microsoft.CSharp/ref/Microsoft.CSharp.csproj +++ b/src/Microsoft.CSharp/ref/Microsoft.CSharp.csproj @@ -2,6 +2,9 @@ + + 4.0.0.0 {1427906B-FF3D-422A-8278-F2B7E89DE12A} diff --git a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj index b9b3573876c8..ab9843d79151 100644 --- a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj +++ b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj @@ -9,6 +9,8 @@ true + + @@ -20,6 +22,10 @@ + + + .NETStandard,Version=v1.1;.NETStandard,Version=v1.2 + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj index 392237d9cc4f..9fa658ba4a5c 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj +++ b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj @@ -3,14 +3,18 @@ - net46;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry.AccessControl/src/Configurations.props b/src/Microsoft.Win32.Registry.AccessControl/src/Configurations.props index 2ae1f7141e4e..4e5de270866a 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/src/Configurations.props +++ b/src/Microsoft.Win32.Registry.AccessControl/src/Configurations.props @@ -3,7 +3,7 @@ netstandard-Windows_NT; - netstandard-Unix; + netstandard; netfx-Windows_NT; diff --git a/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj b/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj index 36edc451d63a..82d01405192f 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj +++ b/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj @@ -5,7 +5,7 @@ Microsoft.Win32.Registry.AccessControl true None - true + true {0E23F29E-6BB0-4B94-A5DA-B5E50601E0F2} diff --git a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj index 78c7715898d5..bf65e590805a 100644 --- a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj +++ b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj @@ -3,14 +3,18 @@ - net461;netcoreapp2.0 + net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry/src/Configurations.props b/src/Microsoft.Win32.Registry/src/Configurations.props index b1bed8d017a7..352e23e9b699 100644 --- a/src/Microsoft.Win32.Registry/src/Configurations.props +++ b/src/Microsoft.Win32.Registry/src/Configurations.props @@ -4,7 +4,8 @@ netcoreapp-Windows_NT; netcoreapp-Unix; - netfx; + netstandard; + netfx-Windows_NT; \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj index c92dc272438a..6cfe52770642 100644 --- a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj +++ b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj @@ -8,6 +8,7 @@ true $(DefineConstants);REGISTRY_ASSEMBLY true + true diff --git a/src/System.Buffers/src/Configurations.props b/src/System.Buffers/src/Configurations.props index 2f6cdc38e2b9..f8eca1e4fade 100644 --- a/src/System.Buffers/src/Configurations.props +++ b/src/System.Buffers/src/Configurations.props @@ -1,9 +1,12 @@  - + netstandard1.1; netstandard; + + + $(PackageConfigurations); netcoreapp-Windows_NT; netcoreapp-Unix; uap-Windows_NT; diff --git a/src/System.Collections.Immutable/pkg/System.Collections.Immutable.pkgproj b/src/System.Collections.Immutable/pkg/System.Collections.Immutable.pkgproj index 1a8a18cda53b..9722c4575a22 100644 --- a/src/System.Collections.Immutable/pkg/System.Collections.Immutable.pkgproj +++ b/src/System.Collections.Immutable/pkg/System.Collections.Immutable.pkgproj @@ -9,6 +9,8 @@ net45;netcore45;netcoreapp1.0;wp8;wpa81;$(AllXamarinFrameworks) + + \ No newline at end of file diff --git a/src/System.Collections.Immutable/src/Configurations.props b/src/System.Collections.Immutable/src/Configurations.props index bc5bbc508ce6..4d2a1e0f0d9f 100644 --- a/src/System.Collections.Immutable/src/Configurations.props +++ b/src/System.Collections.Immutable/src/Configurations.props @@ -1,9 +1,12 @@  - + netstandard1.0; netstandard; + + + $(PackageConfigurations); netcoreapp; uap-Windows_NT; diff --git a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj index 414d17f6a7d3..a41eacd27052 100644 --- a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj +++ b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj @@ -11,6 +11,8 @@ System.ComponentModel.DataAnnotations + + @@ -21,6 +23,10 @@ + + + .NETStandard,Version=v1.1;.NETStandard,Version=v1.2;.NETStandard,Version=v1.3 + \ No newline at end of file diff --git a/src/System.Configuration.ConfigurationManager/pkg/System.Configuration.ConfigurationManager.pkgproj b/src/System.Configuration.ConfigurationManager/pkg/System.Configuration.ConfigurationManager.pkgproj index 96f2dec7ae8c..576f40fbafe7 100644 --- a/src/System.Configuration.ConfigurationManager/pkg/System.Configuration.ConfigurationManager.pkgproj +++ b/src/System.Configuration.ConfigurationManager/pkg/System.Configuration.ConfigurationManager.pkgproj @@ -6,7 +6,6 @@ netcoreapp2.0;net461;$(AllXamarinFrameworks) - \ No newline at end of file diff --git a/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj b/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj index f17fa01fbd1a..8f4e9833b474 100644 --- a/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj +++ b/src/System.Data.SqlClient/pkg/System.Data.SqlClient.pkgproj @@ -8,8 +8,13 @@ - - + + net451;win81;wpa81 + + + net46;netcoreapp1.0 + + diff --git a/src/System.Data.SqlClient/src/Configurations.props b/src/System.Data.SqlClient/src/Configurations.props index cfc57211a43f..e7be0f94c959 100644 --- a/src/System.Data.SqlClient/src/Configurations.props +++ b/src/System.Data.SqlClient/src/Configurations.props @@ -4,6 +4,10 @@ netstandard-Unix; netstandard-Windows_NT; + netstandard1.2; + netstandard1.3; + netstandard; + netfx-Windows_NT; \ No newline at end of file diff --git a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj index 5d8308fc8c2d..4801e2f92a4f 100644 --- a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj +++ b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj @@ -7,13 +7,19 @@ true false + true + true + 4.0.0.0 + 4.1.0.0 - + + + @@ -268,7 +274,7 @@ - + Common\System\Net\ContextFlagsPal.cs @@ -300,7 +306,7 @@ Common\System\Net\NegotiationInfoClass.cs - + @@ -344,19 +350,25 @@ - + + + + + + + + + + - - - @@ -367,11 +379,9 @@ - - @@ -380,6 +390,10 @@ + + + + \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj b/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj index e57500599d89..98fb9b317996 100644 --- a/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj +++ b/src/System.Diagnostics.DiagnosticSource/pkg/System.Diagnostics.DiagnosticSource.pkgproj @@ -9,11 +9,10 @@ net46;net45;netcore45;netcoreapp1.0;wpa81;$(AllXamarinFrameworks) + - - \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/ref/Configurations.props b/src/System.Diagnostics.DiagnosticSource/ref/Configurations.props index fd25a6905c28..a036c05185fb 100644 --- a/src/System.Diagnostics.DiagnosticSource/ref/Configurations.props +++ b/src/System.Diagnostics.DiagnosticSource/ref/Configurations.props @@ -1,12 +1,14 @@  + + netstandard1.0; + net45; + + $(PackageConfigurations); netstandard; - netstandard1.0; netfx; - net46; - net45; \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/ref/System.Diagnostics.DiagnosticSource.csproj b/src/System.Diagnostics.DiagnosticSource/ref/System.Diagnostics.DiagnosticSource.csproj index 31545bb1ce74..130bbaa2b89e 100644 --- a/src/System.Diagnostics.DiagnosticSource/ref/System.Diagnostics.DiagnosticSource.csproj +++ b/src/System.Diagnostics.DiagnosticSource/ref/System.Diagnostics.DiagnosticSource.csproj @@ -4,13 +4,11 @@ {3DF9A5D5-3D4B-4378-9B55-CFA6AC0114D9} - + $(DefineConstants);ALLOW_PARTIALLY_TRUSTED_CALLERS - - @@ -23,7 +21,7 @@ - + diff --git a/src/System.Diagnostics.DiagnosticSource/src/Configurations.props b/src/System.Diagnostics.DiagnosticSource/src/Configurations.props index e2ae8d98df0d..d3defdbabc01 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/Configurations.props +++ b/src/System.Diagnostics.DiagnosticSource/src/Configurations.props @@ -2,16 +2,17 @@ + netstandard1.1; netstandard1.3; - netstandard; - netcoreapp; - net45-Windows_NT; + net45-Windows_NT; net46-Windows_NT; - netfx-Windows_NT; - + - uap-Windows_NT; $(PackageConfigurations); + netcoreapp; + netstandard; + netfx-Windows_NT; + uap-Windows_NT; \ No newline at end of file diff --git a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj index bdd4508fd82e..237f37b3e341 100644 --- a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj +++ b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj @@ -3,14 +3,18 @@ - net46;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.IO.FileSystem.AccessControl/src/Configurations.props b/src/System.IO.FileSystem.AccessControl/src/Configurations.props index 8a64201e92ab..7de94fe53349 100644 --- a/src/System.IO.FileSystem.AccessControl/src/Configurations.props +++ b/src/System.IO.FileSystem.AccessControl/src/Configurations.props @@ -5,6 +5,7 @@ netfx-Windows_NT; netcoreapp-Windows_NT; netcoreapp-Unix; + netstandard; \ No newline at end of file diff --git a/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj b/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj index 544f9670ee7c..9fbe1fb47398 100644 --- a/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj +++ b/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj @@ -8,8 +8,8 @@ System.IO.FileSystem.AccessControl {D77FBA6C-1AA6-45A4-93E2-97A370672C53} true - true true + true diff --git a/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj b/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj index 9d8579fe7cf8..fe55a2b7efa5 100644 --- a/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj +++ b/src/System.IO.Packaging/pkg/System.IO.Packaging.pkgproj @@ -6,7 +6,6 @@ net46;netcore50;netcoreapp1.0;$(AllXamarinFrameworks) - \ No newline at end of file diff --git a/src/System.IO.Packaging/ref/Configurations.props b/src/System.IO.Packaging/ref/Configurations.props index b2db63711061..76a421309768 100644 --- a/src/System.IO.Packaging/ref/Configurations.props +++ b/src/System.IO.Packaging/ref/Configurations.props @@ -1,8 +1,11 @@  - + netstandard1.3; + + + $(PackageConfigurations); netstandard; diff --git a/src/System.IO.Packaging/src/Configurations.props b/src/System.IO.Packaging/src/Configurations.props index aa82044b87b2..965f87ee8860 100644 --- a/src/System.IO.Packaging/src/Configurations.props +++ b/src/System.IO.Packaging/src/Configurations.props @@ -1,9 +1,13 @@  + + net46; + netstandard1.3; + + $(PackageConfigurations); netfx-Windows_NT; - netstandard1.3; netstandard; diff --git a/src/System.IO.Packaging/src/System.IO.Packaging.csproj b/src/System.IO.Packaging/src/System.IO.Packaging.csproj index 4163735aac50..6c7325d53857 100644 --- a/src/System.IO.Packaging/src/System.IO.Packaging.csproj +++ b/src/System.IO.Packaging/src/System.IO.Packaging.csproj @@ -6,7 +6,9 @@ System.IO.Packaging System.IO.Packaging true - true + true + + netstandard2.0;uap10.1 @@ -15,6 +17,9 @@ + + + @@ -58,7 +63,7 @@ - + diff --git a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj index 0d3e75cab133..0a45dc0e8d8e 100644 --- a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj +++ b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj @@ -3,14 +3,18 @@ - net46;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.IO.Pipes.AccessControl/src/Configurations.props b/src/System.IO.Pipes.AccessControl/src/Configurations.props index d2be159867b2..353d21cf4a15 100644 --- a/src/System.IO.Pipes.AccessControl/src/Configurations.props +++ b/src/System.IO.Pipes.AccessControl/src/Configurations.props @@ -4,7 +4,7 @@ netfx-Windows_NT; netstandard-Windows_NT; - netstandard-Unix; + netstandard; \ No newline at end of file diff --git a/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj b/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj index 440b99f42b4c..58886bf2f4c2 100644 --- a/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj +++ b/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj @@ -5,7 +5,7 @@ System.IO.Pipes.AccessControl {40059634-BB03-4A6F-8657-CCE2D376BC8B} true - true + true true diff --git a/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj b/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj index 7e54ed7fb47e..ee8ccbd1fa08 100644 --- a/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj +++ b/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj @@ -3,7 +3,7 @@ - net461;netcoreapp2.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) diff --git a/src/System.IO.Ports/src/Configurations.props b/src/System.IO.Ports/src/Configurations.props index fe9ca62f0a38..1e18dd02c083 100644 --- a/src/System.IO.Ports/src/Configurations.props +++ b/src/System.IO.Ports/src/Configurations.props @@ -3,6 +3,7 @@ netstandard-Windows_NT; + netstandard; netfx; diff --git a/src/System.IO.Ports/src/System.IO.Ports.csproj b/src/System.IO.Ports/src/System.IO.Ports.csproj index 924751734bd6..b3ea14856f6d 100644 --- a/src/System.IO.Ports/src/System.IO.Ports.csproj +++ b/src/System.IO.Ports/src/System.IO.Ports.csproj @@ -5,13 +5,14 @@ true {187503F4-BEF9-4369-A1B2-E3DC5D564E4E} true + true - + diff --git a/src/System.Net.Http.Rtc/pkg/System.Net.Http.Rtc.pkgproj b/src/System.Net.Http.Rtc/pkg/System.Net.Http.Rtc.pkgproj deleted file mode 100644 index 86113a1c046d..000000000000 --- a/src/System.Net.Http.Rtc/pkg/System.Net.Http.Rtc.pkgproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - netcore45 - - - - - - \ No newline at end of file diff --git a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj index 4aa9257cbe65..35acc01735a8 100644 --- a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj +++ b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj @@ -3,14 +3,18 @@ - net46;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.Net.Http.WinHttpHandler/src/Configurations.props b/src/System.Net.Http.WinHttpHandler/src/Configurations.props index 2ae1f7141e4e..4e5de270866a 100644 --- a/src/System.Net.Http.WinHttpHandler/src/Configurations.props +++ b/src/System.Net.Http.WinHttpHandler/src/Configurations.props @@ -3,7 +3,7 @@ netstandard-Windows_NT; - netstandard-Unix; + netstandard; netfx-Windows_NT; diff --git a/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj b/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj index 94d827f99e38..3064b2e5d86d 100644 --- a/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj +++ b/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj @@ -6,7 +6,7 @@ {F75E3008-0562-42DF-BE72-C1384F12157E} Library System.Net.Http.WinHttpHandler - true + true false diff --git a/src/System.Net.Http/pkg/System.Net.Http.pkgproj b/src/System.Net.Http/pkg/System.Net.Http.pkgproj deleted file mode 100644 index 3250fac03517..000000000000 --- a/src/System.Net.Http/pkg/System.Net.Http.pkgproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) - - - - - - - - - - true - - - true - - - true - - - - - - true - - - true - - - true - - - true - - - - .NETFramework,Version=v4.6;.NETFramework,Version=v4.6.1;.NETFramework,Version=v4.6.2 - - - - - \ No newline at end of file diff --git a/src/System.Numerics.Vectors.WindowsRuntime/pkg/System.Numerics.Vectors.WindowsRuntime.pkgproj b/src/System.Numerics.Vectors.WindowsRuntime/pkg/System.Numerics.Vectors.WindowsRuntime.pkgproj deleted file mode 100644 index ace6e4bfed95..000000000000 --- a/src/System.Numerics.Vectors.WindowsRuntime/pkg/System.Numerics.Vectors.WindowsRuntime.pkgproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - uap10.0 - - - - - - UAP,Version=v10.1;UAP,Version=v10.0 - - - - \ No newline at end of file diff --git a/src/System.Numerics.Vectors/pkg/System.Numerics.Vectors.pkgproj b/src/System.Numerics.Vectors/pkg/System.Numerics.Vectors.pkgproj index 5dd67f0b55b7..b7c8ef8f2f68 100644 --- a/src/System.Numerics.Vectors/pkg/System.Numerics.Vectors.pkgproj +++ b/src/System.Numerics.Vectors/pkg/System.Numerics.Vectors.pkgproj @@ -15,8 +15,8 @@ - + diff --git a/src/System.Reflection.Context/pkg/System.Reflection.Context.pkgproj b/src/System.Reflection.Context/pkg/System.Reflection.Context.pkgproj deleted file mode 100644 index dee4344893e2..000000000000 --- a/src/System.Reflection.Context/pkg/System.Reflection.Context.pkgproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - net45;netcore45;wpa81;netcoreapp1.0;$(AllXamarinFrameworks) - - - - - - - - \ No newline at end of file diff --git a/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj b/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj index 97c5f909c1f3..5927e310e64e 100644 --- a/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj +++ b/src/System.Reflection.DispatchProxy/pkg/System.Reflection.DispatchProxy.pkgproj @@ -3,7 +3,7 @@ - net46;netcore50;netcoreapp1.0;$(AllXamarinFrameworks) + net461;netcoreapp2.0;$(AllXamarinFrameworks) true @@ -13,6 +13,11 @@ + + + + runtimes/aot/lib/uap10.1 + diff --git a/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj b/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj index bf4f42634f2e..b56924911e95 100644 --- a/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj +++ b/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj @@ -3,13 +3,11 @@ {7DF3C428-AAD6-41C7-98E6-6CACFD5C391E} - - netstandard2.0;uap10.1 + netstandard2.0 - diff --git a/src/System.Reflection.DispatchProxy/src/Configurations.props b/src/System.Reflection.DispatchProxy/src/Configurations.props index 39b1ecfe04e9..21451037adde 100644 --- a/src/System.Reflection.DispatchProxy/src/Configurations.props +++ b/src/System.Reflection.DispatchProxy/src/Configurations.props @@ -1,11 +1,15 @@  + + netfx-Windows_NT; + netstandard; + + $(PackageConfigurations); uapaot-Windows_NT; netcoreapp; uap-Windows_NT; - netfx-Windows_NT; diff --git a/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj b/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj index 3c8a0d706cc0..c1f26d2d0d13 100644 --- a/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj +++ b/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj @@ -6,6 +6,8 @@ System.Reflection.DispatchProxy true true + + true None @@ -16,7 +18,7 @@ - + @@ -29,7 +31,7 @@ - + diff --git a/src/System.Reflection.Metadata/pkg/System.Reflection.Metadata.pkgproj b/src/System.Reflection.Metadata/pkg/System.Reflection.Metadata.pkgproj index e28143c8eccf..1706b9863190 100644 --- a/src/System.Reflection.Metadata/pkg/System.Reflection.Metadata.pkgproj +++ b/src/System.Reflection.Metadata/pkg/System.Reflection.Metadata.pkgproj @@ -13,6 +13,8 @@ portable-net45+win8 1.1.37 + + \ No newline at end of file diff --git a/src/System.Reflection.Metadata/src/Configurations.props b/src/System.Reflection.Metadata/src/Configurations.props index d2f9db54a1fb..e9089f9d85c9 100644 --- a/src/System.Reflection.Metadata/src/Configurations.props +++ b/src/System.Reflection.Metadata/src/Configurations.props @@ -1,9 +1,12 @@  - + netstandard1.1; netstandard; + + + $(PackageConfigurations); netcoreapp; uap-Windows_NT; diff --git a/src/System.Reflection.TypeExtensions/dir.props b/src/System.Reflection.TypeExtensions/dir.props index 03a7c0ac08a4..0176a546c2c1 100644 --- a/src/System.Reflection.TypeExtensions/dir.props +++ b/src/System.Reflection.TypeExtensions/dir.props @@ -5,7 +5,6 @@ 4.1.2.0 MSFT true - true true diff --git a/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj b/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj index 2b6333bf0937..445004a8972d 100644 --- a/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj +++ b/src/System.Reflection.TypeExtensions/pkg/System.Reflection.TypeExtensions.pkgproj @@ -9,19 +9,24 @@ - + + + + lib/netcoreapp1.0 + + + + + runtimes/aot/lib/uap10.1 + - - diff --git a/src/System.Reflection.TypeExtensions/src/Configurations.props b/src/System.Reflection.TypeExtensions/src/Configurations.props index 5136192b6d85..b85caf75a982 100644 --- a/src/System.Reflection.TypeExtensions/src/Configurations.props +++ b/src/System.Reflection.TypeExtensions/src/Configurations.props @@ -2,15 +2,17 @@ - net461-Windows_NT; + netfx-Windows_NT; + netstandard; + netstandard1.3; + netstandard1.5; + + + $(PackageConfigurations); netcoreapp-Windows_NT; netcoreapp-Unix; uap-Windows_NT; uapaot-Windows_NT; - - - $(PackageConfigurations); - netfx-Windows_NT; diff --git a/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj b/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj index 58e456d5b6e9..3dc1cb5dc65f 100644 --- a/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj +++ b/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj @@ -6,6 +6,12 @@ true {A9EF5E88-1AD9-4545-8AFE-CA0F5F00E2CB} + + true + true + 4.0.0.0 + 4.1.0.0 + @@ -19,13 +25,18 @@ - + - + + + + + + \ No newline at end of file diff --git a/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj b/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj deleted file mode 100644 index 96143a0748ea..000000000000 --- a/src/System.Runtime.InteropServices.RuntimeInformation/pkg/System.Runtime.InteropServices.RuntimeInformation.pkgproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - net45;netcore45;wpa81;netcoreapp1.0;$(AllXamarinFrameworks) - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/pkg/System.Runtime.WindowsRuntime.UI.Xaml.pkgproj b/src/System.Runtime.WindowsRuntime.UI.Xaml/pkg/System.Runtime.WindowsRuntime.UI.Xaml.pkgproj deleted file mode 100644 index b5315bfc5551..000000000000 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/pkg/System.Runtime.WindowsRuntime.UI.Xaml.pkgproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - netcore45;wpa81 - - - - - - - - - - - .NETCoreApp,Version=v1.1/win10-arm64;.NETCoreApp,Version=v2.0/win10-arm64 - - - - \ No newline at end of file diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/Configurations.props b/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/Configurations.props index c70175586371..dda77b52b94e 100644 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/Configurations.props +++ b/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/Configurations.props @@ -2,7 +2,6 @@ - netcoreapp; uap; diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/src/Configurations.props b/src/System.Runtime.WindowsRuntime.UI.Xaml/src/Configurations.props index b95446cea624..1111c322a148 100644 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/src/Configurations.props +++ b/src/System.Runtime.WindowsRuntime.UI.Xaml/src/Configurations.props @@ -2,7 +2,6 @@ - netcoreapp; uap-Windows_NT; diff --git a/src/System.Runtime.WindowsRuntime/pkg/System.Runtime.WindowsRuntime.pkgproj b/src/System.Runtime.WindowsRuntime/pkg/System.Runtime.WindowsRuntime.pkgproj deleted file mode 100644 index 5c0081eb72cb..000000000000 --- a/src/System.Runtime.WindowsRuntime/pkg/System.Runtime.WindowsRuntime.pkgproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - netcore451;wpa81 - - - - - - - - - - - - .NETCoreApp,Version=v1.1/win10-arm64;.NETCoreApp,Version=v2.0/win10-arm64 - - - - - - - \ No newline at end of file diff --git a/src/System.Runtime.WindowsRuntime/ref/Configurations.props b/src/System.Runtime.WindowsRuntime/ref/Configurations.props index c70175586371..dda77b52b94e 100644 --- a/src/System.Runtime.WindowsRuntime/ref/Configurations.props +++ b/src/System.Runtime.WindowsRuntime/ref/Configurations.props @@ -2,7 +2,6 @@ - netcoreapp; uap; diff --git a/src/System.Runtime.WindowsRuntime/src/Configurations.props b/src/System.Runtime.WindowsRuntime/src/Configurations.props index dc9cda8cdacf..52594b0d52a8 100644 --- a/src/System.Runtime.WindowsRuntime/src/Configurations.props +++ b/src/System.Runtime.WindowsRuntime/src/Configurations.props @@ -2,7 +2,6 @@ - netcoreapp-Windows_NT; uap-Windows_NT; uapaot-Windows_NT; diff --git a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj index 911ba3198d3f..399b7e9fc06f 100644 --- a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj +++ b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj @@ -3,14 +3,17 @@ - net461;netcoreapp2.0 + net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) win - + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.Security.AccessControl/ref/System.Security.AccessControl.csproj b/src/System.Security.AccessControl/ref/System.Security.AccessControl.csproj index 737c31bdb138..9e430cb0403e 100644 --- a/src/System.Security.AccessControl/ref/System.Security.AccessControl.csproj +++ b/src/System.Security.AccessControl/ref/System.Security.AccessControl.csproj @@ -3,6 +3,8 @@ {F80C478C-48EE-46A5-89C4-EE0CFB23A14F} + + netstandard2.0;uap10.1 @@ -10,6 +12,7 @@ + diff --git a/src/System.Security.AccessControl/src/Configurations.props b/src/System.Security.AccessControl/src/Configurations.props index 7bc33ef25103..8aab837191d0 100644 --- a/src/System.Security.AccessControl/src/Configurations.props +++ b/src/System.Security.AccessControl/src/Configurations.props @@ -4,7 +4,7 @@ netfx-Windows_NT; netcoreapp-Windows_NT; - netcoreapp-Unix; + netstandard; uap-Windows_NT; diff --git a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj index c2173851edea..41ab7367f279 100644 --- a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj +++ b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj @@ -5,7 +5,7 @@ System.Security.AccessControl true true - true + true {D27FFA1F-B446-4D24-B60A-1F88385CDB6D} diff --git a/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj b/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj index de9e5dab7a9c..1c19fba71a49 100644 --- a/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj +++ b/src/System.Security.Cryptography.Pkcs/pkg/System.Security.Cryptography.Pkcs.pkgproj @@ -3,15 +3,16 @@ - net46;netcore50;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) - <_xamarinFrameworks Include="$(AllXamarinFrameworks)" /> - - - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.Security.Cryptography.Pkcs/src/Configurations.props b/src/System.Security.Cryptography.Pkcs/src/Configurations.props index 2ae1f7141e4e..4e5de270866a 100644 --- a/src/System.Security.Cryptography.Pkcs/src/Configurations.props +++ b/src/System.Security.Cryptography.Pkcs/src/Configurations.props @@ -3,7 +3,7 @@ netstandard-Windows_NT; - netstandard-Unix; + netstandard; netfx-Windows_NT; diff --git a/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj b/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj index 60d1fad48d68..5ea900e9ed52 100644 --- a/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj +++ b/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj @@ -7,7 +7,7 @@ true true None - true + true true + lib/netstandard1.3 + diff --git a/src/System.Security.Cryptography.ProtectedData/src/Configurations.props b/src/System.Security.Cryptography.ProtectedData/src/Configurations.props index d2be159867b2..353d21cf4a15 100644 --- a/src/System.Security.Cryptography.ProtectedData/src/Configurations.props +++ b/src/System.Security.Cryptography.ProtectedData/src/Configurations.props @@ -4,7 +4,7 @@ netfx-Windows_NT; netstandard-Windows_NT; - netstandard-Unix; + netstandard; \ No newline at end of file diff --git a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj index 486bf2c642ef..070f91ea259b 100644 --- a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj +++ b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj @@ -10,7 +10,7 @@ true true None - true + true diff --git a/src/System.Security.Cryptography.Xml/pkg/System.Security.Cryptography.Xml.pkgproj b/src/System.Security.Cryptography.Xml/pkg/System.Security.Cryptography.Xml.pkgproj index c76121473e88..be39b38842d7 100644 --- a/src/System.Security.Cryptography.Xml/pkg/System.Security.Cryptography.Xml.pkgproj +++ b/src/System.Security.Cryptography.Xml/pkg/System.Security.Cryptography.Xml.pkgproj @@ -3,17 +3,9 @@ - net461;netcoreapp2.0;$(AllXamarinFrameworks) + netcoreapp2.0;uap10.1 - - - - - - - - \ No newline at end of file diff --git a/src/System.Security.Permissions/pkg/System.Security.Permissions.pkgproj b/src/System.Security.Permissions/pkg/System.Security.Permissions.pkgproj index a3292d972d8d..1b214007160c 100644 --- a/src/System.Security.Permissions/pkg/System.Security.Permissions.pkgproj +++ b/src/System.Security.Permissions/pkg/System.Security.Permissions.pkgproj @@ -3,7 +3,7 @@ - netcoreapp2.0;net461;uap10.1;$(AllXamarinFrameworks) + netcoreapp2.0;net461;$(AllXamarinFrameworks) diff --git a/src/System.Security.Permissions/src/Configurations.props b/src/System.Security.Permissions/src/Configurations.props index 7bb274d864fa..b0ac95a35169 100644 --- a/src/System.Security.Permissions/src/Configurations.props +++ b/src/System.Security.Permissions/src/Configurations.props @@ -3,8 +3,7 @@ netfx-Windows_NT; - uap-Windows_NT; - netcoreapp; + netstandard; \ No newline at end of file diff --git a/src/System.Security.Permissions/src/System.Security.Permissions.csproj b/src/System.Security.Permissions/src/System.Security.Permissions.csproj index 526d369855e5..5f278377dce0 100644 --- a/src/System.Security.Permissions/src/System.Security.Permissions.csproj +++ b/src/System.Security.Permissions/src/System.Security.Permissions.csproj @@ -15,7 +15,7 @@ - + @@ -121,20 +121,9 @@ - - - - - - - - - - - - + diff --git a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj index 80d9b072d13e..4aed00e0a19e 100644 --- a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj +++ b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj @@ -3,17 +3,18 @@ - net461;netcoreapp2.0 + net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) - - .NETCoreApp,Version=v1.1;.NETCoreApp,Version=v2.0 - - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.Security.Principal.Windows/src/Configurations.props b/src/System.Security.Principal.Windows/src/Configurations.props index 82e340ed9ce1..a002afec7ab1 100644 --- a/src/System.Security.Principal.Windows/src/Configurations.props +++ b/src/System.Security.Principal.Windows/src/Configurations.props @@ -4,7 +4,7 @@ uap-Windows_NT; netcoreapp-Windows_NT; - netcoreapp-Unix; + netstandard; netfx-Windows_NT; diff --git a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj index 5a89966d618d..8aa620e8f01d 100644 --- a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj +++ b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj @@ -7,7 +7,7 @@ true true None - true + true diff --git a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj index 4e1b558590d7..6cce67c27bd8 100644 --- a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj +++ b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj @@ -3,14 +3,19 @@ - net461;netcoreapp2.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + + lib/netstandard1.4 + \ No newline at end of file diff --git a/src/System.ServiceProcess.ServiceController/src/Configurations.props b/src/System.ServiceProcess.ServiceController/src/Configurations.props index 2ae1f7141e4e..4e5de270866a 100644 --- a/src/System.ServiceProcess.ServiceController/src/Configurations.props +++ b/src/System.ServiceProcess.ServiceController/src/Configurations.props @@ -3,7 +3,7 @@ netstandard-Windows_NT; - netstandard-Unix; + netstandard; netfx-Windows_NT; diff --git a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj index 4e0b11f0850b..65c3ec80cdb3 100644 --- a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj +++ b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj @@ -8,7 +8,7 @@ {F4821CB6-91A3-4546-BC4F-E00DBFBDAA05} true None - true + true false diff --git a/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj b/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj index 5293871e790c..fe4d339d2918 100644 --- a/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj +++ b/src/System.Text.Encoding.CodePages/pkg/System.Text.Encoding.CodePages.pkgproj @@ -7,9 +7,16 @@ - + + + + lib/netstandard1.3 + + + win + diff --git a/src/System.Text.Encoding.CodePages/ref/System.Text.Encoding.CodePages.csproj b/src/System.Text.Encoding.CodePages/ref/System.Text.Encoding.CodePages.csproj index 49b002e28ca4..8856a097c0ee 100644 --- a/src/System.Text.Encoding.CodePages/ref/System.Text.Encoding.CodePages.csproj +++ b/src/System.Text.Encoding.CodePages/ref/System.Text.Encoding.CodePages.csproj @@ -3,13 +3,10 @@ {73FAB2B8-589D-4BEA-ADCA-E5CC02296F25} - - netstandard2.0;uap10.1 - diff --git a/src/System.Text.Encoding.CodePages/src/Configurations.props b/src/System.Text.Encoding.CodePages/src/Configurations.props index 7c72a3e7b53c..8dcacd78b117 100644 --- a/src/System.Text.Encoding.CodePages/src/Configurations.props +++ b/src/System.Text.Encoding.CodePages/src/Configurations.props @@ -1,11 +1,14 @@  - - netcoreapp-Unix; + + netstandard; netcoreapp-Windows_NT; - uap-Windows_NT; netstandard-Windows_NT; + + + $(PackageConfigurations); + uap-Windows_NT; \ No newline at end of file diff --git a/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj b/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj index 31e257f6f76c..730e1af1768d 100644 --- a/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj +++ b/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj @@ -7,6 +7,8 @@ System.Text.Encoding.CodePages System.Text.Encoding.CodePages true + + netstandard2.0;net461 @@ -51,8 +53,8 @@ Common\Interop\Windows\Interop.GetCPInfoEx.cs - - + + diff --git a/src/System.Text.Encoding.CodePages/src/System/Text/CodePagesEncodingProvider.Unix.cs b/src/System.Text.Encoding.CodePages/src/System/Text/CodePagesEncodingProvider.Default.cs similarity index 100% rename from src/System.Text.Encoding.CodePages/src/System/Text/CodePagesEncodingProvider.Unix.cs rename to src/System.Text.Encoding.CodePages/src/System/Text/CodePagesEncodingProvider.Default.cs diff --git a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj index b1b2d5e2e5cb..0f3e73ba657c 100644 --- a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj +++ b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj @@ -3,14 +3,18 @@ - net46;netcoreapp1.0 + net461;netcoreapp2.0;$(AllXamarinFrameworks) win - + + + + lib/netstandard1.3 + \ No newline at end of file diff --git a/src/System.Threading.AccessControl/src/Configurations.props b/src/System.Threading.AccessControl/src/Configurations.props index d2be159867b2..353d21cf4a15 100644 --- a/src/System.Threading.AccessControl/src/Configurations.props +++ b/src/System.Threading.AccessControl/src/Configurations.props @@ -4,7 +4,7 @@ netfx-Windows_NT; netstandard-Windows_NT; - netstandard-Unix; + netstandard; \ No newline at end of file diff --git a/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj b/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj index 6cdd163eb230..c3bc11d93a66 100644 --- a/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj +++ b/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj @@ -7,7 +7,7 @@ System.Threading.AccessControl {E3ED83FD-3015-4BD8-A1B8-6294986E6CFA} - true + true true diff --git a/src/System.Threading.Tasks.Dataflow/pkg/System.Threading.Tasks.Dataflow.pkgproj b/src/System.Threading.Tasks.Dataflow/pkg/System.Threading.Tasks.Dataflow.pkgproj index 572e618084d8..32121a8d742a 100644 --- a/src/System.Threading.Tasks.Dataflow/pkg/System.Threading.Tasks.Dataflow.pkgproj +++ b/src/System.Threading.Tasks.Dataflow/pkg/System.Threading.Tasks.Dataflow.pkgproj @@ -9,6 +9,8 @@ net45;netcore45;wp8;wpa81;netcoreapp1.0;$(AllXamarinFrameworks) + + \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj b/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj index 695177e1f4e9..fdc93b382d90 100644 --- a/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj +++ b/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj @@ -13,6 +13,8 @@ + + \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/src/Configurations.props b/src/System.Threading.Tasks.Extensions/src/Configurations.props index bc5bbc508ce6..4d2a1e0f0d9f 100644 --- a/src/System.Threading.Tasks.Extensions/src/Configurations.props +++ b/src/System.Threading.Tasks.Extensions/src/Configurations.props @@ -1,9 +1,12 @@  - + netstandard1.0; netstandard; + + + $(PackageConfigurations); netcoreapp; uap-Windows_NT; diff --git a/src/System.ValueTuple/pkg/System.ValueTuple.pkgproj b/src/System.ValueTuple/pkg/System.ValueTuple.pkgproj index d475bdc30649..7230c7b826f1 100644 --- a/src/System.ValueTuple/pkg/System.ValueTuple.pkgproj +++ b/src/System.ValueTuple/pkg/System.ValueTuple.pkgproj @@ -6,11 +6,9 @@ net45;netcore45;netcoreapp1.0;wp8;wpa81;$(AllXamarinFrameworks) + + - - - - \ No newline at end of file diff --git a/src/System.ValueTuple/ref/Configurations.props b/src/System.ValueTuple/ref/Configurations.props index 68997ae3f76b..e67ba19adf50 100644 --- a/src/System.ValueTuple/ref/Configurations.props +++ b/src/System.ValueTuple/ref/Configurations.props @@ -1,12 +1,14 @@  + + portable_net40+sl4+win8+wp8; + netfx; + + $(PackageConfigurations); netcoreapp; uap; - netfx; - portable_net40+sl4+win8+wp8; - netfx; \ No newline at end of file diff --git a/src/System.ValueTuple/src/Configurations.props b/src/System.ValueTuple/src/Configurations.props index f1260522e4e7..2dd59f63f9c5 100644 --- a/src/System.ValueTuple/src/Configurations.props +++ b/src/System.ValueTuple/src/Configurations.props @@ -1,11 +1,14 @@  - + portable_net40+sl4+win8+wp8; netstandard1.0; - netcoreapp; netfx; + + + $(PackageConfigurations); + netcoreapp; uap-Windows_NT; From 1ce8e1c823d6a69bae9a933de550a80d8757b9f6 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 12:05:22 -0700 Subject: [PATCH 151/336] Fix warnings during -allConfigurations build --- external/test-runtime/XUnit.Runtime.depproj | 4 +- .../src/System.Data.Common.csproj | 4 +- .../src/System.Data.Odbc.csproj | 2 +- .../src/System.Security.AccessControl.csproj | 4 +- .../System.Security.Cryptography.Cng.csproj | 2 +- ...Security.Cryptography.ProtectedData.csproj | 2 +- .../System.Security.Principal.Windows.csproj | 2 +- ...em.ServiceProcess.ServiceController.csproj | 2 +- .../ApiCompatBaseline.netfx.netstandard20.txt | 478 +++++++++++++++++- 9 files changed, 476 insertions(+), 24 deletions(-) diff --git a/external/test-runtime/XUnit.Runtime.depproj b/external/test-runtime/XUnit.Runtime.depproj index a0a7745a41b0..f98a156a0967 100644 --- a/external/test-runtime/XUnit.Runtime.depproj +++ b/external/test-runtime/XUnit.Runtime.depproj @@ -113,7 +113,7 @@ - + @@ -145,7 +145,7 @@ $(TestILCFolder.Replace('/', '\')) - + diff --git a/src/System.Data.Common/src/System.Data.Common.csproj b/src/System.Data.Common/src/System.Data.Common.csproj index 378d72511c94..d8dd33cd8b9f 100644 --- a/src/System.Data.Common/src/System.Data.Common.csproj +++ b/src/System.Data.Common/src/System.Data.Common.csproj @@ -285,9 +285,6 @@ - - - @@ -310,6 +307,7 @@ + diff --git a/src/System.Data.Odbc/src/System.Data.Odbc.csproj b/src/System.Data.Odbc/src/System.Data.Odbc.csproj index 6a8afa0298c2..6aaa443ff333 100644 --- a/src/System.Data.Odbc/src/System.Data.Odbc.csproj +++ b/src/System.Data.Odbc/src/System.Data.Odbc.csproj @@ -117,7 +117,7 @@ - + diff --git a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj index 41ab7367f279..38e9e1acca00 100644 --- a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj +++ b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj @@ -119,6 +119,9 @@ + + + @@ -127,7 +130,6 @@ - diff --git a/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj b/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj index 75fb578fe5b8..6c948eb33e5e 100644 --- a/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj +++ b/src/System.Security.Cryptography.Cng/src/System.Security.Cryptography.Cng.csproj @@ -259,7 +259,7 @@ - + diff --git a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj index 070f91ea259b..fac1000d02f2 100644 --- a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj +++ b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj @@ -50,7 +50,7 @@ - + diff --git a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj index 8aa620e8f01d..3e6f40af8d31 100644 --- a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj +++ b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj @@ -184,7 +184,7 @@ - + diff --git a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj index 65c3ec80cdb3..b19597cd77e7 100644 --- a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj +++ b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj @@ -79,7 +79,7 @@ - + diff --git a/src/shims/ApiCompatBaseline.netfx.netstandard20.txt b/src/shims/ApiCompatBaseline.netfx.netstandard20.txt index b2fa58849fda..648c80c3e11f 100644 --- a/src/shims/ApiCompatBaseline.netfx.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.netfx.netstandard20.txt @@ -1,5 +1,46 @@ -ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Reflection.TypeExtensions'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'Microsoft.Win32.Primitives'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.AppContext'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Collections.NonGeneric'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Collections.Specialized'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.Primitives'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.ComponentModel.TypeConverter'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Console'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.FileVersionInfo'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.Process'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TextWriterTraceListener'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Diagnostics.TraceSource'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Drawing.Primitives'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Globalization.Calendars'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.Compression.ZipFile'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.DriveInfo'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Primitives'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.Watcher'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.IsolatedStorage'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.MemoryMappedFiles'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.Pipes'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.UnmanagedMemoryStream'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Net.NameResolution'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Net.Ping'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Net.Security'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets.Client'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Net.WebSockets'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Resources.Reader'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Resources.Writer'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Runtime.CompilerServices.VisualC'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Runtime.Serialization.Formatters'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Claims'. ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Cng'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Csp'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Encoding'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.Primitives'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Security.Cryptography.X509Certificates'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Threading.Thread'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Threading.ThreadPool'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Xml.XmlDocument'. +ApiCompat Error: 0 : Failed to find or load matching assembly 'System.Xml.XPath'. +Compat issues with assembly Microsoft.Win32.Primitives: +TypesMustExist : Type 'System.ComponentModel.Win32Exception' does not exist in the implementation but it does exist in the contract. Compat issues with assembly mscorlib: MembersMustExist : Member 'System.AppContext.GetData(System.String)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.AppContext.TargetFrameworkName.get()' does not exist in the implementation but it does exist in the contract. @@ -33,8 +74,120 @@ MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.set(Sys MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.AppContext: -MembersMustExist : Member 'System.AppContext.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppContext.TargetFrameworkName.get()' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections.NonGeneric: +TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Collections.Specialized: +TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.Primitives: +TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.ComponentModel.TypeConverter: +TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Console: +TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Core: MembersMustExist : Member 'System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Linq.Enumerable.Prepend(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. @@ -46,17 +199,171 @@ MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportExplicitPara MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.FileVersionInfo: +TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.Process: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.TextWriterTraceListener: +TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Diagnostics.TraceSource: +TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Diagnostics.Tracing: MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.add_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.remove_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Drawing.Primitives: +TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Globalization.Calendars: +TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.IO: TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Compression.ZipFile: +TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.DriveInfo: +TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.Primitives: +TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.FileSystem.Watcher: +TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.IsolatedStorage: +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.MemoryMappedFiles: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.Pipes: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.IO.UnmanagedMemoryStream: +TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Linq: MembersMustExist : Member 'System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Linq.Enumerable.Prepend(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Linq.Expressions: MembersMustExist : Member 'System.Linq.Expressions.Expression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.NameResolution: +TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Ping: +TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.Security: +TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.WebSockets: +TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Net.WebSockets.Client: +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Reflection: TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. @@ -66,15 +373,43 @@ TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the impl TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection.TypeExtensions: -TypesMustExist : Type 'System.Reflection.AssemblyExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.EventInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MethodInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ModuleExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.PropertyInfoExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeExtensions' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Resources.Reader: +TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Resources.Writer: +TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.CompilerServices.VisualC: +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Runtime.Serialization.Formatters: +TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Claims: +TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Security.Cryptography.Algorithms: TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. @@ -111,6 +446,74 @@ TypesMustExist : Type 'System.Security.Cryptography.DSACng' does not exist in th TypesMustExist : Type 'System.Security.Cryptography.ECDsaCng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RSACng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.TripleDESCng' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Csp: +TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Encoding: +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.Primitives: +TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Security.Cryptography.X509Certificates: +TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Text.RegularExpressions: MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. @@ -118,4 +521,53 @@ MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.get()' does MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -Total Issues: 104 +Compat issues with assembly System.Threading.Thread: +TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Threading.ThreadPool: +TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XmlDocument: +TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. +Compat issues with assembly System.Xml.XPath: +TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. +Total Issues: 479 From e15f244ad68b70444ad77889e5f92043d245bcdb Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 12:14:25 -0700 Subject: [PATCH 152/336] Update project configurations --- ...rosoft.Win32.Registry.AccessControl.csproj | 14 +++++----- .../src/Microsoft.Win32.Registry.csproj | 6 +++-- .../src/System.Data.SqlClient.csproj | 8 ++++++ ...System.Diagnostics.DiagnosticSource.csproj | 6 +++-- .../System.Diagnostics.FileVersionInfo.sln | 8 +++--- ...m.Diagnostics.FileVersionInfo.Tests.csproj | 6 +++-- .../System.IO.FileSystem.AccessControl.csproj | 18 +++++++------ .../System.IO.FileSystem.DriveInfo.sln | 8 +++--- ...ystem.IO.FileSystem.DriveInfo.Tests.csproj | 12 +++++---- .../System.IO.FileSystem.sln | 8 +++--- ...tem.IO.FileSystem.Performance.Tests.csproj | 6 ++--- .../src/System.IO.Packaging.csproj | 2 ++ .../src/System.IO.Pipes.AccessControl.csproj | 12 ++++----- src/System.IO.Pipes/System.IO.Pipes.sln | 8 +++--- .../System.IO.Pipes.Performance.Tests.csproj | 4 +-- .../src/System.IO.Ports.csproj | 2 ++ .../src/System.Net.Http.WinHttpHandler.csproj | 4 +-- .../System.Reflection.DispatchProxy.csproj | 2 ++ .../System.Reflection.TypeExtensions.csproj | 8 ++++-- .../System.Runtime.WindowsRuntime.UI.Xaml.sln | 16 ++++++------ ...stem.Runtime.WindowsRuntime.UI.Xaml.csproj | 2 -- ...stem.Runtime.WindowsRuntime.UI.Xaml.csproj | 2 -- .../System.Runtime.WindowsRuntime.sln | 16 ++++++------ .../ref/System.Runtime.WindowsRuntime.csproj | 2 -- .../src/System.Runtime.WindowsRuntime.csproj | 5 ++-- .../src/System.Security.AccessControl.csproj | 4 +-- .../System.Security.Cryptography.Pkcs.csproj | 17 ++++++------ ...Security.Cryptography.ProtectedData.csproj | 4 +-- .../System.Security.Permissions.sln | 8 +++--- .../src/System.Security.Permissions.csproj | 6 ++--- .../System.Security.Principal.Windows.csproj | 10 +++---- ...em.ServiceProcess.ServiceController.csproj | 16 ++++++------ .../src/System.Text.Encoding.CodePages.csproj | 6 ++--- .../src/System.Threading.AccessControl.csproj | 16 ++++++------ .../netfx.force.conflict.sln | 26 +++++++++++++++++++ .../ref/netfx.force.conflicts.csproj | 2 +- 36 files changed, 172 insertions(+), 128 deletions(-) create mode 100644 src/netfx.force.conflict/netfx.force.conflict.sln diff --git a/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj b/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj index 82d01405192f..9dec4f1785cd 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj +++ b/src/Microsoft.Win32.Registry.AccessControl/src/Microsoft.Win32.Registry.AccessControl.csproj @@ -9,12 +9,12 @@ {0E23F29E-6BB0-4B94-A5DA-B5E50601E0F2} - - - - - - + + + + + + @@ -26,4 +26,4 @@ - + \ No newline at end of file diff --git a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj index 6cfe52770642..ffb2f8ad8539 100644 --- a/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj +++ b/src/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj @@ -20,8 +20,10 @@ - - + + + + Common\Interop\Windows\Interop.RegistryOptions.cs diff --git a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj index 4801e2f92a4f..faeafed050ee 100644 --- a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj +++ b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj @@ -12,10 +12,18 @@ 4.0.0.0 4.1.0.0 + + + + + + + + diff --git a/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj b/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj index 5ac2c7eaf900..3fc1281f86ce 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj +++ b/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj @@ -30,12 +30,14 @@ + + + + - - diff --git a/src/System.Diagnostics.FileVersionInfo/System.Diagnostics.FileVersionInfo.sln b/src/System.Diagnostics.FileVersionInfo/System.Diagnostics.FileVersionInfo.sln index 4ced45c8a1bb..46491f94014d 100644 --- a/src/System.Diagnostics.FileVersionInfo/System.Diagnostics.FileVersionInfo.sln +++ b/src/System.Diagnostics.FileVersionInfo/System.Diagnostics.FileVersionInfo.sln @@ -46,10 +46,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU - {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU - {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU - {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU + {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Debug|Any CPU.ActiveCfg = netstandard-Windows_NT-Debug|Any CPU + {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Debug|Any CPU.Build.0 = netstandard-Windows_NT-Debug|Any CPU + {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Release|Any CPU.ActiveCfg = netstandard-Windows_NT-Release|Any CPU + {6DFDB760-CC88-48AE-BD81-C64844EA3CBC}.Release|Any CPU.Build.0 = netstandard-Windows_NT-Release|Any CPU {3002560A-5097-4A65-B562-93E335E64163}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU {3002560A-5097-4A65-B562-93E335E64163}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU {3002560A-5097-4A65-B562-93E335E64163}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU diff --git a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj index 6ca127d1d7ed..46069b08fe7c 100644 --- a/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj +++ b/src/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj @@ -6,8 +6,10 @@ {6DFDB760-CC88-48AE-BD81-C64844EA3CBC} - - + + + + diff --git a/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj b/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj index 9fbe1fb47398..8164b25259ca 100644 --- a/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj +++ b/src/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj @@ -1,4 +1,4 @@ - + Windows_NT @@ -12,12 +12,14 @@ true - - - - - - + + + + + + + + Common\Interop\Windows\Interop.Errors.cs @@ -46,4 +48,4 @@ - + \ No newline at end of file diff --git a/src/System.IO.FileSystem.DriveInfo/System.IO.FileSystem.DriveInfo.sln b/src/System.IO.FileSystem.DriveInfo/System.IO.FileSystem.DriveInfo.sln index 31a961445313..2ecc25e25145 100644 --- a/src/System.IO.FileSystem.DriveInfo/System.IO.FileSystem.DriveInfo.sln +++ b/src/System.IO.FileSystem.DriveInfo/System.IO.FileSystem.DriveInfo.sln @@ -26,10 +26,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU - {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU - {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU - {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU + {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Debug|Any CPU.ActiveCfg = netstandard-Windows_NT-Debug|Any CPU + {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Debug|Any CPU.Build.0 = netstandard-Windows_NT-Debug|Any CPU + {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Release|Any CPU.ActiveCfg = netstandard-Windows_NT-Release|Any CPU + {7D9E5F2F-5677-40FC-AD04-FA7D603E4806}.Release|Any CPU.Build.0 = netstandard-Windows_NT-Release|Any CPU {29C14AD7-DC03-45DC-897D-8DACC762707E}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU {29C14AD7-DC03-45DC-897D-8DACC762707E}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {29C14AD7-DC03-45DC-897D-8DACC762707E}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU diff --git a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj index cb603cc0ef5e..3dd303233032 100644 --- a/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj +++ b/src/System.IO.FileSystem.DriveInfo/tests/System.IO.FileSystem.DriveInfo.Tests.csproj @@ -5,17 +5,19 @@ {7D9E5F2F-5677-40FC-AD04-FA7D603E4806} - - + + + + Common\System\AssertExtensions.cs - - + + Common\System\PlatformDetection.cs - + \ No newline at end of file diff --git a/src/System.IO.FileSystem/System.IO.FileSystem.sln b/src/System.IO.FileSystem/System.IO.FileSystem.sln index e2b62ddfb77f..7141b20a4e1c 100644 --- a/src/System.IO.FileSystem/System.IO.FileSystem.sln +++ b/src/System.IO.FileSystem/System.IO.FileSystem.sln @@ -35,10 +35,10 @@ Global {F0D49126-6A1C-42D5-9428-4374C868BAF8}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {F0D49126-6A1C-42D5-9428-4374C868BAF8}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU {F0D49126-6A1C-42D5-9428-4374C868BAF8}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU - {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Release|Any CPU.Build.0 = Release|Any CPU + {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU + {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU + {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU + {3C42F714-82AF-4A43-9B9C-744DE31B5C5D}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU {1B528B61-14F9-4BFC-A79A-F0BDB3339150}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU {1B528B61-14F9-4BFC-A79A-F0BDB3339150}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {1B528B61-14F9-4BFC-A79A-F0BDB3339150}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU diff --git a/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj b/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj index aa306a388c24..7df96f1f2dee 100644 --- a/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj +++ b/src/System.IO.FileSystem/tests/Performance/System.IO.FileSystem.Performance.Tests.csproj @@ -6,8 +6,8 @@ true {3C42F714-82AF-4A43-9B9C-744DE31B5C5D} - - + + {69e46a6f-9966-45a5-8945-2559fe337827} @@ -35,4 +35,4 @@ - + \ No newline at end of file diff --git a/src/System.IO.Packaging/src/System.IO.Packaging.csproj b/src/System.IO.Packaging/src/System.IO.Packaging.csproj index 6c7325d53857..f30527a9e740 100644 --- a/src/System.IO.Packaging/src/System.IO.Packaging.csproj +++ b/src/System.IO.Packaging/src/System.IO.Packaging.csproj @@ -11,6 +11,8 @@ netstandard2.0;uap10.1 + + diff --git a/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj b/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj index 58886bf2f4c2..5d1b3c26c4e2 100644 --- a/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj +++ b/src/System.IO.Pipes.AccessControl/src/System.IO.Pipes.AccessControl.csproj @@ -9,12 +9,12 @@ true - - - - - - + + + + + + diff --git a/src/System.IO.Pipes/System.IO.Pipes.sln b/src/System.IO.Pipes/System.IO.Pipes.sln index 573c02518048..92cbb2522be1 100644 --- a/src/System.IO.Pipes/System.IO.Pipes.sln +++ b/src/System.IO.Pipes/System.IO.Pipes.sln @@ -35,10 +35,10 @@ Global {142469EC-D665-4FE2-845A-FDA69F9CC557}.Debug|Any CPU.Build.0 = netstandard-Windows_NT-Debug|Any CPU {142469EC-D665-4FE2-845A-FDA69F9CC557}.Release|Any CPU.ActiveCfg = netstandard-Windows_NT-Release|Any CPU {142469EC-D665-4FE2-845A-FDA69F9CC557}.Release|Any CPU.Build.0 = netstandard-Windows_NT-Release|Any CPU - {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Release|Any CPU.Build.0 = Release|Any CPU + {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU + {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU + {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU + {7A8B72D7-FACD-4E96-8390-F2D2FE269687}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU {D293A0E4-AE6C-4DF7-99AE-CC1A37BF4918}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU {D293A0E4-AE6C-4DF7-99AE-CC1A37BF4918}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {D293A0E4-AE6C-4DF7-99AE-CC1A37BF4918}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU diff --git a/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj b/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj index 30fb20464a1a..b9bfa0f15b3a 100644 --- a/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj +++ b/src/System.IO.Pipes/tests/Performance/System.IO.Pipes.Performance.Tests.csproj @@ -7,8 +7,8 @@ {7A8B72D7-FACD-4E96-8390-F2D2FE269687} - - + + diff --git a/src/System.IO.Ports/src/System.IO.Ports.csproj b/src/System.IO.Ports/src/System.IO.Ports.csproj index b3ea14856f6d..be46718ac888 100644 --- a/src/System.IO.Ports/src/System.IO.Ports.csproj +++ b/src/System.IO.Ports/src/System.IO.Ports.csproj @@ -10,6 +10,8 @@ + + diff --git a/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj b/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj index 3064b2e5d86d..d88f01c6bfd6 100644 --- a/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj +++ b/src/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj b/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj index c1f26d2d0d13..1ac745d67bbf 100644 --- a/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj +++ b/src/System.Reflection.DispatchProxy/src/System.Reflection.DispatchProxy.csproj @@ -14,6 +14,8 @@ + + diff --git a/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj b/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj index 3dc1cb5dc65f..1274e7b22eb0 100644 --- a/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj +++ b/src/System.Reflection.TypeExtensions/src/System.Reflection.TypeExtensions.csproj @@ -13,14 +13,18 @@ 4.1.0.0 - - + + + + + + diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/System.Runtime.WindowsRuntime.UI.Xaml.sln b/src/System.Runtime.WindowsRuntime.UI.Xaml/System.Runtime.WindowsRuntime.UI.Xaml.sln index ccff63d10e97..5c8abc40e48c 100644 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/System.Runtime.WindowsRuntime.UI.Xaml.sln +++ b/src/System.Runtime.WindowsRuntime.UI.Xaml/System.Runtime.WindowsRuntime.UI.Xaml.sln @@ -19,14 +19,14 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU - {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU + {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Debug|Any CPU.ActiveCfg = uap-Windows_NT-Debug|Any CPU + {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Debug|Any CPU.Build.0 = uap-Windows_NT-Debug|Any CPU + {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Release|Any CPU.ActiveCfg = uap-Windows_NT-Release|Any CPU + {263DA4F1-C3BC-4B43-98E7-9F38B419A131}.Release|Any CPU.Build.0 = uap-Windows_NT-Release|Any CPU + {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Debug|Any CPU.ActiveCfg = uap-Debug|Any CPU + {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Debug|Any CPU.Build.0 = uap-Debug|Any CPU + {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Release|Any CPU.ActiveCfg = uap-Release|Any CPU + {AA1600B8-C4D3-42A9-A28A-04D0C8282566}.Release|Any CPU.Build.0 = uap-Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj b/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj index 7f6d04c4f603..193f2efbe9d5 100644 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj +++ b/src/System.Runtime.WindowsRuntime.UI.Xaml/ref/System.Runtime.WindowsRuntime.UI.Xaml.csproj @@ -4,8 +4,6 @@ {AA1600B8-C4D3-42A9-A28A-04D0C8282566} - - diff --git a/src/System.Runtime.WindowsRuntime.UI.Xaml/src/System.Runtime.WindowsRuntime.UI.Xaml.csproj b/src/System.Runtime.WindowsRuntime.UI.Xaml/src/System.Runtime.WindowsRuntime.UI.Xaml.csproj index 27f0f978ed03..f25a35fca281 100644 --- a/src/System.Runtime.WindowsRuntime.UI.Xaml/src/System.Runtime.WindowsRuntime.UI.Xaml.csproj +++ b/src/System.Runtime.WindowsRuntime.UI.Xaml/src/System.Runtime.WindowsRuntime.UI.Xaml.csproj @@ -7,8 +7,6 @@ win8 - - diff --git a/src/System.Runtime.WindowsRuntime/System.Runtime.WindowsRuntime.sln b/src/System.Runtime.WindowsRuntime/System.Runtime.WindowsRuntime.sln index 81341f7f9b47..47a5bda58d4a 100644 --- a/src/System.Runtime.WindowsRuntime/System.Runtime.WindowsRuntime.sln +++ b/src/System.Runtime.WindowsRuntime/System.Runtime.WindowsRuntime.sln @@ -19,14 +19,14 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {844A2A0B-4169-49C3-B367-AFDC4894E487}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU - {844A2A0B-4169-49C3-B367-AFDC4894E487}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU - {844A2A0B-4169-49C3-B367-AFDC4894E487}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU - {844A2A0B-4169-49C3-B367-AFDC4894E487}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU - {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU + {844A2A0B-4169-49C3-B367-AFDC4894E487}.Debug|Any CPU.ActiveCfg = uap-Windows_NT-Debug|Any CPU + {844A2A0B-4169-49C3-B367-AFDC4894E487}.Debug|Any CPU.Build.0 = uap-Windows_NT-Debug|Any CPU + {844A2A0B-4169-49C3-B367-AFDC4894E487}.Release|Any CPU.ActiveCfg = uap-Windows_NT-Release|Any CPU + {844A2A0B-4169-49C3-B367-AFDC4894E487}.Release|Any CPU.Build.0 = uap-Windows_NT-Release|Any CPU + {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Debug|Any CPU.ActiveCfg = uap-Debug|Any CPU + {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Debug|Any CPU.Build.0 = uap-Debug|Any CPU + {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Release|Any CPU.ActiveCfg = uap-Release|Any CPU + {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA}.Release|Any CPU.Build.0 = uap-Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/System.Runtime.WindowsRuntime/ref/System.Runtime.WindowsRuntime.csproj b/src/System.Runtime.WindowsRuntime/ref/System.Runtime.WindowsRuntime.csproj index 92341bd3ebc2..4ad28632fd18 100644 --- a/src/System.Runtime.WindowsRuntime/ref/System.Runtime.WindowsRuntime.csproj +++ b/src/System.Runtime.WindowsRuntime/ref/System.Runtime.WindowsRuntime.csproj @@ -14,8 +14,6 @@ 1698 {FDDA3E4A-B182-4CD1-B624-EBD72D8A05DA} - - diff --git a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj index 31e7b604587e..36dbc87fb899 100644 --- a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj +++ b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj @@ -15,8 +15,6 @@ $(DefineConstants);netstandard;FEATURE_APPX - - @@ -29,7 +27,8 @@ System_Runtime_Extensions - + + diff --git a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj index 38e9e1acca00..3e513acc0f0f 100644 --- a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj +++ b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj @@ -9,12 +9,12 @@ {D27FFA1F-B446-4D24-B60A-1F88385CDB6D} - - + + diff --git a/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj b/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj index 5ea900e9ed52..76edcd9759ed 100644 --- a/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj +++ b/src/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj @@ -1,4 +1,4 @@ - + @@ -12,14 +12,13 @@ - - - - - - - + + + + + + @@ -173,4 +172,4 @@ - + \ No newline at end of file diff --git a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj index fac1000d02f2..516b50272000 100644 --- a/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj +++ b/src/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/src/System.Security.Permissions/System.Security.Permissions.sln b/src/System.Security.Permissions/System.Security.Permissions.sln index 87b9a500b1f8..be7deda9744a 100644 --- a/src/System.Security.Permissions/System.Security.Permissions.sln +++ b/src/System.Security.Permissions/System.Security.Permissions.sln @@ -30,10 +30,10 @@ Global {7517F1E9-EEB4-4676-A054-CE4A44A66B66}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU {7517F1E9-EEB4-4676-A054-CE4A44A66B66}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU {7517F1E9-EEB4-4676-A054-CE4A44A66B66}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU - {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU + {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU + {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU + {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU + {07390899-C8F6-4E83-A3A9-6867B8CB46A0}.Release|Any CPU.Build.0 = netstandard-Release|Any CPU {07CAF142-B259-418E-86EF-C4BD8B50253E}.Debug|Any CPU.ActiveCfg = netstandard-Debug|Any CPU {07CAF142-B259-418E-86EF-C4BD8B50253E}.Debug|Any CPU.Build.0 = netstandard-Debug|Any CPU {07CAF142-B259-418E-86EF-C4BD8B50253E}.Release|Any CPU.ActiveCfg = netstandard-Release|Any CPU diff --git a/src/System.Security.Permissions/src/System.Security.Permissions.csproj b/src/System.Security.Permissions/src/System.Security.Permissions.csproj index 5f278377dce0..5783cc091c5e 100644 --- a/src/System.Security.Permissions/src/System.Security.Permissions.csproj +++ b/src/System.Security.Permissions/src/System.Security.Permissions.csproj @@ -9,12 +9,10 @@ true - - - - + + diff --git a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj index 3e6f40af8d31..becad2c37063 100644 --- a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj +++ b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj @@ -10,12 +10,12 @@ true - - - - + + + + @@ -199,4 +199,4 @@ - + \ No newline at end of file diff --git a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj index b19597cd77e7..3c46ad442799 100644 --- a/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj +++ b/src/System.ServiceProcess.ServiceController/src/System.ServiceProcess.ServiceController.csproj @@ -1,4 +1,4 @@ - + @@ -13,12 +13,12 @@ false - - - - - - + + + + + + Common\Interop\Windows\Interop.Libraries.cs @@ -89,4 +89,4 @@ - + \ No newline at end of file diff --git a/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj b/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj index 730e1af1768d..ffa37ef920fa 100644 --- a/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj +++ b/src/System.Text.Encoding.CodePages/src/System.Text.Encoding.CodePages.csproj @@ -8,13 +8,13 @@ System.Text.Encoding.CodePages true - netstandard2.0;net461 + netstandard2.0;net461 - - + + diff --git a/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj b/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj index c3bc11d93a66..aa084112b5fb 100644 --- a/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj +++ b/src/System.Threading.AccessControl/src/System.Threading.AccessControl.csproj @@ -1,4 +1,4 @@ - + Windows_NT @@ -11,12 +11,12 @@ true - - - - - - + + + + + + Common\Interop\Windows\Interop.Errors.cs @@ -36,4 +36,4 @@ - + \ No newline at end of file diff --git a/src/netfx.force.conflict/netfx.force.conflict.sln b/src/netfx.force.conflict/netfx.force.conflict.sln new file mode 100644 index 000000000000..600c2cc8c3fe --- /dev/null +++ b/src/netfx.force.conflict/netfx.force.conflict.sln @@ -0,0 +1,26 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "netfx.force.conflicts", "ref\netfx.force.conflicts.csproj", "{85139F71-BF0C-4DC2-8306-53CE1D10E351}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{2E666815-2EDB-464B-9DF6-380BF4789AD4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {85139F71-BF0C-4DC2-8306-53CE1D10E351}.Debug|Any CPU.ActiveCfg = netfx-Debug|Any CPU + {85139F71-BF0C-4DC2-8306-53CE1D10E351}.Debug|Any CPU.Build.0 = netfx-Debug|Any CPU + {85139F71-BF0C-4DC2-8306-53CE1D10E351}.Release|Any CPU.ActiveCfg = netfx-Release|Any CPU + {85139F71-BF0C-4DC2-8306-53CE1D10E351}.Release|Any CPU.Build.0 = netfx-Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {85139F71-BF0C-4DC2-8306-53CE1D10E351} = {2E666815-2EDB-464B-9DF6-380BF4789AD4} + EndGlobalSection +EndGlobal diff --git a/src/netfx.force.conflict/ref/netfx.force.conflicts.csproj b/src/netfx.force.conflict/ref/netfx.force.conflicts.csproj index 968aa2e5a562..754adff6d316 100644 --- a/src/netfx.force.conflict/ref/netfx.force.conflicts.csproj +++ b/src/netfx.force.conflict/ref/netfx.force.conflicts.csproj @@ -2,7 +2,7 @@ - {96AA2060-C846-4E56-9509-E8CB9C114C8F} + {85139F71-BF0C-4DC2-8306-53CE1D10E351} netfx.force.conflicts From 1f3a10c5ba9562075a1e476426cd08fc48b38d72 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 12:20:04 -0700 Subject: [PATCH 153/336] Update BuildTools to 1.0.27-prerelease-01518-01 --- BuildToolsVersion.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index 5793f9c30a53..d9b275803c6d 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -1.0.27-prerelease-01517-02 \ No newline at end of file +1.0.27-prerelease-01518-01 \ No newline at end of file From d7241ce8cd613d90b51e97e35b423ad5978d0d0a Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 12:53:35 -0700 Subject: [PATCH 154/336] Fix Registry validation after UAP support removed --- .../pkg/Microsoft.Win32.Registry.pkgproj | 10 +++++----- .../ref/Microsoft.Win32.Registry.csproj | 3 --- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj index bf65e590805a..4b05ca1b1205 100644 --- a/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj +++ b/src/Microsoft.Win32.Registry/pkg/Microsoft.Win32.Registry.pkgproj @@ -3,14 +3,14 @@ - net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) + net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 diff --git a/src/Microsoft.Win32.Registry/ref/Microsoft.Win32.Registry.csproj b/src/Microsoft.Win32.Registry/ref/Microsoft.Win32.Registry.csproj index cfd48ae7a506..2e82e8026856 100644 --- a/src/Microsoft.Win32.Registry/ref/Microsoft.Win32.Registry.csproj +++ b/src/Microsoft.Win32.Registry/ref/Microsoft.Win32.Registry.csproj @@ -3,8 +3,6 @@ {EEC02D4E-217E-4B4D-A7DA-5038FAD44A18} - - netstandard2.0;uap10.1 @@ -12,7 +10,6 @@ - From e7533ab2c24728a5937bfb68609e183833359b27 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 13:21:03 -0700 Subject: [PATCH 155/336] Remove NotSupportedOnTargetFramework NotSupportedOnTargetFramework was used to explicitly make a package fail to install (due to ref/lib guardrails check) where it would otherwise succeed. This is no longer serving its purpose since NuGet removed the guardrails check. It's also creating a less desireable failure mode: FileNotFound vs PlatformNotSupported. --- .../pkg/Microsoft.Win32.Registry.AccessControl.pkgproj | 8 ++++---- .../pkg/System.IO.FileSystem.AccessControl.pkgproj | 8 ++++---- .../pkg/System.IO.Pipes.AccessControl.pkgproj | 8 ++++---- src/System.IO.Ports/pkg/System.IO.Ports.pkgproj | 3 --- .../pkg/System.Net.Http.WinHttpHandler.pkgproj | 8 ++++---- .../pkg/System.Security.AccessControl.pkgproj | 7 ++++--- .../pkg/System.ServiceProcess.ServiceController.pkgproj | 7 +++---- .../pkg/System.Threading.AccessControl.pkgproj | 8 ++++---- 8 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj index 9fa658ba4a5c..4cbbcf4691d1 100644 --- a/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj +++ b/src/Microsoft.Win32.Registry.AccessControl/pkg/Microsoft.Win32.Registry.AccessControl.pkgproj @@ -6,11 +6,11 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 diff --git a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj index 237f37b3e341..011929572b8c 100644 --- a/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj +++ b/src/System.IO.FileSystem.AccessControl/pkg/System.IO.FileSystem.AccessControl.pkgproj @@ -6,11 +6,11 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 diff --git a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj index 0a45dc0e8d8e..a6a0a563b4b4 100644 --- a/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj +++ b/src/System.IO.Pipes.AccessControl/pkg/System.IO.Pipes.AccessControl.pkgproj @@ -6,11 +6,11 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 diff --git a/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj b/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj index ee8ccbd1fa08..e7bf5ee81867 100644 --- a/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj +++ b/src/System.IO.Ports/pkg/System.IO.Ports.pkgproj @@ -6,9 +6,6 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - \ No newline at end of file diff --git a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj index 35acc01735a8..73c40a00b559 100644 --- a/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj +++ b/src/System.Net.Http.WinHttpHandler/pkg/System.Net.Http.WinHttpHandler.pkgproj @@ -6,11 +6,11 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 diff --git a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj index 399b7e9fc06f..afdd21fbcfaf 100644 --- a/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj +++ b/src/System.Security.AccessControl/pkg/System.Security.AccessControl.pkgproj @@ -6,10 +6,11 @@ net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) - - win - + + netcore50 + + lib/netstandard1.3 diff --git a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj index 6cce67c27bd8..c11193a88b49 100644 --- a/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj +++ b/src/System.ServiceProcess.ServiceController/pkg/System.ServiceProcess.ServiceController.pkgproj @@ -6,10 +6,9 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + diff --git a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj index 0f3e73ba657c..eb83751e6337 100644 --- a/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj +++ b/src/System.Threading.AccessControl/pkg/System.Threading.AccessControl.pkgproj @@ -6,11 +6,11 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) - - win - - + + netcore50 + + lib/netstandard1.3 From 722f331f19ee1a72fdee8e2c667e8aa5b9c0fc27 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 13:24:21 -0700 Subject: [PATCH 156/336] Reorder pkgproj items Reorder items so that pkgprojs have consistent alphabetical ordering: - ProjectReference - HarvestIncludePaths - InboxOnTargetFramework - SuppressMetaPackage - ValidatePackageSuppression --- src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj | 6 +++--- .../pkg/Microsoft.VisualBasic.pkgproj | 11 +++-------- .../pkg/System.ComponentModel.Annotations.pkgproj | 8 ++++---- .../ref/System.Reflection.DispatchProxy.csproj | 1 - .../pkg/System.Security.Cryptography.OpenSsl.pkgproj | 2 +- .../pkg/System.Security.Principal.Windows.pkgproj | 6 +++--- .../pkg/System.Threading.Tasks.Extensions.pkgproj | 3 +-- 7 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj b/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj index 408367c0dfe8..515e0c601bae 100644 --- a/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj +++ b/src/Microsoft.CSharp/pkg/Microsoft.CSharp.pkgproj @@ -6,6 +6,9 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + + + true @@ -33,9 +36,6 @@ true - - - .NETStandard,Version=v1.0;.NETStandard,Version=v1.1;.NETStandard,Version=v1.2 diff --git a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj index ab9843d79151..d9a3982a23b2 100644 --- a/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj +++ b/src/Microsoft.VisualBasic/pkg/Microsoft.VisualBasic.pkgproj @@ -9,19 +9,14 @@ true + + + - - - - - - - - .NETStandard,Version=v1.1;.NETStandard,Version=v1.2 diff --git a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj index a41eacd27052..9cfba119789c 100644 --- a/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj +++ b/src/System.ComponentModel.Annotations/pkg/System.ComponentModel.Annotations.pkgproj @@ -6,6 +6,10 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + + + + @@ -19,10 +23,6 @@ - - - - .NETStandard,Version=v1.1;.NETStandard,Version=v1.2;.NETStandard,Version=v1.3 diff --git a/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj b/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj index b56924911e95..ed520e031607 100644 --- a/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj +++ b/src/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj @@ -3,7 +3,6 @@ {7DF3C428-AAD6-41C7-98E6-6CACFD5C391E} - netstandard2.0 diff --git a/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj b/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj index a604eac81f2c..91c045506f1f 100644 --- a/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj +++ b/src/System.Security.Cryptography.OpenSsl/pkg/System.Security.Cryptography.OpenSsl.pkgproj @@ -6,10 +6,10 @@ net461;netcoreapp2.0;$(AllXamarinFrameworks) + - \ No newline at end of file diff --git a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj index 4aed00e0a19e..a6770a4acf8e 100644 --- a/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj +++ b/src/System.Security.Principal.Windows/pkg/System.Security.Principal.Windows.pkgproj @@ -6,15 +6,15 @@ net461;netcoreapp2.0;uap10.1;$(AllXamarinFrameworks) - - lib/netstandard1.3 + + \ No newline at end of file diff --git a/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj b/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj index fdc93b382d90..62b45af5672f 100644 --- a/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj +++ b/src/System.Threading.Tasks.Extensions/pkg/System.Threading.Tasks.Extensions.pkgproj @@ -9,12 +9,11 @@ net45;netcore45;netcoreapp1.0;wpa81;wp8;$(AllXamarinFrameworks) + - - \ No newline at end of file From d811ddb17d735b7ab283d11e8d13f33532e94115 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 17 Apr 2017 11:43:16 -0400 Subject: [PATCH 157/336] Augment and clean up IPAddress parsing tests - Add more test cases - Unify theories, in particular for failure handling - Remove platform-specific cases --- .../tests/FunctionalTests/IPAddressParsing.cs | 479 ++++++++---------- 1 file changed, 200 insertions(+), 279 deletions(-) diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs index e41eb578d693..4fbf62204072 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs @@ -2,30 +2,35 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Net.Sockets; using Xunit; namespace System.Net.Primitives.Functional.Tests { public class IPAddressParsing { - #region IPv4 - [Theory] + // Decimal [InlineData("192.168.0.1", "192.168.0.1")] [InlineData("0.0.0.0", "0.0.0.0")] [InlineData("0", "0.0.0.0")] + [InlineData("12", "0.0.0.12")] + [InlineData("12.1.7", "12.1.0.7")] + [InlineData("12.1.7", "12.1.0.7")] [InlineData("255.255.255.255", "255.255.255.255")] - [InlineData("4294967294", "255.255.255.254")] - [InlineData("4294967295", "255.255.255.255")] + [InlineData("20.65535", "20.0.255.255")] [InlineData("157.3873051", "157.59.25.27")] [InlineData("157.6427", "157.0.25.27")] + [InlineData("0313.027035210", "203.92.58.136")] + [InlineData("0313.0134.035210", "203.92.58.136")] + [InlineData("65535", "0.0.255.255")] + [InlineData("65536", "0.1.0.0")] + [InlineData("1434328179", "85.126.28.115")] [InlineData("2637895963", "157.59.25.27")] - public void ParseIPv4_Decimal_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] + [InlineData("3397943208", "202.136.127.168")] + [InlineData("4294967294", "255.255.255.254")] + [InlineData("4294967295", "255.255.255.255")] + //Hex [InlineData("0xFF.0xFF.0xFF.0xFF", "255.255.255.255")] [InlineData("0x0", "0.0.0.0")] [InlineData("0xFFFFFFFE", "255.255.255.254")] @@ -33,12 +38,8 @@ public void ParseIPv4_Decimal_Success(string address, string expected) [InlineData("0x9D3B191B", "157.59.25.27")] [InlineData("0X9D.0x3B.0X19.0x1B", "157.59.25.27")] [InlineData("0x89.0xab.0xcd.0xef", "137.171.205.239")] - public void ParseIPv4_Hex_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] + [InlineData("0xff.0x7f.0x20.0x01", "255.127.32.1")] + // Octal [InlineData("0377.0377.0377.0377", "255.255.255.255")] [InlineData("037777777776", "255.255.255.254")] [InlineData("037777777777", "255.255.255.255")] @@ -47,114 +48,68 @@ public void ParseIPv4_Hex_Success(string address, string expected) [InlineData("000235.000073.0000031.00000033", "157.59.25.27")] [InlineData("0235.073.031.033", "157.59.25.27")] [InlineData("157.59.25.033", "157.59.25.27")] // Partial octal - public void ParseIPv4_Octal_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] + // Mixed base [InlineData("157.59.25.0x1B", "157.59.25.27")] [InlineData("157.59.0x001B", "157.59.0.27")] [InlineData("157.0x00001B", "157.0.0.27")] [InlineData("157.59.0x25.033", "157.59.37.27")] - public void ParseIPv4_MixedBase_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Fact] - public void ParseIPv4_WithSubnet_Failure() - { - Assert.Throws(() => { IPAddress.Parse("192.168.0.0/16"); }); - } - - [Fact] - public void ParseIPv4_WithPort_Failure() + public void ParseIPv4_ValidAddress_Success(string address, string expected) { - Assert.Throws(() => { IPAddress.Parse("192.168.0.1:80"); }); - } + IPAddress ip = IPAddress.Parse(address); - [Fact] - public void ParseIPv4_Empty_Failure() - { - Assert.Throws(() => { IPAddress.Parse(""); }); - } + // Validate the ToString of the parsed address matches the expected value + Assert.Equal(expected, ip.ToString()); + Assert.Equal(AddressFamily.InterNetwork, ip.AddressFamily); - [Theory] - [InlineData(" ")] - [InlineData(" 127.0.0.1")] - public void ParseIPv4_Whitespace_Failure(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); + // Validate the ToString representation can be parsed as well back into the same IP + IPAddress ip2 = IPAddress.Parse(ip.ToString()); + Assert.Equal(ip, ip2); } [Theory] + [InlineData("")] // empty + [InlineData(" ")] // whitespace + [InlineData(" ")] // whitespace + [InlineData(" 127.0.0.1")] // leading whitespace + [InlineData("192.168.0.0/16")] // with subnet + [InlineData("192.168.0.1:80")] // with port [InlineData("157.3B191B")] // Hex without 0x [InlineData("1.1.1.0x")] // Empty trailing hex segment [InlineData("0000X9D.0x3B.0X19.0x1B")] // Leading zeros on hex - public void ParseIPv4_InvalidHex_Failure(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] - [PlatformSpecific(~TestPlatforms.OSX)] // There doesn't appear to be an OSX API that will fail for these [InlineData("0x.1.1.1")] // Empty leading hex segment - public void ParseIPv4_InvalidHex_Failure_NonOSX(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] [InlineData("0.0.0.089")] // Octal (leading zero) but with 8 or 9 - public void ParseIPv4_InvalidOctal_Failure(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] [InlineData("260.156")] // Left dotted segments can't be more than 255 [InlineData("255.260.156")] // Left dotted segments can't be more than 255 + [InlineData("255.1.1.256")] // Right dotted segment can't be more than 255 [InlineData("0xFF.0xFFFFFF.0xFF")] // Middle segment too large [InlineData("0xFFFFFF.0xFF.0xFFFFFF")] // Leading segment too large - public void ParseIPv4_InvalidValue_Failure(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] - [PlatformSpecific(~TestPlatforms.OSX)] // There does't appear to be an OSX API that will fail for these [InlineData("4294967296")] // Decimal overflow by 1 [InlineData("040000000000")] // Octal overflow by 1 [InlineData("01011101001110110001100100011011")] // Binary? Read as octal, overflows [InlineData("10011101001110110001100100011011")] // Binary? Read as decimal, overflows [InlineData("0x100000000")] // Hex overflow by 1 - public void ParseIPv4_InvalidValue_Failure_NonOSX(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] - [InlineData("1.1\u67081.1.1")] // Unicode, Crashes .NET 4.0 IPAddress.TryParse - public void ParseIPv4_InvalidChar_Failure(string address) - { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - [Theory] + [InlineData("1.1\u67081.1.1")] // Invalid char (unicode) [InlineData("...")] // Empty sections [InlineData("1.1.1.")] // Empty trailing section [InlineData("1..1.1")] // Empty internal section [InlineData(".1.1.1")] // Empty leading section [InlineData("..11.1")] // Empty sections - public void ParseIPv4_EmptySection_Failure(string address) + [InlineData(" text")] // alpha text + [InlineData("1.. .")] // whitespace section + [InlineData("12.1.8. ")] // trailing whitespace section + [InlineData("12.+1.1.4")] // plus sign in section + [InlineData("12.1.-1.5")] // minus sign in section + [InlineData("12.1.abc.5")] // text in section + public void ParseIPv4_InvalidAddress_Failure(string address) { - Assert.Throws(() => { IPAddress.Parse(address); }); - } - - #endregion + FormatException fe = Assert.Throws(() => IPAddress.Parse(address)); + SocketException se = Assert.IsType(fe.InnerException); + Assert.NotEmpty(se.Message); - #region IPv6 + IPAddress result = IPAddress.Loopback; + Assert.False(IPAddress.TryParse(address, out result)); + Assert.Null(result); + } [Theory] [InlineData("Fe08::1", "fe08::1")] @@ -168,8 +123,66 @@ public void ParseIPv4_EmptySection_Failure(string address) [InlineData("0:0:0:0:1:0:0:0", "::1:0:0:0")] [InlineData("0:0:0:0:0:1:0:0", "::1:0:0")] [InlineData("0:0:0:0:0:0:1:0", "::0.1.0.0")] + [InlineData("0:0:0:0:0:0:2:0", "::0.2.0.0")] + [InlineData("0:0:0:0:0:0:F:0", "::0.15.0.0")] + [InlineData("0:0:0:0:0:0:10:0", "::0.16.0.0")] + [InlineData("0:0:0:0:0:0:A0:0", "::0.160.0.0")] + [InlineData("0:0:0:0:0:0:F0:0", "::0.240.0.0")] + [InlineData("0:0:0:0:0:0:FF:0", "::0.255.0.0")] [InlineData("0:0:0:0:0:0:0:1", "::1")] + [InlineData("0:0:0:0:0:0:0:2", "::2")] + [InlineData("0:0:0:0:0:0:0:F", "::F")] + [InlineData("0:0:0:0:0:0:0:10", "::10")] + [InlineData("0:0:0:0:0:0:0:1A", "::1A")] + [InlineData("0:0:0:0:0:0:0:A0", "::A0")] + [InlineData("0:0:0:0:0:0:0:F0", "::F0")] + [InlineData("0:0:0:0:0:0:0:FF", "::FF")] + [InlineData("0:0:0:0:0:0:0:1001", "::1001")] + [InlineData("0:0:0:0:0:0:0:1002", "::1002")] + [InlineData("0:0:0:0:0:0:0:100F", "::100F")] + [InlineData("0:0:0:0:0:0:0:1010", "::1010")] + [InlineData("0:0:0:0:0:0:0:10A0", "::10A0")] + [InlineData("0:0:0:0:0:0:0:10F0", "::10F0")] + [InlineData("0:0:0:0:0:0:0:10FF", "::10FF")] + [InlineData("0:0:0:0:0:0:1:1", "::0.1.0.1")] + [InlineData("0:0:0:0:0:0:2:2", "::0.2.0.2")] + [InlineData("0:0:0:0:0:0:F:F", "::0.15.0.15")] + [InlineData("0:0:0:0:0:0:10:10", "::0.16.0.16")] + [InlineData("0:0:0:0:0:0:A0:A0", "::0.160.0.160")] + [InlineData("0:0:0:0:0:0:F0:F0", "::0.240.0.240")] + [InlineData("0:0:0:0:0:0:FF:FF", "::0.255.0.255")] + [InlineData("0:0:0:0:0:FFFF:0:1", "::FFFF:0:1")] + [InlineData("0:0:0:0:0:FFFF:0:2", "::FFFF:0:2")] + [InlineData("0:0:0:0:0:FFFF:0:F", "::FFFF:0:F")] + [InlineData("0:0:0:0:0:FFFF:0:10", "::FFFF:0:10")] + [InlineData("0:0:0:0:0:FFFF:0:A0", "::FFFF:0:A0")] + [InlineData("0:0:0:0:0:FFFF:0:F0", "::FFFF:0:F0")] + [InlineData("0:0:0:0:0:FFFF:0:FF", "::FFFF:0:FF")] + [InlineData("0:0:0:0:0:FFFF:1:0", "::FFFF:0.1.0.0")] + [InlineData("0:0:0:0:0:FFFF:2:0", "::FFFF:0.2.0.0")] + [InlineData("0:0:0:0:0:FFFF:F:0", "::FFFF:0.15.0.0")] + [InlineData("0:0:0:0:0:FFFF:10:0", "::FFFF:0.16.0.0")] + [InlineData("0:0:0:0:0:FFFF:A0:0", "::FFFF:0.160.0.0")] + [InlineData("0:0:0:0:0:FFFF:F0:0", "::FFFF:0.240.0.0")] + [InlineData("0:0:0:0:0:FFFF:FF:0", "::FFFF:0.255.0.0")] + [InlineData("0:0:0:0:0:FFFF:0:1001", "::FFFF:0:1001")] + [InlineData("0:0:0:0:0:FFFF:0:1002", "::FFFF:0:1002")] + [InlineData("0:0:0:0:0:FFFF:0:100F", "::FFFF:0:100F")] + [InlineData("0:0:0:0:0:FFFF:0:1010", "::FFFF:0:1010")] + [InlineData("0:0:0:0:0:FFFF:0:10A0", "::FFFF:0:10A0")] + [InlineData("0:0:0:0:0:FFFF:0:10F0", "::FFFF:0:10F0")] + [InlineData("0:0:0:0:0:FFFF:0:10FF", "::FFFF:0:10FF")] + [InlineData("0:0:0:0:0:FFFF:1:1", "::FFFF:0.1.0.1")] + [InlineData("0:0:0:0:0:FFFF:2:2", "::FFFF:0.2.0.2")] + [InlineData("0:0:0:0:0:FFFF:F:F", "::FFFF:0.15.0.15")] + [InlineData("0:0:0:0:0:FFFF:10:10", "::FFFF:0.16.0.16")] + [InlineData("0:0:0:0:0:FFFF:A0:A0", "::FFFF:0.160.0.160")] + [InlineData("0:0:0:0:0:FFFF:F0:F0", "::FFFF:0.240.0.240")] + [InlineData("0:0:0:0:0:FFFF:FF:FF", "::FFFF:0.255.0.255")] + [InlineData("0:7:7:7:7:7:7:7", "0:7:7:7:7:7:7:7")] [InlineData("1:0:0:0:0:0:0:1", "1::1")] + [InlineData("1:1:0:0:0:0:0:0", "1:1::")] + [InlineData("2:2:0:0:0:0:0:0", "2:2::")] [InlineData("1:1:0:0:0:0:0:1", "1:1::1")] [InlineData("1:0:1:0:0:0:0:1", "1:0:1::1")] [InlineData("1:0:0:1:0:0:0:1", "1:0:0:1::1")] @@ -181,218 +194,126 @@ public void ParseIPv4_EmptySection_Failure(string address) [InlineData("1:0:0:1:0:0:1:1", "1::1:0:0:1:1")] [InlineData("1:1:0:0:0:1:0:1", "1:1::1:0:1")] [InlineData("1:0:0:0:1:0:1:1", "1::1:0:1:1")] + [InlineData("1:1:1:1:1:1:1:0", "1:1:1:1:1:1:1:0")] + [InlineData("7:7:7:7:7:7:7:0", "7:7:7:7:7:7:7:0")] + [InlineData("E:0:0:0:0:0:0:1", "E::1")] + [InlineData("E:0:0:0:0:0:2:2", "E::2:2")] + [InlineData("E:0:6:6:6:6:6:6", "E:0:6:6:6:6:6:6")] + [InlineData("E:E:0:0:0:0:0:1", "E:E::1")] + [InlineData("E:E:0:0:0:0:2:2", "E:E::2:2")] + [InlineData("E:E:0:5:5:5:5:5", "E:E:0:5:5:5:5:5")] + [InlineData("E:E:E:0:0:0:0:1", "E:E:E::1")] + [InlineData("E:E:E:0:0:0:2:2", "E:E:E::2:2")] + [InlineData("E:E:E:0:4:4:4:4", "E:E:E:0:4:4:4:4")] + [InlineData("E:E:E:E:0:0:0:1", "E:E:E:E::1")] + [InlineData("E:E:E:E:0:0:2:2", "E:E:E:E::2:2")] + [InlineData("E:E:E:E:0:3:3:3", "E:E:E:E:0:3:3:3")] + [InlineData("E:E:E:E:E:0:0:1", "E:E:E:E:E::1")] + [InlineData("E:E:E:E:E:0:2:2", "E:E:E:E:E:0:2:2")] + [InlineData("E:E:E:E:E:E:0:1", "E:E:E:E:E:E:0:1")] + [InlineData("::FFFF:192.168.0.1", "::FFFF:192.168.0.1")] + [InlineData("::FFFF:0.168.0.1", "::FFFF:0.168.0.1")] + [InlineData("::0.0.255.255", "::FFFF")] + [InlineData("::EEEE:10.0.0.1", "::EEEE:A00:1")] + [InlineData("::10.0.0.1", "::10.0.0.1")] + [InlineData("1234:0:0:0:0:1234:0:0", "1234::1234:0:0")] + [InlineData("1:0:1:0:1:0:1:0", "1:0:1:0:1:0:1:0")] + [InlineData("1:1:1:0:0:1:1:0", "1:1:1::1:1:0")] + [InlineData("0:0:0:0:0:1234:0:0", "::1234:0:0")] + [InlineData("3ffe:38e1::0100:1:0001", "3ffe:38e1::100:1:1")] + [InlineData("0:0:1:2:00:00:000:0000", "0:0:1:2::")] + [InlineData("100:0:1:2:0:0:000:abcd", "100:0:1:2::abcd")] + [InlineData("ffff:0:0:0:0:0:00:abcd", "ffff::abcd")] + [InlineData("ffff:0:0:2:0:0:00:abcd", "ffff:0:0:2::abcd")] + [InlineData("0:0:1:2:0:00:0000:0000", "0:0:1:2::")] + [InlineData("0000:0000::1:0000:0000", "::1:0:0")] + [InlineData("0:0:111:234:5:6:789A:0", "::111:234:5:6:789a:0")] + [InlineData("11:22:33:44:55:66:77:8", "11:22:33:44:55:66:77:8")] + [InlineData("::7711:ab42:1230:0:0:0", "0:0:7711:ab42:1230::")] [InlineData("::", "::")] - public void ParseIPv6_NoBrackets_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Fact] - public void ParseIPv6_Brackets_SuccessBracketsDropped() - { - Assert.Equal("fe08::1", IPAddress.Parse("[Fe08::1]").ToString()); - } - - [Fact] - public void ParseIPv6_LeadingBracket_Failure() - { - Assert.Throws(() => { IPAddress.Parse("[Fe08::1"); }); - } - - [Fact] - public void ParseIPv6_TrailingBracket_Failure() - { - Assert.Throws(() => { IPAddress.Parse("Fe08::1]"); }); - } - - [Fact] - public void ParseIPv6_BracketsAndPort_SuccessBracketsAndPortDropped() - { - Assert.Equal("fe08::1", IPAddress.Parse("[Fe08::1]:80").ToString()); - } - - [Fact] - public void ParseIPv6_BracketsAndInvalidPort_Failure() - { - Assert.Throws(() => { IPAddress.Parse("[Fe08::1]:80Z"); }); - } - - [Fact] - public void ParseIPv6_BracketsAndHexPort_SuccessBracketsAndPortDropped() - { - Assert.Equal("fe08::1", IPAddress.Parse("[Fe08::1]:0xFA").ToString()); - } - - [Fact] - public void ParseIPv6_WithSubnet_Failure() - { - Assert.Throws(() => { IPAddress.Parse("Fe08::/64"); }); - } - [Theory] + [InlineData("[Fe08::1]", "fe08::1")] // brackets dropped + [InlineData("[Fe08::1]:0x80", "fe08::1")] // brackets and port dropped + [InlineData("[Fe08::1]:0xFA", "fe08::1")] // brackets and port dropped + // ScopeID [InlineData("Fe08::1%13542", "fe08::1%13542")] [InlineData("1::%1", "1::%1")] [InlineData("::1%12", "::1%12")] [InlineData("::%123", "::%123")] - public void ParseIPv6_ScopeID_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] + // v4 as v6 [InlineData("FE08::192.168.0.1", "fe08::c0a8:1")] // Output is not IPv4 mapped [InlineData("::192.168.0.1", "::192.168.0.1")] [InlineData("::FFFF:192.168.0.1", "::ffff:192.168.0.1")] // SIIT - public void ParseIPv6_v4_Success(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] - [PlatformSpecific(~TestPlatforms.AnyUnix)] // Linux/OSX don't do the IPv6->IPv4 formatting for these addresses [InlineData("::FFFF:0:192.168.0.1", "::ffff:0:192.168.0.1")] // SIIT [InlineData("::5EFE:192.168.0.1", "::5efe:192.168.0.1")] // ISATAP [InlineData("1::5EFE:192.168.0.1", "1::5efe:192.168.0.1")] // ISATAP - public void ParseIPv6_v4_Success_NonUnix(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] - [PlatformSpecific(TestPlatforms.AnyUnix)] // Linux/OSX don't do the IPv6->IPv4 formatting for these addresses - [InlineData("::FFFF:0:192.168.0.1", "::ffff:0:c0a8:1")] // SIIT - [InlineData("::5EFE:192.168.0.1", "::5efe:c0a8:1")] // ISATAP - [InlineData("1::5EFE:192.168.0.1", "1::5efe:c0a8:1")] // ISATAP - public void ParseIPv6_v4_Success_Unix(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Theory] - [PlatformSpecific(~TestPlatforms.Linux)] // Linux does not appear to recognize this as a valid address [InlineData("::192.168.0.010", "::192.168.0.10")] // Embedded IPv4 octal, read as decimal - public void ParseIPv6_v4_Success_NonLinux(string address, string expected) - { - Assert.Equal(expected, IPAddress.Parse(address).ToString()); - } - - [Fact] - public void ParseIPv6_Incomplete_Failure() - { - Assert.Throws(() => { IPAddress.Parse("[1]"); }); - } - - [Fact] - public void ParseIPv6_LeadingSingleColon_Failure() - { - Assert.Throws(() => { IPAddress.Parse(":1"); }); - } - - [Fact] - public void ParseIPv6_TrailingSingleColon_Failure() - { - Assert.Throws(() => { IPAddress.Parse("1:"); }); - } - - [Fact] - public void ParseIPv6_LeadingWhitespace_Failure() - { - Assert.Throws(() => { IPAddress.Parse(" ::1"); }); - } - - [Fact] - public void ParseIPv6_TrailingWhitespace_Failure() - { - Assert.Throws(() => { IPAddress.Parse("::1 "); }); - } - - [Fact] - public void ParseIPv6_Ambiguous_Failure() - { - Assert.Throws(() => { IPAddress.Parse("1::1::1"); }); - } - - [Fact] - public void ParseIPv6_InvalidChar_Failure() - { - Assert.Throws(() => { IPAddress.Parse("1:1\u67081:1:1"); }); - } - - [Fact] - public void ParseIPv6_v4_OutOfRange_Failure() - { - Assert.Throws(() => { IPAddress.Parse("FE08::260.168.0.1"); }); - } - - [Fact] - public void ParseIPv6_v4_Hex_Failure() - { - Assert.Throws(() => { IPAddress.Parse("::192.168.0.0x0"); }); - } - - [Fact] - public void ParseIPv6_Rawv4_Failure() - { - Assert.Throws(() => { IPAddress.Parse("[192.168.0.1]"); }); - } - - [Fact] - public void ParseIPv6_InvalidHex_Failure() + public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, string expected) { - Assert.Throws(() => { IPAddress.Parse("G::"); }); - } - - [Fact] - public void ParseIPv6_InvalidValue_Failure() - { - Assert.Throws(() => { IPAddress.Parse("FFFFF::"); }); - } + IPAddress ip = IPAddress.Parse(address); - [Fact] - public void ParseIPv6_ColonScope_Failure() - { - Assert.Throws(() => { IPAddress.Parse(":%12"); }); - } + // Validate the ToString of the parsed address matches the expected value + Assert.Equal(expected.ToLowerInvariant(), ip.ToString()); + Assert.Equal(AddressFamily.InterNetworkV6, ip.AddressFamily); - [Fact] - public void ParseIPv6_JustScope_Failure() - { - Assert.Throws(() => { IPAddress.Parse("%12"); }); + // Validate the ToString representation can be parsed as well back into the same IP + IPAddress ip2 = IPAddress.Parse(ip.ToString()); + Assert.Equal(ip, ip2); } - [Fact] - [PlatformSpecific(~TestPlatforms.OSX)] // There does't appear to be an OSX API that will fail for this - public void ParseIPv6_AlphaNumericScope_Failure() - { - Assert.Throws(() => { IPAddress.Parse("::%1a"); }); + [Theory] + [InlineData(":::4df")] + [InlineData("4df:::")] + [InlineData("0:::4df")] + [InlineData("4df:::0")] + [InlineData("::4df:::")] + [InlineData("0::4df:::")] + [InlineData(" ::1")] + [InlineData(":: 1")] + [InlineData(":")] + [InlineData("0:0:0:0:0:0:0:0:0")] + [InlineData("0:0:0:0:0:0:0")] + [InlineData("0FFFF::")] + [InlineData("FFFF0::")] + [InlineData("[::1")] + [InlineData("Fe08::/64")] // with subnet + [InlineData("[Fe08::1]:80Z")] // brackets and invalid port + [InlineData("[Fe08::1")] // leading bracket + [InlineData("Fe08::1]")] // trailing bracket + [InlineData("[1]")] // incomplete + [InlineData(":1")] // leading single colon + [InlineData("1:")] // trailing single colon + [InlineData(" ::1")] // leading whitespace + [InlineData("::1 ")] // trailing whitespace + [InlineData("1::1::1")] // ambiguous failure + [InlineData("1:1\u67081:1:1")] // invalid char + [InlineData("FE08::260.168.0.1")] // out of range + [InlineData("::192.168.0.0x0")] // hex failure + [InlineData("[192.168.0.1]")] // raw v4 + [InlineData("G::")] // invalid hex + [InlineData("FFFFF::")] // invalid value + [InlineData(":%12")] // colon scope + [InlineData("%12")] // just scope + [InlineData("::%1a")] // alphanumeric scope + [InlineData("")] // empty + public void ParseIPv6_InvalidAddress_ThrowsFormatException(string invalidAddress) + { + FormatException fe = Assert.Throws(() => IPAddress.Parse(invalidAddress)); + SocketException se = Assert.IsType(fe.InnerException); + Assert.NotEmpty(se.Message); + + IPAddress result = IPAddress.Loopback; + Assert.False(IPAddress.TryParse(invalidAddress, out result)); + Assert.Null(result); } - - #endregion - [Fact] public void Parse_Null_Throws() { Assert.Throws(() => { IPAddress.Parse(null); }); - } - [Fact] - public void TryParse_Null_False() - { IPAddress ipAddress; Assert.False(IPAddress.TryParse(null, out ipAddress)); - } - - [Fact] - public void Parse_Empty_Throws() - { - Assert.Throws(() => { IPAddress.Parse(String.Empty); }); - } - - [Fact] - public void TryParse_Empty_False() - { - IPAddress ipAddress; - Assert.False(IPAddress.TryParse(String.Empty, out ipAddress)); + Assert.Null(ipAddress); } } } From 1d8dcae0734ed9916df106751a251563b7c5415c Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 17 Apr 2017 14:58:57 -0400 Subject: [PATCH 158/336] Port IPv4/6AddressHelper to Core and use it Replace the native IPAddress parsing on unix with the managed implementation from .NET Framework (it's also used by Mono). I fixed a few of the aggregious perf issues as part of porting it, but still more to do. --- .../src/System.Net.Primitives.csproj | 2 + .../src/System/Net/IPAddressPal.Unix.cs | 151 ++--- .../src/System/Net/IPv4AddressHelper.cs | 369 +++++++++++ .../src/System/Net/IPv6AddressHelper.cs | 602 ++++++++++++++++++ 4 files changed, 1035 insertions(+), 89 deletions(-) create mode 100644 src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs create mode 100644 src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs diff --git a/src/System.Net.Primitives/src/System.Net.Primitives.csproj b/src/System.Net.Primitives/src/System.Net.Primitives.csproj index f3d6c804778b..ac6782d6552a 100644 --- a/src/System.Net.Primitives/src/System.Net.Primitives.csproj +++ b/src/System.Net.Primitives/src/System.Net.Primitives.csproj @@ -164,6 +164,8 @@ + + Common\System\Net\SocketAddressPal.Unix.cs diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs index 4cbd11554d4b..8cb0338185d2 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs @@ -38,117 +38,90 @@ public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int Debug.Assert(bytes != null); Debug.Assert(bytesLength >= IPAddressParserStatics.IPv4AddressBytes); - return unchecked((uint)Interop.Sys.IPv4StringToAddress(ipString, bytes, bytesLength, out port)); - } - - private static bool IsHexString(string input, int startIndex) - { - // "0[xX][A-Fa-f0-9]+" - if (startIndex >= input.Length - 3 || - input[startIndex] != '0' || - (input[startIndex + 1] != 'x' && input[startIndex + 1] != 'X')) + port = 0; + long address; + int end = ipString.Length; + fixed (char* ipStringPtr = ipString) { - return false; + address = IPv4AddressHelper.ParseNonCanonical(ipStringPtr, 0, ref end, notImplicitFile: true); } - for (int i = startIndex + 2; i < input.Length; i++) + if (address == IPv4AddressHelper.Invalid || end != ipString.Length) { - char c = input[i]; - if ((c < 'A' || c > 'F') && (c < 'a' || c > 'f') && (c < '0' || c > '9')) - { - return false; - } + return (uint)SocketError.InvalidArgument; } - return true; + bytes[0] = (byte)((0xFF000000 & address) >> 24); + bytes[1] = (byte)((0x00FF0000 & address) >> 16); + bytes[2] = (byte)((0x0000FF00 & address) >> 8); + bytes[3] = (byte)((0x000000FF & address) >> 0); + return (uint)SocketError.Success; } - // Splits an IPv6 address of the form '[.*]:.*' into its host and port parts and removes - // surrounding square brackets, if any. - private static bool TryPreprocessIPv6Address(string input, out string host, out string port) + public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) { - Debug.Assert(input != null); + Debug.Assert(ipString != null); + Debug.Assert(bytes != null); + Debug.Assert(bytesLength >= IPAddressParserStatics.IPv6AddressBytes); - if (input == "") - { - host = null; - port = null; - return false; - } + scope = 0; - bool hasLeadingBracket = input[0] == '['; - int trailingBracketIndex = -1; - int portSeparatorIndex = -1; - for (int i = input.Length - 1; i >= 0; i--) + int offset = 0; + if (ipString[0] != '[') { - if (input[i] == ']') - { - trailingBracketIndex = i; - break; - } - - if (input[i] == ':') - { - if (i >= 1 && input[i - 1] == ']') - { - trailingBracketIndex = i - 1; - portSeparatorIndex = i; - } - break; - } + ipString = ipString + ']'; //for Uri parser to find the terminator. } - - bool hasTrailingBracket = trailingBracketIndex != -1; - if (hasLeadingBracket != hasTrailingBracket) + else { - host = null; - port = null; - return false; + offset = 1; } - if (!hasLeadingBracket) + int end = ipString.Length; + fixed (char* name = ipString) { - host = input; - port = null; - } - else - { - host = input.Substring(1, trailingBracketIndex - 1); - port = portSeparatorIndex != -1 && !IsHexString(input, portSeparatorIndex + 1) ? - input.Substring(portSeparatorIndex + 1) : - null; - } - return true; - } + if (IPv6AddressHelper.IsValidStrict(name, offset, ref end) || (end != ipString.Length)) + { + ushort* numbers = stackalloc ushort[IPAddressParserStatics.IPv6AddressBytes / 2]; + string scopeId = null; + IPv6AddressHelper.Parse(ipString, numbers, 0, ref scopeId); - public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) - { - Debug.Assert(ipString != null); - Debug.Assert(bytes != null); - Debug.Assert(bytesLength >= IPAddressParserStatics.IPv6AddressBytes); + long result = 0; + if (!string.IsNullOrEmpty(scopeId)) + { + if (scopeId.Length < 2) + { + return (uint)SocketError.InvalidArgument; + } + + for (int i = 1; i < scopeId.Length; i++) + { + char c = scopeId[i]; + if (c < '0' || c > '9') + { + return (uint)SocketError.InvalidArgument; + } + result = (result * 10) + (c - '0'); + if (result > uint.MaxValue) + { + return (uint)SocketError.InvalidArgument; + } + } + + scope = (uint)result; + } - string host, port; - if (!TryPreprocessIPv6Address(ipString, out host, out port)) - { - scope = 0; - return unchecked((uint)Interop.Sys.GetAddrInfoErrorFlags.EAI_NONAME); + for (int i = 0; i < IPAddressParserStatics.IPv6AddressBytes / 2; i++) + { + bytes[i * 2 + 1] = (byte)(numbers[i] & 0xFF); + bytes[i * 2] = (byte)((numbers[i] & 0xFF00) >> 8); + } + return (uint)SocketError.Success; + } } - return unchecked((uint)Interop.Sys.IPv6StringToAddress(host, port, bytes, bytesLength, out scope)); + return (uint)SocketError.InvalidArgument; } - public static SocketError GetSocketErrorForErrorCode(uint status) - { - switch (unchecked((int)status)) - { - case 0: - return SocketError.Success; - case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_BADFLAGS: - case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_NONAME: - return SocketError.InvalidArgument; - default: - return (SocketError)status; - } - } + public static SocketError GetSocketErrorForErrorCode(uint status) => (SocketError)status; } } diff --git a/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs new file mode 100644 index 000000000000..16d06eaa5037 --- /dev/null +++ b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs @@ -0,0 +1,369 @@ +using System.Diagnostics; + +namespace System +{ + + // The class designed as to keep minimal the working set of Uri class. + // The idea is to stay with static helper methods and strings + internal static class IPv4AddressHelper + { + + internal const long Invalid = -1; + // Note: the native parser cannot handle MaxIPv4Value, only MaxIPv4Value - 1 + private const long MaxIPv4Value = UInt32.MaxValue; + private const int Octal = 8; + private const int Decimal = 10; + private const int Hex = 16; + + private const int NumberOfLabels = 4; + + // methods + // Parse and canonicalize + internal static string ParseCanonicalName(string str, int start, int end, ref bool isLoopback) + { + unsafe + { + byte* numbers = stackalloc byte[NumberOfLabels]; + isLoopback = Parse(str, numbers, start, end); + return numbers[0] + "." + numbers[1] + "." + numbers[2] + "." + numbers[3]; + } + } + + // Only called from the IPv6Helper, only parse the canonical format + internal static int ParseHostNumber(string str, int start, int end) + { + unsafe + { + byte* numbers = stackalloc byte[NumberOfLabels]; + ParseCanonical(str, numbers, start, end); + return (numbers[0] << 24) + (numbers[1] << 16) + (numbers[2] << 8) + numbers[3]; + } + } + + // + // IsValid + // + // Performs IsValid on a substring. Updates the index to where we + // believe the IPv4 address ends + // + // Inputs: + // name + // string containing possible IPv4 address + // + // start + // offset in to start checking for IPv4 address + // + // end + // offset in of the last character we can touch in the check + // + // Outputs: + // end + // index of last character in we checked + // + // allowIPv6 + // enables parsing IPv4 addresses embedded in IPv6 address literals + // + // notImplicitFile + // do not consider this URI holding an implicit filename + // + // unknownScheme + // the check is made on an unknown scheme (suppress IPv4 canonicalization) + // + // Assumes: + // The address string is terminated by either + // end of the string, characters ':' '/' '\' '?' + // + // + // Returns: + // bool + // + // Throws: + // Nothing + // + + //Remark: MUST NOT be used unless all input indexes are are verified and trusted. + internal unsafe static bool IsValid(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile, bool unknownScheme) + { + // IPv6 can only have canonical IPv4 embedded. Unknown schemes will not attempt parsing of non-canonical IPv4 addresses. + if (allowIPv6 || unknownScheme) + { + return IsValidCanonical(name, start, ref end, allowIPv6, notImplicitFile); + } + else + { + return ParseNonCanonical(name, start, ref end, notImplicitFile) != Invalid; + } + } + + // + // IsValidCanonical + // + // Checks if the substring is a valid canonical IPv4 address or an IPv4 address embedded in an IPv6 literal + // This is an attempt to parse ABNF productions from RFC3986, Section 3.2.2: + // IP-literal = "[" ( IPv6address / IPvFuture ) "]" + // IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet + // dec-octet = DIGIT ; 0-9 + // / %x31-39 DIGIT ; 10-99 + // / "1" 2DIGIT ; 100-199 + // / "2" %x30-34 DIGIT ; 200-249 + // / "25" %x30-35 ; 250-255 + // + internal unsafe static bool IsValidCanonical(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile) + { + int dots = 0; + int number = 0; + bool haveNumber = false; + bool firstCharIsZero = false; + + while (start < end) + { + char ch = name[start]; + if (allowIPv6) + { + // for ipv4 inside ipv6 the terminator is either ScopeId, prefix or ipv6 terminator + if (ch == ']' || ch == '/' || ch == '%') break; + } + else if (ch == '/' || ch == '\\' || (notImplicitFile && (ch == ':' || ch == '?' || ch == '#'))) + { + break; + } + + if (ch <= '9' && ch >= '0') + { + if (!haveNumber && (ch == '0')) + { + if ((start + 1 < end) && name[start + 1] == '0') + { + // 00 is not allowed as a prefix. + return false; + } + + firstCharIsZero = true; + } + + haveNumber = true; + number = number * 10 + (name[start] - '0'); + if (number > 255) + { + return false; + } + } + else if (ch == '.') + { + if (!haveNumber || (number > 0 && firstCharIsZero)) + { + // 0 is not allowed to prefix a number. + return false; + } + ++dots; + haveNumber = false; + number = 0; + firstCharIsZero = false; + } + else + { + return false; + } + ++start; + } + bool res = (dots == 3) && haveNumber; + if (res) + { + end = start; + } + return res; + } + + // Parse any canonical or noncanonical IPv4 formats and return a long between 0 and MaxIPv4Value. + // Return Invalid (-1) for failures. + // If the address has less than three dots, only the rightmost section is assumed to contain the combined value for + // the missing sections: 0xFF00FFFF == 0xFF.0x00.0xFF.0xFF == 0xFF.0xFFFF + internal unsafe static long ParseNonCanonical(char* name, int start, ref int end, bool notImplicitFile) + { + int numberBase = Decimal; + char ch; + long[] parts = new long[4]; + long currentValue = 0; + bool atLeastOneChar = false; + + // Parse one dotted section at a time + int dotCount = 0; // Limit 3 + int current = start; + for (; current < end; current++) + { + ch = name[current]; + currentValue = 0; + + // Figure out what base this section is in + numberBase = Decimal; + if (ch == '0') + { + numberBase = Octal; + current++; + atLeastOneChar = true; + if (current < end) + { + ch = name[current]; + if (ch == 'x' || ch == 'X') + { + numberBase = Hex; + current++; + atLeastOneChar = false; + } + } + } + + // Parse this section + for (; current < end; current++) + { + ch = name[current]; + int digitValue; + + if ((numberBase == Decimal || numberBase == Hex) && '0' <= ch && ch <= '9') + { + digitValue = ch - '0'; + } + else if (numberBase == Octal && '0' <= ch && ch <= '7') + { + digitValue = ch - '0'; + } + else if (numberBase == Hex && 'a' <= ch && ch <= 'f') + { + digitValue = ch + 10 - 'a'; + } + else if (numberBase == Hex && 'A' <= ch && ch <= 'F') + { + digitValue = ch + 10 - 'A'; + } + else + { + break; // Invalid/terminator + } + + currentValue = (currentValue * numberBase) + digitValue; + + if (currentValue > MaxIPv4Value) // Overflow + { + return Invalid; + } + + atLeastOneChar = true; + } + + if (current < end && name[current] == '.') + { + if (dotCount >= 3 // Max of 3 dots and 4 segments + || !atLeastOneChar // No empty segmets: 1...1 + // Only the last segment can be more than 255 (if there are less than 3 dots) + || currentValue > 0xFF) + { + return Invalid; + } + parts[dotCount] = currentValue; + dotCount++; + atLeastOneChar = false; + continue; + } + // We don't get here unless We find an invalid character or a terminator + break; + } + + // Terminators + if (!atLeastOneChar) + { + return Invalid; // Empty trailing segment: 1.1.1. + } + else if (current >= end) + { + // end of string, allowed + } + else if ((ch = name[current]) == '/' || ch == '\\' || (notImplicitFile && (ch == ':' || ch == '?' || ch == '#'))) + { + end = current; + } + else + { + // not a valid terminating character + return Invalid; + } + + parts[dotCount] = currentValue; + + // Parsed, reassemble and check for overflows + switch (dotCount) + { + case 0: // 0xFFFFFFFF + if (parts[0] > MaxIPv4Value) + { + return Invalid; + } + return parts[0]; + case 1: // 0xFF.0xFFFFFF + if (parts[1] > 0xffffff) + { + return Invalid; + } + return (parts[0] << 24) | (parts[1] & 0xffffff); + case 2: // 0xFF.0xFF.0xFFFF + if (parts[2] > 0xffff) + { + return Invalid; + } + return (parts[0] << 24) | ((parts[1] & 0xff) << 16) | (parts[2] & 0xffff); + case 3: // 0xFF.0xFF.0xFF.0xFF + if (parts[3] > 0xff) + { + return Invalid; + } + return (parts[0] << 24) | ((parts[1] & 0xff) << 16) | ((parts[2] & 0xff) << 8) | (parts[3] & 0xff); + default: + return Invalid; + } + } + + // + // Parse + // + // Convert this IPv4 address into a sequence of 4 8-bit numbers + // + unsafe private static bool Parse(string name, byte* numbers, int start, int end) + { + fixed (char* ipString = name) + { + int changedEnd = end; + long result = IPv4AddressHelper.ParseNonCanonical(ipString, start, ref changedEnd, true); + // end includes ports, so changedEnd may be different from end + Debug.Assert(result != Invalid, "Failed to parse after already validated: " + name); + + numbers[0] = (byte)(result >> 24); + numbers[1] = (byte)(result >> 16); + numbers[2] = (byte)(result >> 8); + numbers[3] = (byte)(result); + } + + return numbers[0] == 127; + } + + // Assumes: + // has been validated and contains only decimal digits in groups + // of 8-bit numbers and the characters '.' + // Address may terminate with ':' or with the end of the string + // + unsafe private static bool ParseCanonical(string name, byte* numbers, int start, int end) + { + for (int i = 0; i < NumberOfLabels; ++i) + { + + byte b = 0; + char ch; + for (; (start < end) && (ch = name[start]) != '.' && ch != ':'; ++start) + { + b = (byte)(b * 10 + (byte)(ch - '0')); + } + numbers[i] = b; + ++start; + } + return numbers[0] == 127; + } + } +} \ No newline at end of file diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs new file mode 100644 index 000000000000..32da47001231 --- /dev/null +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -0,0 +1,602 @@ +using System.Collections.Generic; +using System.Text; +using System.Globalization; + +namespace System +{ + + // The class designed as to keep minimal the working set of Uri class. + // The idea is to stay with static helper methods and strings + internal static class IPv6AddressHelper + { + + // fields + + private const int NumberOfLabels = 8; + // Upper case hex, zero padded to 4 characters + private const string LegacyFormat = "{0:X4}:{1:X4}:{2:X4}:{3:X4}:{4:X4}:{5:X4}:{6:X4}:{7:X4}"; + // Lower case hex, no leading zeros + private const string CanonicalNumberFormat = "{0:x}"; + private const string EmbeddedIPv4Format = ":{0:d}.{1:d}.{2:d}.{3:d}"; + private const string Separator = ":"; + + // methods + + internal static string ParseCanonicalName(string str, int start, ref bool isLoopback, ref string scopeId) + { + unsafe + { + ushort* numbers = stackalloc ushort[NumberOfLabels]; + // optimized zeroing of 8 shorts = 2 longs + ((long*)numbers)[0] = 0L; + ((long*)numbers)[1] = 0L; + isLoopback = Parse(str, numbers, start, ref scopeId); + return '[' + CreateCanonicalName(numbers) + ']'; + } + } + + internal unsafe static string CreateCanonicalName(ushort* numbers) + { + // RFC 5952 Sections 4 & 5 - Compressed, lower case, with possible embedded IPv4 addresses. + + // Start to finish, inclusive. <-1, -1> for no compression + KeyValuePair range = FindCompressionRange(numbers); + bool ipv4Embedded = ShouldHaveIpv4Embedded(numbers); + + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < NumberOfLabels; i++) + { + + if (ipv4Embedded && i == (NumberOfLabels - 2)) + { + // Write the remaining digits as an IPv4 address + builder.Append(string.Format(CultureInfo.InvariantCulture, EmbeddedIPv4Format, + numbers[i] >> 8, numbers[i] & 0xFF, numbers[i + 1] >> 8, numbers[i + 1] & 0xFF)); + break; + } + + // Compression; 1::1, ::1, 1:: + if (range.Key == i) + { // Start compression, add : + builder.Append(Separator); + } + if (range.Key <= i && range.Value == (NumberOfLabels - 1)) + { // Remainder compressed; 1:: + builder.Append(Separator); + break; + } + if (range.Key <= i && i <= range.Value) + { + continue; // Compressed + } + + if (i != 0) + { + builder.Append(Separator); + } + builder.Append(string.Format(CultureInfo.InvariantCulture, CanonicalNumberFormat, numbers[i])); + } + + return builder.ToString(); + } + + // RFC 5952 Section 4.2.3 + // Longest consecutive sequence of zero segments, minimum 2. + // On equal, first sequence wins. + // <-1, -1> for no compression. + private unsafe static KeyValuePair FindCompressionRange(ushort* numbers) + { + int longestSequenceLength = 0; + int longestSequenceStart = -1; + + int currentSequenceLength = 0; + for (int i = 0; i < NumberOfLabels; i++) + { + if (numbers[i] == 0) + { // In a sequence + currentSequenceLength++; + if (currentSequenceLength > longestSequenceLength) + { + longestSequenceLength = currentSequenceLength; + longestSequenceStart = i - currentSequenceLength + 1; + } + } + else + { + currentSequenceLength = 0; + } + } + + if (longestSequenceLength >= 2) + { + return new KeyValuePair(longestSequenceStart, + longestSequenceStart + longestSequenceLength - 1); + } + + return new KeyValuePair(-1, -1); // No compression + } + + // Returns true if the IPv6 address should be formated with an embedded IPv4 address: + // ::192.168.1.1 + private unsafe static bool ShouldHaveIpv4Embedded(ushort* numbers) + { + // 0:0 : 0:0 : x:x : x.x.x.x + if (numbers[0] == 0 && numbers[1] == 0 && numbers[2] == 0 && numbers[3] == 0 && numbers[6] != 0) + { + // RFC 5952 Section 5 - 0:0 : 0:0 : 0:[0 | FFFF] : x.x.x.x + if (numbers[4] == 0 && (numbers[5] == 0 || numbers[5] == 0xFFFF)) + { + return true; + } + // SIIT - 0:0 : 0:0 : FFFF:0 : x.x.x.x + else if (numbers[4] == 0xFFFF && numbers[5] == 0) + { + return true; + } + } + // ISATAP + if (numbers[4] == 0 && numbers[5] == 0x5EFE) + { + return true; + } + + return false; + } + + // + // InternalIsValid + // + // Determine whether a name is a valid IPv6 address. Rules are: + // + // * 8 groups of 16-bit hex numbers, separated by ':' + // * a *single* run of zeros can be compressed using the symbol '::' + // * an optional string of a ScopeID delimited by '%' + // * an optional (last) 1 or 2 character prefix length field delimited by '/' + // * the last 32 bits in an address can be represented as an IPv4 address + // + // Inputs: + // name + // Domain name field of a URI to check for pattern match with + // IPv6 address + // validateStrictAddress: if set to true, it expects strict ipv6 address. Otherwise it expects + // part of the string in ipv6 format. + // + // Outputs: + // Nothing + // + // Assumes: + // the correct name is terminated by ']' character + // + // Returns: + // true if has IPv6 format/ipv6 address based on validateStrictAddress, else false + // + // Throws: + // Nothing + // + + // Remarks: MUST NOT be used unless all input indexes are verified and trusted. + // start must be next to '[' position, or error is reported + unsafe private static bool InternalIsValid(char* name, int start, ref int end, bool validateStrictAddress) + { + + int sequenceCount = 0; + int sequenceLength = 0; + bool haveCompressor = false; + bool haveIPv4Address = false; + bool havePrefix = false; + bool expectingNumber = true; + int lastSequence = 1; + + int i; + for (i = start; i < end; ++i) + { + if (havePrefix ? (name[i] >= '0' && name[i] <= '9') : Uri.IsHexDigit(name[i])) + { + ++sequenceLength; + expectingNumber = false; + } + else + { + if (sequenceLength > 4) + { + return false; + } + if (sequenceLength != 0) + { + ++sequenceCount; + lastSequence = i - sequenceLength; + } + switch (name[i]) + { + case '%': + while (true) + { + //accept anything in scopeID + if (++i == end) + { + // no closing ']', fail + return false; + } + if (name[i] == ']') + { + goto case ']'; + } + else if (name[i] == '/') + { + goto case '/'; + } + } + case ']': + start = i; + i = end; + //this will make i = end+1 + continue; + case ':': + if ((i > 0) && (name[i - 1] == ':')) + { + if (haveCompressor) + { + + // + // can only have one per IPv6 address + // + + return false; + } + haveCompressor = true; + expectingNumber = false; + } + else + { + expectingNumber = true; + } + break; + + case '/': + if (validateStrictAddress) + { + return false; + } + if ((sequenceCount == 0) || havePrefix) + { + return false; + } + havePrefix = true; + expectingNumber = true; + break; + + case '.': + if (haveIPv4Address) + { + return false; + } + + i = end; + if (!IPv4AddressHelper.IsValid(name, lastSequence, ref i, true, false, false)) + { + return false; + } + // ipv4 address takes 2 slots in ipv6 address, one was just counted meeting the '.' + ++sequenceCount; + haveIPv4Address = true; + --i; // it will be incremented back on the next loop + break; + + default: + return false; + } + sequenceLength = 0; + } + } + + // + // if the last token was a prefix, check number of digits + // + + if (havePrefix && ((sequenceLength < 1) || (sequenceLength > 2))) + { + return false; + } + + // + // these sequence counts are -1 because it is implied in end-of-sequence + // + + int expectedSequenceCount = 8 + (havePrefix ? 1 : 0); + + if (!expectingNumber && (sequenceLength <= 4) && (haveCompressor ? (sequenceCount < expectedSequenceCount) : (sequenceCount == expectedSequenceCount))) + { + if (i == end + 1) + { + // ']' was found + end = start + 1; + return true; + } + return false; + } + return false; + } + + // + // IsValid + // + // Determine whether a name is a valid IPv6 address. Rules are: + // + // * 8 groups of 16-bit hex numbers, separated by ':' + // * a *single* run of zeros can be compressed using the symbol '::' + // * an optional string of a ScopeID delimited by '%' + // * an optional (last) 1 or 2 character prefix length field delimited by '/' + // * the last 32 bits in an address can be represented as an IPv4 address + // + // Inputs: + // name + // Domain name field of a URI to check for pattern match with + // IPv6 address + // + // Outputs: + // Nothing + // + // Assumes: + // the correct name is terminated by ']' character + // + // Returns: + // true if has IPv6 format, else false + // + // Throws: + // Nothing + // + + // Remarks: MUST NOT be used unless all input indexes are are verified and trusted. + // start must be next to '[' position, or error is reported + + internal unsafe static bool IsValid(char* name, int start, ref int end) + { + return InternalIsValid(name, start, ref end, false); + } + + // + // IsValidStrict + // + // Determine whether a name is a valid IPv6 address. Rules are: + // + // * 8 groups of 16-bit hex numbers, separated by ':' + // * a *single* run of zeros can be compressed using the symbol '::' + // * an optional string of a ScopeID delimited by '%' + // * the last 32 bits in an address can be represented as an IPv4 address + // + // Difference between IsValid() and IsValidStrict() is that IsValid() expects part of the string to + // be ipv6 address where as IsValidStrict() expects strict ipv6 address. + // + // Inputs: + // name + // IPv6 address in string format + // + // Outputs: + // Nothing + // + // Assumes: + // the correct name is terminated by ']' character + // + // Returns: + // true if is IPv6 address, else false + // + // Throws: + // Nothing + // + + // Remarks: MUST NOT be used unless all input indexes are verified and trusted. + // start must be next to '[' position, or error is reported + internal unsafe static bool IsValidStrict(char* name, int start, ref int end) + { + return InternalIsValid(name, start, ref end, true); + } + + // + // Parse + // + // Convert this IPv6 address into a sequence of 8 16-bit numbers + // + // Inputs: + // Name + // The validated IPv6 address + // + // Outputs: + // numbers + // Array filled in with the numbers in the IPv6 groups + // + // PrefixLength + // Set to the number after the prefix separator (/) if found + // + // Assumes: + // has been validated and contains only hex digits in groups of + // 16-bit numbers, the characters ':' and '/', and a possible IPv4 + // address + // + // Returns: + // true if this is a loopback, false otherwise. There is no falure indication as the sting must be a valid one. + // + // Throws: + // Nothing + // + + unsafe internal static bool Parse(string address, ushort* numbers, int start, ref string scopeId) + { + + int number = 0; + int index = 0; + int compressorIndex = -1; + bool numberIsValid = true; + + //This used to be a class instance member but have not been used so far + int PrefixLength = 0; + if (address[start] == '[') + { + ++start; + } + + for (int i = start; i < address.Length && address[i] != ']';) + { + switch (address[i]) + { + case '%': + if (numberIsValid) + { + numbers[index++] = (ushort)number; + numberIsValid = false; + } + + start = i; + for (++i; address[i] != ']' && address[i] != '/'; ++i) + { + ; + } + scopeId = address.Substring(start, i - start); + // ignore prefix if any + for (; address[i] != ']'; ++i) + { + ; + } + break; + + case ':': + numbers[index++] = (ushort)number; + number = 0; + ++i; + if (address[i] == ':') + { + compressorIndex = index; + ++i; + } + else if ((compressorIndex < 0) && (index < 6)) + { + + // + // no point checking for IPv4 address if we don't + // have a compressor or we haven't seen 6 16-bit + // numbers yet + // + + break; + } + + // + // check to see if the upcoming number is really an IPv4 + // address. If it is, convert it to 2 ushort numbers + // + + for (int j = i; (address[j] != ']') && + (address[j] != ':') && + (address[j] != '%') && + (address[j] != '/') && + (j < i + 4); ++j) + { + + if (address[j] == '.') + { + + // + // we have an IPv4 address. Find the end of it: + // we know that since we have a valid IPv6 + // address, the only things that will terminate + // the IPv4 address are the prefix delimiter '/' + // or the end-of-string (which we conveniently + // delimited with ']') + // + + while ((address[j] != ']') && (address[j] != '/') && (address[j] != '%')) + { + ++j; + } + number = IPv4AddressHelper.ParseHostNumber(address, i, j); + numbers[index++] = (ushort)(number >> 16); + numbers[index++] = (ushort)number; + i = j; + + // + // set this to avoid adding another number to + // the array if there's a prefix + // + + number = 0; + numberIsValid = false; + break; + } + } + break; + + case '/': + if (numberIsValid) + { + numbers[index++] = (ushort)number; + numberIsValid = false; + } + + // + // since we have a valid IPv6 address string, the prefix + // length is the last token in the string + // + + for (++i; address[i] != ']'; ++i) + { + PrefixLength = PrefixLength * 10 + (address[i] - '0'); + } + break; + + default: + number = number * 16 + Uri.FromHex(address[i++]); + break; + } + } + + // + // add number to the array if its not the prefix length or part of + // an IPv4 address that's already been handled + // + + if (numberIsValid) + { + numbers[index++] = (ushort)number; + } + + // + // if we had a compressor sequence ("::") then we need to expand the + // numbers array + // + + if (compressorIndex > 0) + { + + int toIndex = NumberOfLabels - 1; + int fromIndex = index - 1; + + for (int i = index - compressorIndex; i > 0; --i) + { + numbers[toIndex--] = numbers[fromIndex]; + numbers[fromIndex--] = 0; + } + } + + // + // is the address loopback? Loopback is defined as one of: + // + // 0:0:0:0:0:0:0:1 + // 0:0:0:0:0:0:127.0.0.1 == 0:0:0:0:0:0:7F00:0001 + // 0:0:0:0:0:FFFF:127.0.0.1 == 0:0:0:0:0:FFFF:7F00:0001 + // + + return ((numbers[0] == 0) + && (numbers[1] == 0) + && (numbers[2] == 0) + && (numbers[3] == 0) + && (numbers[4] == 0)) + && (((numbers[5] == 0) + && (numbers[6] == 0) + && (numbers[7] == 1)) + || (((numbers[6] == 0x7F00) + && (numbers[7] == 0x0001)) + && ((numbers[5] == 0) + || (numbers[5] == 0xFFFF)))); + + } + } +} From 7eeeebdf1e4afd4ec102b66adb5d00b2494fe606 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 17 Apr 2017 15:57:07 -0400 Subject: [PATCH 159/336] Implement IPAddress.ToString in managed code for IPv4 addresses It has the same or better perf, it involves no native code, it doesn't require maintaining two separate Windows and Unix implementations, it involves fewer allocations, etc. --- .../src/System/Net/IPAddress.cs | 2 +- .../src/System/Net/IPAddressPal.Unix.cs | 16 ++------- .../src/System/Net/IPAddressPal.Windows.cs | 11 ------ .../src/System/Net/IPAddressParser.cs | 36 +++++++++++++------ 4 files changed, 29 insertions(+), 36 deletions(-) diff --git a/src/System.Net.Primitives/src/System/Net/IPAddress.cs b/src/System.Net.Primitives/src/System/Net/IPAddress.cs index 4f0a60f5a2c1..d8a418f64546 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddress.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddress.cs @@ -347,7 +347,7 @@ public override string ToString() if (_toString == null) { _toString = IsIPv4 ? - IPAddressParser.IPv4AddressToString(GetAddressBytes()) : + IPAddressParser.IPv4AddressToString(PrivateAddress) : IPAddressParser.IPv6AddressToString(GetAddressBytes(), PrivateScopeId); } diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs index 8cb0338185d2..9db0c81ab68d 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs @@ -10,17 +10,7 @@ namespace System.Net { internal static class IPAddressPal { - public const uint SuccessErrorCode = 0; - - public static unsafe uint Ipv4AddressToString(byte[] address, StringBuilder buffer) - { - Debug.Assert(address != null); - Debug.Assert(address.Length == IPAddressParserStatics.IPv4AddressBytes); - Debug.Assert(buffer != null); - Debug.Assert(buffer.Capacity >= IPAddressParser.INET_ADDRSTRLEN); - - return Interop.Sys.IPAddressToString(address, false, buffer); - } + public const uint SuccessErrorCode = (uint)SocketError.Success; public static unsafe uint Ipv6AddressToString(byte[] address, uint scopeId, StringBuilder buffer) { @@ -55,7 +45,7 @@ public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int bytes[1] = (byte)((0x00FF0000 & address) >> 16); bytes[2] = (byte)((0x0000FF00 & address) >> 8); bytes[3] = (byte)((0x000000FF & address) >> 0); - return (uint)SocketError.Success; + return SuccessErrorCode; } public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) @@ -115,7 +105,7 @@ public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytes[i * 2 + 1] = (byte)(numbers[i] & 0xFF); bytes[i * 2] = (byte)((numbers[i] & 0xFF00) >> 8); } - return (uint)SocketError.Success; + return SuccessErrorCode; } } diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs index 170f09341801..d8b1a93f4c68 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs @@ -12,17 +12,6 @@ internal static class IPAddressPal { public const uint SuccessErrorCode = Interop.StatusOptions.STATUS_SUCCESS; - public static uint Ipv4AddressToString(byte[] address, StringBuilder buffer) - { - Debug.Assert(address != null); - Debug.Assert(address.Length == IPAddressParserStatics.IPv4AddressBytes); - Debug.Assert(buffer != null); - Debug.Assert(buffer.Capacity >= IPAddressParser.INET_ADDRSTRLEN); - - uint length = (uint)buffer.Capacity; - return Interop.NtDll.RtlIpv4AddressToStringExW(address, 0, buffer, ref length); - } - public static uint Ipv6AddressToString(byte[] address, uint scopeId, StringBuilder buffer) { Debug.Assert(address != null); diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs index 6b2752217005..4c494a2cb5b8 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs @@ -70,19 +70,21 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) throw new FormatException(SR.dns_bad_ip_address, e); } - internal static string IPv4AddressToString(byte[] numbers) + internal static unsafe string IPv4AddressToString(uint address) { - StringBuilder sb = new StringBuilder(INET_ADDRSTRLEN); - uint errorCode = IPAddressPal.Ipv4AddressToString(numbers, sb); + const int MaxLength = 15; + char* addressString = stackalloc char[MaxLength]; + int offset = MaxLength; - if (errorCode == IPAddressPal.SuccessErrorCode) - { - return sb.ToString(); - } - else - { - throw new SocketException(IPAddressPal.GetSocketErrorForErrorCode(errorCode), errorCode); - } + FormatIPv4AddressNumber((int)((address >> 24) & 0xFF), addressString, ref offset); + addressString[--offset] = '.'; + FormatIPv4AddressNumber((int)((address >> 16) & 0xFF), addressString, ref offset); + addressString[--offset] = '.'; + FormatIPv4AddressNumber((int)((address >> 8) & 0xFF), addressString, ref offset); + addressString[--offset] = '.'; + FormatIPv4AddressNumber((int)(address & 0xFF), addressString, ref offset); + + return new string(addressString, offset, MaxLength - offset); } internal static string IPv6AddressToString(byte[] numbers, uint scopeId) @@ -99,5 +101,17 @@ internal static string IPv6AddressToString(byte[] numbers, uint scopeId) throw new SocketException(IPAddressPal.GetSocketErrorForErrorCode(errorCode), errorCode); } } + + private static unsafe void FormatIPv4AddressNumber(int number, char* addressString, ref int offset) + { + int i = offset; + do + { + int rem; + number = Math.DivRem(number, 10, out rem); + addressString[--i] = (char)('0' + rem); + } while (number != 0); + offset = i; + } } } From dc1947b97b78714233dde522a015b341cd3373e0 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 17 Apr 2017 23:38:46 -0400 Subject: [PATCH 160/336] Implement IPv6AddressToString in managed code for Unix Along the way, avoid some allocations in the Windows code, too. --- .../NtDll/Interop.RtlIpv6AddressToStringEx.cs | 4 +- .../src/System/Net/IPAddress.cs | 29 ++- .../src/System/Net/IPAddressPal.Unix.cs | 167 +++++++++++++++++- .../src/System/Net/IPAddressPal.Windows.cs | 9 +- .../src/System/Net/IPAddressParser.cs | 2 +- 5 files changed, 194 insertions(+), 17 deletions(-) diff --git a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs index 36cb39e1fb12..90f611a5cdc8 100644 --- a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs +++ b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs @@ -10,8 +10,8 @@ internal static partial class Interop internal static partial class NtDll { [DllImport(Interop.Libraries.NtDll, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal extern static uint RtlIpv6AddressToStringExW( - [In] byte[] address, + internal extern static unsafe uint RtlIpv6AddressToStringExW( + [In] byte* address, [In] uint scopeId, [In] ushort port, [Out] StringBuilder addressString, diff --git a/src/System.Net.Primitives/src/System/Net/IPAddress.cs b/src/System.Net.Primitives/src/System/Net/IPAddress.cs index d8a418f64546..c5d127c38a11 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddress.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddress.cs @@ -176,6 +176,7 @@ internal unsafe IPAddress(byte* address, int addressLength, long scopeid) private IPAddress(ushort[] numbers, uint scopeid) { Debug.Assert(numbers != null); + Debug.Assert(numbers.Length == NumberOfLabels); _numbers = numbers; PrivateScopeId = scopeid; @@ -257,6 +258,20 @@ public static IPAddress Parse(string ipString) return IPAddressParser.Parse(ipString, false); } + internal static unsafe void FillIPv6AddressBytes(ushort[] numbers, byte* bytes, int bytesLength) + { + Debug.Assert(numbers != null); + Debug.Assert(numbers.Length == NumberOfLabels); + Debug.Assert(bytesLength == numbers.Length * 2); + + int j = 0; + for (int i = 0; i < NumberOfLabels; i++) + { + bytes[j++] = (byte)((numbers[i] >> 8) & 0xFF); + bytes[j++] = (byte)((numbers[i]) & 0xFF); + } + } + /// /// /// Provides a copy of the IPAddress internals as an array of bytes. @@ -267,13 +282,13 @@ public byte[] GetAddressBytes() byte[] bytes; if (IsIPv6) { - bytes = new byte[NumberOfLabels * 2]; - - int j = 0; - for (int i = 0; i < NumberOfLabels; i++) + bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; + unsafe { - bytes[j++] = (byte)((_numbers[i] >> 8) & 0xFF); - bytes[j++] = (byte)((_numbers[i]) & 0xFF); + fixed (byte* bytesPtr = &bytes[0]) + { + FillIPv6AddressBytes(_numbers, bytesPtr, IPAddressParserStatics.IPv6AddressBytes); + } } } else @@ -348,7 +363,7 @@ public override string ToString() { _toString = IsIPv4 ? IPAddressParser.IPv4AddressToString(PrivateAddress) : - IPAddressParser.IPv6AddressToString(GetAddressBytes(), PrivateScopeId); + IPAddressParser.IPv6AddressToString(_numbers, PrivateScopeId); } return _toString; diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs index 9db0c81ab68d..72b79a9e5432 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs @@ -12,14 +12,68 @@ internal static class IPAddressPal { public const uint SuccessErrorCode = (uint)SocketError.Success; - public static unsafe uint Ipv6AddressToString(byte[] address, uint scopeId, StringBuilder buffer) + public static unsafe uint Ipv6AddressToString(ushort[] address, uint scopeId, StringBuilder buffer) { Debug.Assert(address != null); - Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressBytes); + Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressBytes / 2); Debug.Assert(buffer != null); - Debug.Assert(buffer.Capacity >= IPAddressParser.INET6_ADDRSTRLEN); - return Interop.Sys.IPAddressToString(address, true, buffer, scopeId); + // Based on the byte pattern, determine if the address is compatible with IPv4 + // and thus ends with a standard IPv4 address we need to output as such. This + // includes IPv4 mapped addresses, IPv4 compatible addresses, SIIT addresses, + // and ISATAP addresses. + + bool firstFourBytesAreZero = address[0] == 0 && address[1] == 0 && address[2] == 0 && address[3] == 0; + bool firstFiveBytesAreZero = firstFourBytesAreZero && address[4] == 0; + + if (firstFiveBytesAreZero && address[5] == 0xffff) // IPv4 mapped => 0:0:0:0:0:FFFF:w.x.y.z + { + buffer.Append("::ffff:"); + if (address[6] == 0) + { + buffer.Append("0:"); + AppendHex(address[7], buffer); + } + else + { + buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); + } + } + else if (firstFiveBytesAreZero && address[5] == 0) // IPv4 compatible => 0:0:0:0:0:0:w.x.y.z + { + buffer.Append("::"); + if (address[6] != 0) + { + buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); + } + else if (address[7] != 0) + { + AppendHex(address[7], buffer); + } + } + else if (firstFourBytesAreZero && address[4] == 0xffff && address[5] == 0) // Stateless IP/ICMP Translation (SIIT) => ::ffff:0:w.x.y.z + { + buffer.Append("::ffff:0:"); + buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); + } + else if (address[4] == 0 && address[5] == 0x5efe) // Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) => ...::0:5EFE:w.x.y.z + { + AppendSections(address, 0, 4, buffer); + buffer.Append("5efe:"); + buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); + } + else // General IPv6 address + { + AppendSections(address, 0, address.Length, buffer); + } + + // Append the scope ID if we have one to any of the styles + if (scopeId != 0) + { + buffer.Append('%').Append(scopeId); + } + + return SuccessErrorCode; } public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int bytesLength, out ushort port) @@ -113,5 +167,110 @@ public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int } public static SocketError GetSocketErrorForErrorCode(uint status) => (SocketError)status; + + /// + /// Appends each of the numbers in address in indexed range [fromInclusive, toExclusive), + /// while also replacing the longest sequence of 0s found in that range with "::", as long + /// as the sequence is more than one 0. + /// + private static void AppendSections(ushort[] address, int fromInclusive, int toExclusive, StringBuilder buffer) + { + // Find the longest sequence of zeros to be combined into a "::" + (int zeroStart, int zeroEnd) = FindLongestZeroSequence(address, fromInclusive, toExclusive); + bool needsColon = false; + + // Output all of the numbers before the zero sequence + for (int i = fromInclusive; i < zeroStart; i++) + { + if (needsColon) + buffer.Append(':'); + needsColon = true; + AppendHex(address[i], buffer); + } + + // Output the zero sequence if there is one + if (zeroStart >= 0) + { + buffer.Append("::"); + needsColon = false; + fromInclusive = zeroEnd; + } + + // Output everything after the zero sequence + for (int i = fromInclusive; i < toExclusive; i++) + { + if (needsColon) + buffer.Append(':'); + needsColon = true; + AppendHex(address[i], buffer); + } + } + + /// Appends a number as hexadecimal (without the leading "0x") to the StringBuilder. + private static unsafe void AppendHex(int value, StringBuilder buffer) + { + const int MaxLength = 8; + char* chars = stackalloc char[MaxLength]; + int len = 0; + + do + { + int rem; + value = Math.DivRem(value, 16, out rem); + chars[len++] = rem < 10 ? + (char)('0' + rem) : + (char)('a' + (rem - 10)); + } + while (value != 0); + + int mid = len / 2; + for (int i = 0; i < mid; i++) + { + char c = chars[i]; + chars[i] = chars[len - i - 1]; + chars[len - i - 1] = c; + } + + buffer.Append(chars, len); + } + + /// Finds the longest sequence of zeros in the array, in the indexed range [fromInclusive, toExclusive). + private static (int zeroStart, int zeroEnd) FindLongestZeroSequence(ushort[] address, int fromInclusive, int toExclusive) + { + int bestStart = -1; + int bestLength = 0; + int curLength = 0; + + for (int i = fromInclusive; i < toExclusive; i++) + { + if (address[i] == 0) + { + curLength++; + } + else + { + if (curLength > bestLength) + { + bestLength = curLength; + bestStart = i - curLength; + } + curLength = 0; + } + } + + if (curLength > bestLength) + { + bestLength = curLength; + bestStart = toExclusive - curLength; + } + + return bestLength > 1 ? (bestStart, bestStart + bestLength) : (-1, 0); + } + + /// Extracts the IPv4 address from the end of the IPv6 address byte array. + private static uint ExtractIPv4Address(ushort[] address) => (uint)(Reverse(address[7]) << 16) | Reverse(address[6]); + + /// Reverses the two bytes in the ushort. + private static ushort Reverse(ushort number) => (ushort)(((number >> 8) & 0xFF) | ((number << 8) & 0xFF00)); } } diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs index d8b1a93f4c68..1ab19e46f5a5 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs @@ -12,13 +12,16 @@ internal static class IPAddressPal { public const uint SuccessErrorCode = Interop.StatusOptions.STATUS_SUCCESS; - public static uint Ipv6AddressToString(byte[] address, uint scopeId, StringBuilder buffer) + public static unsafe uint Ipv6AddressToString(ushort[] numbers, uint scopeId, StringBuilder buffer) { - Debug.Assert(address != null); - Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressBytes); + Debug.Assert(numbers != null); + Debug.Assert(numbers.Length == IPAddressParserStatics.IPv6AddressBytes / 2); Debug.Assert(buffer != null); Debug.Assert(buffer.Capacity >= IPAddressParser.INET6_ADDRSTRLEN); + byte* address = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; + IPAddress.FillIPv6AddressBytes(numbers, address, IPAddressParserStatics.IPv6AddressBytes); + uint length = (uint)buffer.Capacity; return Interop.NtDll.RtlIpv6AddressToStringExW(address, scopeId, 0, buffer, ref length); } diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs index 4c494a2cb5b8..3e8c3e52b969 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs @@ -87,7 +87,7 @@ internal static unsafe string IPv4AddressToString(uint address) return new string(addressString, offset, MaxLength - offset); } - internal static string IPv6AddressToString(byte[] numbers, uint scopeId) + internal static string IPv6AddressToString(ushort[] numbers, uint scopeId) { StringBuilder sb = new StringBuilder(INET6_ADDRSTRLEN); uint errorCode = IPAddressPal.Ipv6AddressToString(numbers, scopeId, sb); From 586acfae50b8357039e5a69ab662c6e14145dd7f Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 00:01:39 -0400 Subject: [PATCH 161/336] Remove duplication in IPAddressHelpers and some cleanup --- .../src/System/Net/IPAddressPal.Unix.cs | 87 ++-------- .../src/System/Net/IPv4AddressHelper.cs | 68 ++------ .../src/System/Net/IPv6AddressHelper.cs | 162 +++--------------- .../tests/FunctionalTests/IPAddressParsing.cs | 1 + .../tests/FunctionalTests/IPAddressTest.cs | 38 ---- 5 files changed, 50 insertions(+), 306 deletions(-) diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs index 72b79a9e5432..71f79411f775 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs @@ -18,56 +18,20 @@ public static unsafe uint Ipv6AddressToString(ushort[] address, uint scopeId, St Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressBytes / 2); Debug.Assert(buffer != null); - // Based on the byte pattern, determine if the address is compatible with IPv4 - // and thus ends with a standard IPv4 address we need to output as such. This - // includes IPv4 mapped addresses, IPv4 compatible addresses, SIIT addresses, - // and ISATAP addresses. - - bool firstFourBytesAreZero = address[0] == 0 && address[1] == 0 && address[2] == 0 && address[3] == 0; - bool firstFiveBytesAreZero = firstFourBytesAreZero && address[4] == 0; - - if (firstFiveBytesAreZero && address[5] == 0xffff) // IPv4 mapped => 0:0:0:0:0:FFFF:w.x.y.z - { - buffer.Append("::ffff:"); - if (address[6] == 0) - { - buffer.Append("0:"); - AppendHex(address[7], buffer); - } - else - { - buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); - } - } - else if (firstFiveBytesAreZero && address[5] == 0) // IPv4 compatible => 0:0:0:0:0:0:w.x.y.z + if (IPv6AddressHelper.ShouldHaveIpv4Embedded(address)) { - buffer.Append("::"); - if (address[6] != 0) - { - buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); - } - else if (address[7] != 0) + AppendSections(address, 0, 6, buffer); + if (buffer[buffer.Length - 1] != ':') { - AppendHex(address[7], buffer); + buffer.Append(':'); } - } - else if (firstFourBytesAreZero && address[4] == 0xffff && address[5] == 0) // Stateless IP/ICMP Translation (SIIT) => ::ffff:0:w.x.y.z - { - buffer.Append("::ffff:0:"); - buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); - } - else if (address[4] == 0 && address[5] == 0x5efe) // Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) => ...::0:5EFE:w.x.y.z - { - AppendSections(address, 0, 4, buffer); - buffer.Append("5efe:"); buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); } - else // General IPv6 address + else { - AppendSections(address, 0, address.Length, buffer); + AppendSections(address, 0, 8, buffer); } - // Append the scope ID if we have one to any of the styles if (scopeId != 0) { buffer.Append('%').Append(scopeId); @@ -176,14 +140,16 @@ public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int private static void AppendSections(ushort[] address, int fromInclusive, int toExclusive, StringBuilder buffer) { // Find the longest sequence of zeros to be combined into a "::" - (int zeroStart, int zeroEnd) = FindLongestZeroSequence(address, fromInclusive, toExclusive); + (int zeroStart, int zeroEnd) = IPv6AddressHelper.FindCompressionRange(address, fromInclusive, toExclusive); bool needsColon = false; // Output all of the numbers before the zero sequence for (int i = fromInclusive; i < zeroStart; i++) { if (needsColon) + { buffer.Append(':'); + } needsColon = true; AppendHex(address[i], buffer); } @@ -200,7 +166,9 @@ private static void AppendSections(ushort[] address, int fromInclusive, int toEx for (int i = fromInclusive; i < toExclusive; i++) { if (needsColon) + { buffer.Append(':'); + } needsColon = true; AppendHex(address[i], buffer); } @@ -234,39 +202,6 @@ private static unsafe void AppendHex(int value, StringBuilder buffer) buffer.Append(chars, len); } - /// Finds the longest sequence of zeros in the array, in the indexed range [fromInclusive, toExclusive). - private static (int zeroStart, int zeroEnd) FindLongestZeroSequence(ushort[] address, int fromInclusive, int toExclusive) - { - int bestStart = -1; - int bestLength = 0; - int curLength = 0; - - for (int i = fromInclusive; i < toExclusive; i++) - { - if (address[i] == 0) - { - curLength++; - } - else - { - if (curLength > bestLength) - { - bestLength = curLength; - bestStart = i - curLength; - } - curLength = 0; - } - } - - if (curLength > bestLength) - { - bestLength = curLength; - bestStart = toExclusive - curLength; - } - - return bestLength > 1 ? (bestStart, bestStart + bestLength) : (-1, 0); - } - /// Extracts the IPv4 address from the end of the IPv6 address byte array. private static uint ExtractIPv4Address(ushort[] address) => (uint)(Reverse(address[7]) << 16) | Reverse(address[6]); diff --git a/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs index 16d06eaa5037..fe8f1a5eebfb 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs @@ -1,43 +1,25 @@ -using System.Diagnostics; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. namespace System { - - // The class designed as to keep minimal the working set of Uri class. - // The idea is to stay with static helper methods and strings internal static class IPv4AddressHelper { - internal const long Invalid = -1; - // Note: the native parser cannot handle MaxIPv4Value, only MaxIPv4Value - 1 - private const long MaxIPv4Value = UInt32.MaxValue; + private const long MaxIPv4Value = uint.MaxValue; // the native parser cannot handle MaxIPv4Value, only MaxIPv4Value - 1 private const int Octal = 8; private const int Decimal = 10; private const int Hex = 16; private const int NumberOfLabels = 4; - // methods - // Parse and canonicalize - internal static string ParseCanonicalName(string str, int start, int end, ref bool isLoopback) - { - unsafe - { - byte* numbers = stackalloc byte[NumberOfLabels]; - isLoopback = Parse(str, numbers, start, end); - return numbers[0] + "." + numbers[1] + "." + numbers[2] + "." + numbers[3]; - } - } - // Only called from the IPv6Helper, only parse the canonical format - internal static int ParseHostNumber(string str, int start, int end) + internal static unsafe int ParseHostNumber(string str, int start, int end) { - unsafe - { - byte* numbers = stackalloc byte[NumberOfLabels]; - ParseCanonical(str, numbers, start, end); - return (numbers[0] << 24) + (numbers[1] << 16) + (numbers[2] << 8) + numbers[3]; - } + byte* numbers = stackalloc byte[NumberOfLabels]; + ParseCanonical(str, numbers, start, end); + return (numbers[0] << 24) + (numbers[1] << 16) + (numbers[2] << 8) + numbers[3]; } // @@ -82,7 +64,7 @@ internal static int ParseHostNumber(string str, int start, int end) // //Remark: MUST NOT be used unless all input indexes are are verified and trusted. - internal unsafe static bool IsValid(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile, bool unknownScheme) + internal static unsafe bool IsValid(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile, bool unknownScheme) { // IPv6 can only have canonical IPv4 embedded. Unknown schemes will not attempt parsing of non-canonical IPv4 addresses. if (allowIPv6 || unknownScheme) @@ -108,7 +90,7 @@ internal unsafe static bool IsValid(char* name, int start, ref int end, bool all // / "2" %x30-34 DIGIT ; 200-249 // / "25" %x30-35 ; 250-255 // - internal unsafe static bool IsValidCanonical(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile) + internal static unsafe bool IsValidCanonical(char* name, int start, ref int end, bool allowIPv6, bool notImplicitFile) { int dots = 0; int number = 0; @@ -121,7 +103,8 @@ internal unsafe static bool IsValidCanonical(char* name, int start, ref int end, if (allowIPv6) { // for ipv4 inside ipv6 the terminator is either ScopeId, prefix or ipv6 terminator - if (ch == ']' || ch == '/' || ch == '%') break; + if (ch == ']' || ch == '/' || ch == '%') + break; } else if (ch == '/' || ch == '\\' || (notImplicitFile && (ch == ':' || ch == '?' || ch == '#'))) { @@ -178,7 +161,7 @@ internal unsafe static bool IsValidCanonical(char* name, int start, ref int end, // Return Invalid (-1) for failures. // If the address has less than three dots, only the rightmost section is assumed to contain the combined value for // the missing sections: 0xFF00FFFF == 0xFF.0x00.0xFF.0xFF == 0xFF.0xFFFF - internal unsafe static long ParseNonCanonical(char* name, int start, ref int end, bool notImplicitFile) + internal static unsafe long ParseNonCanonical(char* name, int start, ref int end, bool notImplicitFile) { int numberBase = Decimal; char ch; @@ -321,35 +304,12 @@ internal unsafe static long ParseNonCanonical(char* name, int start, ref int end } } - // - // Parse - // - // Convert this IPv4 address into a sequence of 4 8-bit numbers - // - unsafe private static bool Parse(string name, byte* numbers, int start, int end) - { - fixed (char* ipString = name) - { - int changedEnd = end; - long result = IPv4AddressHelper.ParseNonCanonical(ipString, start, ref changedEnd, true); - // end includes ports, so changedEnd may be different from end - Debug.Assert(result != Invalid, "Failed to parse after already validated: " + name); - - numbers[0] = (byte)(result >> 24); - numbers[1] = (byte)(result >> 16); - numbers[2] = (byte)(result >> 8); - numbers[3] = (byte)(result); - } - - return numbers[0] == 127; - } - // Assumes: // has been validated and contains only decimal digits in groups // of 8-bit numbers and the characters '.' // Address may terminate with ':' or with the end of the string // - unsafe private static bool ParseCanonical(string name, byte* numbers, int start, int end) + private static unsafe bool ParseCanonical(string name, byte* numbers, int start, int end) { for (int i = 0; i < NumberOfLabels; ++i) { diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index 32da47001231..37aca65bfba6 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -1,99 +1,31 @@ -using System.Collections.Generic; -using System.Text; -using System.Globalization; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; namespace System { - - // The class designed as to keep minimal the working set of Uri class. - // The idea is to stay with static helper methods and strings internal static class IPv6AddressHelper { - - // fields - private const int NumberOfLabels = 8; - // Upper case hex, zero padded to 4 characters - private const string LegacyFormat = "{0:X4}:{1:X4}:{2:X4}:{3:X4}:{4:X4}:{5:X4}:{6:X4}:{7:X4}"; - // Lower case hex, no leading zeros - private const string CanonicalNumberFormat = "{0:x}"; - private const string EmbeddedIPv4Format = ":{0:d}.{1:d}.{2:d}.{3:d}"; - private const string Separator = ":"; - - // methods - - internal static string ParseCanonicalName(string str, int start, ref bool isLoopback, ref string scopeId) - { - unsafe - { - ushort* numbers = stackalloc ushort[NumberOfLabels]; - // optimized zeroing of 8 shorts = 2 longs - ((long*)numbers)[0] = 0L; - ((long*)numbers)[1] = 0L; - isLoopback = Parse(str, numbers, start, ref scopeId); - return '[' + CreateCanonicalName(numbers) + ']'; - } - } - - internal unsafe static string CreateCanonicalName(ushort* numbers) - { - // RFC 5952 Sections 4 & 5 - Compressed, lower case, with possible embedded IPv4 addresses. - - // Start to finish, inclusive. <-1, -1> for no compression - KeyValuePair range = FindCompressionRange(numbers); - bool ipv4Embedded = ShouldHaveIpv4Embedded(numbers); - - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < NumberOfLabels; i++) - { - - if (ipv4Embedded && i == (NumberOfLabels - 2)) - { - // Write the remaining digits as an IPv4 address - builder.Append(string.Format(CultureInfo.InvariantCulture, EmbeddedIPv4Format, - numbers[i] >> 8, numbers[i] & 0xFF, numbers[i + 1] >> 8, numbers[i + 1] & 0xFF)); - break; - } - - // Compression; 1::1, ::1, 1:: - if (range.Key == i) - { // Start compression, add : - builder.Append(Separator); - } - if (range.Key <= i && range.Value == (NumberOfLabels - 1)) - { // Remainder compressed; 1:: - builder.Append(Separator); - break; - } - if (range.Key <= i && i <= range.Value) - { - continue; // Compressed - } - - if (i != 0) - { - builder.Append(Separator); - } - builder.Append(string.Format(CultureInfo.InvariantCulture, CanonicalNumberFormat, numbers[i])); - } - - return builder.ToString(); - } // RFC 5952 Section 4.2.3 // Longest consecutive sequence of zero segments, minimum 2. - // On equal, first sequence wins. - // <-1, -1> for no compression. - private unsafe static KeyValuePair FindCompressionRange(ushort* numbers) + // On equal, first sequence wins. <-1, -1> for no compression. + internal unsafe static (int longestSequenceStart, int longestSequenceLength) FindCompressionRange( + ushort[] numbers, int fromInclusive, int toExclusive) { - int longestSequenceLength = 0; - int longestSequenceStart = -1; + Debug.Assert(fromInclusive >= 0); + Debug.Assert(toExclusive <= NumberOfLabels); + Debug.Assert(fromInclusive <= toExclusive); + + int longestSequenceLength = 0, longestSequenceStart = -1, currentSequenceLength = 0; - int currentSequenceLength = 0; - for (int i = 0; i < NumberOfLabels; i++) + for (int i = fromInclusive; i < toExclusive; i++) { if (numbers[i] == 0) - { // In a sequence + { currentSequenceLength++; if (currentSequenceLength > longestSequenceLength) { @@ -107,18 +39,14 @@ private unsafe static KeyValuePair FindCompressionRange(ushort* number } } - if (longestSequenceLength >= 2) - { - return new KeyValuePair(longestSequenceStart, - longestSequenceStart + longestSequenceLength - 1); - } - - return new KeyValuePair(-1, -1); // No compression + return longestSequenceLength > 1 ? + (longestSequenceStart, longestSequenceStart + longestSequenceLength) : + (-1, -1); } - // Returns true if the IPv6 address should be formated with an embedded IPv4 address: + // Returns true if the IPv6 address should be formatted with an embedded IPv4 address: // ::192.168.1.1 - private unsafe static bool ShouldHaveIpv4Embedded(ushort* numbers) + internal unsafe static bool ShouldHaveIpv4Embedded(ushort[] numbers) { // 0:0 : 0:0 : x:x : x.x.x.x if (numbers[0] == 0 && numbers[1] == 0 && numbers[2] == 0 && numbers[3] == 0 && numbers[6] != 0) @@ -134,13 +62,9 @@ private unsafe static bool ShouldHaveIpv4Embedded(ushort* numbers) return true; } } - // ISATAP - if (numbers[4] == 0 && numbers[5] == 0x5EFE) - { - return true; - } - return false; + // ISATAP + return numbers[4] == 0 && numbers[5] == 0x5EFE; } // @@ -176,9 +100,8 @@ private unsafe static bool ShouldHaveIpv4Embedded(ushort* numbers) // Remarks: MUST NOT be used unless all input indexes are verified and trusted. // start must be next to '[' position, or error is reported - unsafe private static bool InternalIsValid(char* name, int start, ref int end, bool validateStrictAddress) + private static unsafe bool InternalIsValid(char* name, int start, ref int end, bool validateStrictAddress) { - int sequenceCount = 0; int sequenceLength = 0; bool haveCompressor = false; @@ -317,43 +240,6 @@ unsafe private static bool InternalIsValid(char* name, int start, ref int end, b return false; } - // - // IsValid - // - // Determine whether a name is a valid IPv6 address. Rules are: - // - // * 8 groups of 16-bit hex numbers, separated by ':' - // * a *single* run of zeros can be compressed using the symbol '::' - // * an optional string of a ScopeID delimited by '%' - // * an optional (last) 1 or 2 character prefix length field delimited by '/' - // * the last 32 bits in an address can be represented as an IPv4 address - // - // Inputs: - // name - // Domain name field of a URI to check for pattern match with - // IPv6 address - // - // Outputs: - // Nothing - // - // Assumes: - // the correct name is terminated by ']' character - // - // Returns: - // true if has IPv6 format, else false - // - // Throws: - // Nothing - // - - // Remarks: MUST NOT be used unless all input indexes are are verified and trusted. - // start must be next to '[' position, or error is reported - - internal unsafe static bool IsValid(char* name, int start, ref int end) - { - return InternalIsValid(name, start, ref end, false); - } - // // IsValidStrict // @@ -419,7 +305,7 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) // Nothing // - unsafe internal static bool Parse(string address, ushort* numbers, int start, ref string scopeId) + internal static unsafe bool Parse(string address, ushort* numbers, int start, ref string scopeId) { int number = 0; diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs index 4fbf62204072..91ae432ae54c 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs @@ -72,6 +72,7 @@ public void ParseIPv4_ValidAddress_Success(string address, string expected) [InlineData(" ")] // whitespace [InlineData(" 127.0.0.1")] // leading whitespace [InlineData("192.168.0.0/16")] // with subnet + [InlineData("192.168.0.0:80")] // with port [InlineData("192.168.0.1:80")] // with port [InlineData("157.3B191B")] // Hex without 0x [InlineData("1.1.1.0x")] // Empty trailing hex segment diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs index 23632875d717..4c0d94deb480 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs @@ -113,44 +113,6 @@ public static void Ctor_BytesScopeId_Invalid() AssertExtensions.Throws("scopeid", () => new IPAddress(ipV6AddressBytes1, MaxScopeId + 1)); } - [Theory] - [InlineData("192.168.0.1", "192.168.0.1")] //IpV4 - - [InlineData("Fe08::1", "fe08::1")] //IpV6... - [InlineData("[Fe08::1]", "fe08::1")] - [InlineData("[Fe08::1]:80", "fe08::1")] //Drop port - [InlineData("[Fe08::1]:0xFA", "fe08::1")] //Drop hex port - [InlineData("Fe08::1%13542", "fe08::1%13542")] //With scope id - public static void Parse_String_Success(string ipString, string expected) - { - Assert.Equal(expected, IPAddress.Parse(ipString).ToString()); - } - - [Theory] - [InlineData("")] //Empty string - - [InlineData("192.168.0.0/16")] //IpV4: Invalid format - [InlineData("192.168.0.0:80")] //IpV4: Port included - - [InlineData("Fe08::1]")] //IpV6: No leading bracket - [InlineData("[Fe08::1")] //IpV6: No trailing bracket - [InlineData("[Fe08::1]:80Z")] //IpV6: Invalid port - [InlineData("Fe08::/64")] //IpV6: Subnet fail - public static void Parse_String_Invalid(string ipString) - { - Assert.Throws(() => { IPAddress.Parse(ipString); }); - IPAddress ip; - Assert.False(IPAddress.TryParse(ipString, out ip)); - } - - [Fact] - public static void Parse_String_Invalid() - { - AssertExtensions.Throws("ipString", () => { IPAddress.Parse(null); }); - IPAddress ip; - Assert.False(IPAddress.TryParse(null, out ip)); - } - [Fact] public static void ScopeId_GetSet_Success() { From 621c562738ae22c8477979ce43b162cea18bb5e0 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 00:24:35 -0400 Subject: [PATCH 162/336] Add a few more test cases --- .../tests/FunctionalTests/IPAddressParsing.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs index 91ae432ae54c..f02f6f4e7663 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs @@ -279,13 +279,17 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData("Fe08::/64")] // with subnet [InlineData("[Fe08::1]:80Z")] // brackets and invalid port [InlineData("[Fe08::1")] // leading bracket + [InlineData("[[Fe08::1")] // two leading brackets [InlineData("Fe08::1]")] // trailing bracket + [InlineData("Fe08::1]]")] // two trailing brackets + [InlineData("[Fe08::1]]")] // one leading and two trailing brackets [InlineData("[1]")] // incomplete [InlineData(":1")] // leading single colon [InlineData("1:")] // trailing single colon [InlineData(" ::1")] // leading whitespace [InlineData("::1 ")] // trailing whitespace [InlineData("1::1::1")] // ambiguous failure + [InlineData("1234::ABCD:1234::ABCD:1234:ABCD")] // can only use :: once [InlineData("1:1\u67081:1:1")] // invalid char [InlineData("FE08::260.168.0.1")] // out of range [InlineData("::192.168.0.0x0")] // hex failure @@ -295,6 +299,8 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData(":%12")] // colon scope [InlineData("%12")] // just scope [InlineData("::%1a")] // alphanumeric scope + [InlineData("[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/")] // errneous ending slash after ignored port + [InlineData("::1234%0x12")] // invalid scope ID [InlineData("")] // empty public void ParseIPv6_InvalidAddress_ThrowsFormatException(string invalidAddress) { From 187c7c0066e6f9312562ae730ebb75da336274ae Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 08:42:19 -0400 Subject: [PATCH 163/336] Fix bugs in IPv6AddressHelper parsing A variety of invalid cases were being let through. --- .../src/System/Net/IPAddressPal.Unix.cs | 12 +-- .../src/System/Net/IPv6AddressHelper.cs | 87 +++++++++++++------ 2 files changed, 63 insertions(+), 36 deletions(-) diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs index 71f79411f775..12521ff677f3 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs @@ -74,20 +74,10 @@ public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int scope = 0; - int offset = 0; - if (ipString[0] != '[') - { - ipString = ipString + ']'; //for Uri parser to find the terminator. - } - else - { - offset = 1; - } - int end = ipString.Length; fixed (char* name = ipString) { - if (IPv6AddressHelper.IsValidStrict(name, offset, ref end) || (end != ipString.Length)) + if (IPv6AddressHelper.IsValidStrict(name, 0, ref end) || (end != ipString.Length)) { ushort* numbers = stackalloc ushort[IPAddressParserStatics.IPv6AddressBytes / 2]; string scopeId = null; diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index 37aca65bfba6..625e2f8a97f1 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -110,6 +110,13 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b bool expectingNumber = true; int lastSequence = 1; + bool needsClosingBracket = false; + if (start < end && name[start] == '[') + { + start++; + needsClosingBracket = true; + } + int i; for (i = start; i < end; ++i) { @@ -128,18 +135,14 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b { ++sequenceCount; lastSequence = i - sequenceLength; + sequenceLength = 0; } switch (name[i]) { case '%': - while (true) + while (i+1 < end) { - //accept anything in scopeID - if (++i == end) - { - // no closing ']', fail - return false; - } + i++; if (name[i] == ']') { goto case ']'; @@ -148,11 +151,44 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b { goto case '/'; } + else if (needsClosingBracket && (name[i] < '0' || name[i] > '9')) + { + return false; + } } + break; case ']': - start = i; - i = end; - //this will make i = end+1 + if (!needsClosingBracket) + { + return false; + } + needsClosingBracket = false; + if (i + 1 < end && name[i + 1] != ':') + { + return false; + } + if (i + 3 < end && name[i + 2] == '0' && name[i + 3] == 'x') + { + i += 4; + for (; i < end; i++) + { + if (!Uri.IsHexDigit(name[i])) + { + return false; + } + } + } + else + { + i += 2; + for (; i < end; i++) + { + if (name[i] < '0' || name[i] > '9') + { + return false; + } + } + } continue; case ':': if ((i > 0) && (name[i - 1] == ':')) @@ -201,6 +237,8 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b } // ipv4 address takes 2 slots in ipv6 address, one was just counted meeting the '.' ++sequenceCount; + lastSequence = i - sequenceLength; + sequenceLength = 0; haveIPv4Address = true; --i; // it will be incremented back on the next loop break; @@ -212,6 +250,13 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b } } + if (sequenceLength != 0) + { + ++sequenceCount; + lastSequence = i - sequenceLength; + sequenceLength = 0; + } + // // if the last token was a prefix, check number of digits // @@ -229,13 +274,7 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b if (!expectingNumber && (sequenceLength <= 4) && (haveCompressor ? (sequenceCount < expectedSequenceCount) : (sequenceCount == expectedSequenceCount))) { - if (i == end + 1) - { - // ']' was found - end = start + 1; - return true; - } - return false; + return !needsClosingBracket; } return false; } @@ -274,7 +313,7 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b // start must be next to '[' position, or error is reported internal unsafe static bool IsValidStrict(char* name, int start, ref int end) { - return InternalIsValid(name, start, ref end, true); + return InternalIsValid(name, start, ref end, validateStrictAddress:true); } // @@ -307,7 +346,6 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) internal static unsafe bool Parse(string address, ushort* numbers, int start, ref string scopeId) { - int number = 0; int index = 0; int compressorIndex = -1; @@ -332,15 +370,13 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re } start = i; - for (++i; address[i] != ']' && address[i] != '/'; ++i) + for (++i; i < address.Length && address[i] != ']' && address[i] != '/'; ++i) { - ; } scopeId = address.Substring(start, i - start); // ignore prefix if any - for (; address[i] != ']'; ++i) + for (; i < address.Length && address[i] != ']'; ++i) { - ; } break; @@ -370,7 +406,8 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re // address. If it is, convert it to 2 ushort numbers // - for (int j = i; (address[j] != ']') && + for (int j = i; j < address.Length && + (address[j] != ']') && (address[j] != ':') && (address[j] != '%') && (address[j] != '/') && @@ -389,7 +426,7 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re // delimited with ']') // - while ((address[j] != ']') && (address[j] != '/') && (address[j] != '%')) + while (j < address.Length && (address[j] != ']') && (address[j] != '/') && (address[j] != '%')) { ++j; } From 04cca0e5b949c2f73c339cf489df445a35966d80 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 10:16:53 -0400 Subject: [PATCH 164/336] Clean up after changes --- .../Unix/System.Native/Interop.IPAddress.cs | 29 ----- .../Unix/System.Native/pal_networking.cpp | 115 ------------------ .../Unix/System.Native/pal_networking.h | 15 --- .../src/System.Net.Primitives.csproj | 2 +- ...essPal.Unix.cs => IPAddressPal.Managed.cs} | 5 + .../src/System/Net/IPAddressParser.cs | 17 +-- .../src/System/Net/IPv6AddressHelper.cs | 8 +- .../tests/PalTests/IPAddressPalTest.cs | 90 ++++---------- .../System.Net.Primitives.Pal.Tests.csproj | 7 +- .../tests/UnitTests/Fakes/IPAddressPal.cs | 4 +- 10 files changed, 52 insertions(+), 240 deletions(-) rename src/System.Net.Primitives/src/System/Net/{IPAddressPal.Unix.cs => IPAddressPal.Managed.cs} (95%) diff --git a/src/Common/src/Interop/Unix/System.Native/Interop.IPAddress.cs b/src/Common/src/Interop/Unix/System.Native/Interop.IPAddress.cs index b1e281005e43..dc9b25f75899 100644 --- a/src/Common/src/Interop/Unix/System.Native/Interop.IPAddress.cs +++ b/src/Common/src/Interop/Unix/System.Native/Interop.IPAddress.cs @@ -74,34 +74,5 @@ public bool Equals(IPAddress other) return true; } } - - [DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_IPv6StringToAddress", SetLastError = true)] - internal static extern unsafe int IPv6StringToAddress(string address, string port, byte* buffer, int bufferLength, out uint scope); - - [DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_IPv4StringToAddress", SetLastError = true)] - internal static extern unsafe int IPv4StringToAddress(string address, byte* buffer, int bufferLength, out ushort port); - - [DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_IPAddressToString")] - internal static extern unsafe int IPAddressToString(byte* address, int addressLength, bool isIPv6, byte* str, int stringLength, uint scope = 0); - - internal static unsafe uint IPAddressToString(byte[] address, bool isIPv6, StringBuilder addressString, uint scope = 0) - { - Debug.Assert(address != null, "address was null"); - Debug.Assert((address.Length == IPv4AddressBytes) || (address.Length == IPv6AddressBytes), $"Unexpected address length: {address.Length}"); - - int err; - fixed (byte* rawAddress = &address[0]) - { - int bufferLength = isIPv6 ? INET6_ADDRSTRLEN : INET_ADDRSTRLEN; - byte* buffer = stackalloc byte[bufferLength]; - err = IPAddressToString(rawAddress, address.Length, isIPv6, buffer, bufferLength, scope); - if (err == 0) - { - addressString.Append(Marshal.PtrToStringAnsi((IntPtr)buffer)); - } - } - - return unchecked((uint)err); - } } } diff --git a/src/Native/Unix/System.Native/pal_networking.cpp b/src/Native/Unix/System.Native/pal_networking.cpp index 295bd3436192..77ee4d3aaabd 100644 --- a/src/Native/Unix/System.Native/pal_networking.cpp +++ b/src/Native/Unix/System.Native/pal_networking.cpp @@ -235,121 +235,6 @@ static int32_t ConvertGetAddrInfoAndGetNameInfoErrorsToPal(int32_t error) return -1; } -extern "C" int32_t -SystemNative_IPv6StringToAddress(const uint8_t* address, const uint8_t* port, uint8_t* buffer, int32_t bufferLength, uint32_t* scope) -{ - assert(buffer != nullptr); - assert(bufferLength == NUM_BYTES_IN_IPV6_ADDRESS); - assert(scope != nullptr); - assert(address != nullptr); - - addrinfo hint; - memset(&hint, 0, sizeof(addrinfo)); - hint.ai_family = AF_INET6; - hint.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV; - - addrinfo* info = nullptr; - int32_t result = getaddrinfo(reinterpret_cast(address), reinterpret_cast(port), &hint, &info); - if (result == 0) - { - sockaddr_in6* addr = reinterpret_cast(info->ai_addr); - ConvertIn6AddrToByteArray(buffer, bufferLength, addr->sin6_addr); - *scope = addr->sin6_scope_id; - - freeaddrinfo(info); - } - - return ConvertGetAddrInfoAndGetNameInfoErrorsToPal(result); -} - -extern "C" int32_t SystemNative_IPv4StringToAddress(const uint8_t* address, uint8_t* buffer, int32_t bufferLength, uint16_t* port) -{ - assert(buffer != nullptr); - assert(bufferLength == NUM_BYTES_IN_IPV4_ADDRESS); - assert(port != nullptr); - assert(address != nullptr); - - in_addr inaddr; - int32_t result = inet_aton(reinterpret_cast(address), &inaddr); - if (result == 0) - { - return PAL_EAI_NONAME; - } - - ConvertInAddrToByteArray(buffer, bufferLength, inaddr); - *port = 0; // callers expect this to always be zero - - return PAL_EAI_SUCCESS; -} - -static void AppendScopeIfNecessary(uint8_t* string, int32_t stringLength, uint32_t scope) -{ - assert(scope != 0); - - // Find the scope ID, if it exists - int i; - for (i = 0; i < stringLength && string[i] != '\0'; i++) - { - if (string[i] == '%') - { - // Found a scope ID. Assume it's correct and return. - return; - } - } - - auto capacity = static_cast(stringLength - i); - int n = snprintf(reinterpret_cast(&string[i]), capacity, "%%%d", scope); - assert(static_cast(n) < capacity); - (void)n; // Silence an unused variable warning in release mode -} - -extern "C" int32_t SystemNative_IPAddressToString( - const uint8_t* address, int32_t addressLength, bool isIPv6, uint8_t* string, int32_t stringLength, uint32_t scope) -{ - assert(address != nullptr); - assert((addressLength == NUM_BYTES_IN_IPV6_ADDRESS) || (addressLength == NUM_BYTES_IN_IPV4_ADDRESS)); - assert(string != nullptr); - - // These constants differ per platform so the managed side uses the bigger value; therefore, check that - // the length is between the two lengths - assert((stringLength >= INET_ADDRSTRLEN) && (stringLength <= INET6_ADDRSTRLEN_MANAGED)); - - socklen_t len = UnsignedCast(stringLength); - - sockaddr_in inAddr; - sockaddr_in6 in6Addr; - const sockaddr* addr; - socklen_t addrLen; - - if (!isIPv6) - { - ConvertByteArrayToSockAddrIn(inAddr, address, addressLength); - addr = reinterpret_cast(&inAddr); - addrLen = sizeof(inAddr); - } - else - { - in6Addr.sin6_scope_id = scope; - ConvertByteArrayToSockAddrIn6(in6Addr, address, addressLength); - addr = reinterpret_cast(&in6Addr); - addrLen = sizeof(in6Addr); - } - - int result = getnameinfo(addr, addrLen, reinterpret_cast(string), len, nullptr, 0, NI_NUMERICHOST); - if (result != 0) - { - return ConvertGetAddrInfoAndGetNameInfoErrorsToPal(result); - } - - // Some platforms do not append unknown scope IDs, but the managed code wants this behavior. - if (isIPv6 && scope != 0) - { - AppendScopeIfNecessary(string, stringLength, scope); - } - - return 0; -} - extern "C" int32_t SystemNative_GetHostEntryForName(const uint8_t* address, HostEntry* entry) { if (address == nullptr || entry == nullptr) diff --git a/src/Native/Unix/System.Native/pal_networking.h b/src/Native/Unix/System.Native/pal_networking.h index ab7131d1100d..6c7a0b48b38f 100644 --- a/src/Native/Unix/System.Native/pal_networking.h +++ b/src/Native/Unix/System.Native/pal_networking.h @@ -293,21 +293,6 @@ struct SocketEvent uint32_t Padding; // Pad out to 8-byte alignment }; -/** - * Converts string-representations of IP Addresses to - */ -extern "C" int32_t SystemNative_IPv6StringToAddress( - const uint8_t* address, const uint8_t* port, uint8_t* buffer, int32_t bufferLength, uint32_t* scope); - -extern "C" int32_t SystemNative_IPv4StringToAddress(const uint8_t* address, uint8_t* buffer, int32_t bufferLength, uint16_t* port); - -extern "C" int32_t SystemNative_IPAddressToString(const uint8_t* address, - int32_t addressLength, - bool isIPv6, - uint8_t* string, - int32_t stringLength, - uint32_t scope = 0); - extern "C" int32_t SystemNative_GetHostEntryForName(const uint8_t* address, HostEntry* entry); extern "C" int32_t SystemNative_GetHostByName(const uint8_t* hostname, HostEntry* entry); diff --git a/src/System.Net.Primitives/src/System.Net.Primitives.csproj b/src/System.Net.Primitives/src/System.Net.Primitives.csproj index ac6782d6552a..c3a6859b8973 100644 --- a/src/System.Net.Primitives/src/System.Net.Primitives.csproj +++ b/src/System.Net.Primitives/src/System.Net.Primitives.csproj @@ -163,7 +163,7 @@ - + diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs similarity index 95% rename from src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs rename to src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs index 12521ff677f3..a33ed4b8148b 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Unix.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs @@ -20,6 +20,8 @@ public static unsafe uint Ipv6AddressToString(ushort[] address, uint scopeId, St if (IPv6AddressHelper.ShouldHaveIpv4Embedded(address)) { + // We need to treat the last 2 ushorts as a 4-byte IPv4 address, + // so output the first 6 ushorts normally, followed by the IPv4 address. AppendSections(address, 0, 6, buffer); if (buffer[buffer.Length - 1] != ':') { @@ -29,9 +31,12 @@ public static unsafe uint Ipv6AddressToString(ushort[] address, uint scopeId, St } else { + // No IPv4 address. Output all 8 sections as part of the IPv6 address + // with normal formatting rules. AppendSections(address, 0, 8, buffer); } + // If there's a scope ID, append it. if (scopeId != 0) { buffer.Append('%').Append(scopeId); diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs index 3e8c3e52b969..91a5651166ef 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Diagnostics; +using System.IO; using System.Net.Sockets; using System.Text; @@ -25,12 +27,12 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) uint error = 0; - // IPv6 Changes: Detect probable IPv6 addresses and use separate parse method. + // Detect probable IPv6 addresses and use separate parse method. if (ipString.IndexOf(':') != -1) { // If the address string contains the colon character // then it can only be an IPv6 address. Use a separate - // parse method to unpick it all. Note: we don't support + // parse method to unpack it all. Note: we don't support // port specification at the end of address and so can // make this decision. uint scope; @@ -41,7 +43,7 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) { // AppCompat: .Net 4.5 ignores a correct port if the address was specified in brackets. // Will still throw for an incorrect port. - return new IPAddress(bytes, IPAddressParserStatics.IPv6AddressBytes, (long)scope); + return new IPAddress(bytes, IPAddressParserStatics.IPv6AddressBytes, scope); } } else @@ -66,8 +68,8 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) return null; } - Exception e = new SocketException(IPAddressPal.GetSocketErrorForErrorCode(error), error); - throw new FormatException(SR.dns_bad_ip_address, e); + throw new FormatException(SR.dns_bad_ip_address, + new SocketException(IPAddressPal.GetSocketErrorForErrorCode(error), error)); } internal static unsafe string IPv4AddressToString(uint address) @@ -89,15 +91,16 @@ internal static unsafe string IPv4AddressToString(uint address) internal static string IPv6AddressToString(ushort[] numbers, uint scopeId) { - StringBuilder sb = new StringBuilder(INET6_ADDRSTRLEN); + StringBuilder sb = StringBuilderCache.Acquire(INET6_ADDRSTRLEN); uint errorCode = IPAddressPal.Ipv6AddressToString(numbers, scopeId, sb); if (errorCode == IPAddressPal.SuccessErrorCode) { - return sb.ToString(); + return StringBuilderCache.GetStringAndRelease(sb); } else { + StringBuilderCache.Release(sb); throw new SocketException(IPAddressPal.GetSocketErrorForErrorCode(errorCode), errorCode); } } diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index 625e2f8a97f1..eccc74923bf5 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -151,8 +151,9 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b { goto case '/'; } - else if (needsClosingBracket && (name[i] < '0' || name[i] > '9')) + else if (name[i] < '0' || name[i] > '9') { + // scope ID must only contain digits return false; } } @@ -163,10 +164,15 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b return false; } needsClosingBracket = false; + + // If there's more after the closing bracket, it must be a port. + // We don't use the port, but we still validate it. if (i + 1 < end && name[i + 1] != ':') { return false; } + + // If there is a port, it must either be a hexadecimal or decimal number. if (i + 3 < end && name[i + 2] == '0' && name[i + 3] == 'x') { i += 4; diff --git a/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs b/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs index cc50780c5c9c..30fb5660ab2e 100644 --- a/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs +++ b/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs @@ -115,60 +115,6 @@ public void IPv4StringToAddress_Invalid_Port() new object[] { new byte[] { 255, 255, 255, 255 }, "255.255.255.255" } }; - [Theory, MemberData(nameof(ValidIPv4Addresses))] - public void IPv4AddressToString_Valid(byte[] bytes, string addressString) - { - var buffer = new StringBuilder(IPAddressParser.INET_ADDRSTRLEN); - uint err = IPAddressPal.Ipv4AddressToString(bytes, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(addressString, buffer.ToString()); - } - - [Theory, MemberData(nameof(ValidIPv4Addresses))] - public void IPv4AddressToString_RoundTrip(byte[] bytes, string addressString) - { - var buffer = new StringBuilder(IPAddressParser.INET_ADDRSTRLEN); - uint err = IPAddressPal.Ipv4AddressToString(bytes, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - - var actualAddressString = buffer.ToString(); - Assert.Equal(addressString, actualAddressString); - - var roundTrippedBytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - err = IPAddressPal.Ipv4StringToAddress(actualAddressString, roundTrippedBytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(bytes[0], roundTrippedBytes[0]); - Assert.Equal(bytes[1], roundTrippedBytes[1]); - Assert.Equal(bytes[2], roundTrippedBytes[2]); - Assert.Equal(bytes[3], roundTrippedBytes[3]); - Assert.Equal(0, port); - } - - [Theory, MemberData(nameof(ValidIPv4Addresses))] - public void IPv4StringToAddress_RoundTrip(byte[] bytes, string addressString) - { - var actualBytesArr = new byte[IPAddressParserStatics.IPv4AddressBytes]; - fixed (byte* actualBytes = actualBytesArr) - { - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(addressString, actualBytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(bytes[0], actualBytes[0]); - Assert.Equal(bytes[1], actualBytes[1]); - Assert.Equal(bytes[2], actualBytes[2]); - Assert.Equal(bytes[3], actualBytes[3]); - Assert.Equal(0, port); - - var buffer = new StringBuilder(IPAddressParser.INET_ADDRSTRLEN); - err = IPAddressPal.Ipv4AddressToString(actualBytesArr, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - - var roundTrippedAddressString = buffer.ToString(); - Assert.Equal(addressString, roundTrippedAddressString); - } - } - [Fact] public void IPv6StringToAddress_Valid_Localhost() { @@ -376,37 +322,37 @@ public void IPv6StringToAddress_Invalid_Compression() public static object[][] ValidIPv6Addresses = new object[][] { new object[] { - new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + new ushort[] { 0, 0, 0, 0, 0, 0, 0, 1 }, "::1" }, new object[] { - new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 }, + new ushort[] { 0x2001, 0x0db8, 0xaaaa, 0xbbbb, 0xcccc, 0xdddd, 0xeeee, 0x0001 }, "2001:db8:aaaa:bbbb:cccc:dddd:eeee:1" }, new object[] { - new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + new ushort[] { 0x2001, 0x0db8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001 }, "2001:db8::1" }, new object[] { - new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 222, 1, 41, 90 }, + new ushort[] { 0, 0, 0, 0, 0, 0xffff, 0xDE01, 0x295A }, "::ffff:222.1.41.90" } }; [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6AddressToString_Valid(byte[] bytes, string addressString) + public void IPv6AddressToString_Valid(ushort[] address, string addressString) { var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - uint err = IPAddressPal.Ipv6AddressToString(bytes, 0, buffer); + uint err = IPAddressPal.Ipv6AddressToString(address, 0, buffer); Assert.Equal(IPAddressPal.SuccessErrorCode, err); Assert.Equal(addressString, buffer.ToString()); } [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6AddressToString_RoundTrip(byte[] bytes, string addressString) + public void IPv6AddressToString_RoundTrip(ushort[] address, string addressString) { var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - uint err = IPAddressPal.Ipv6AddressToString(bytes, 0, buffer); + uint err = IPAddressPal.Ipv6AddressToString(address, 0, buffer); Assert.Equal(IPAddressPal.SuccessErrorCode, err); var actualAddressString = buffer.ToString(); @@ -419,15 +365,16 @@ public void IPv6AddressToString_RoundTrip(byte[] bytes, string addressString) err = IPAddressPal.Ipv6StringToAddress(actualAddressString, roundTrippedBytesPtr, IPAddressParserStatics.IPv6AddressBytes, out scope); } Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < bytes.Length; i++) + for (int i = 0; i < address.Length; i++) { - Assert.Equal(bytes[i], roundTrippedBytes[i]); + Assert.Equal((address[i] & 0xFF00) >> 8, roundTrippedBytes[i*2]); + Assert.Equal(address[i] & 0xFF, roundTrippedBytes[i*2+1]); } Assert.Equal(0, (int)scope); } [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6StringToAddress_RoundTrip(byte[] bytes, string addressString) + public void IPv6StringToAddress_RoundTrip(ushort[] address, string addressString) { var actualBytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; uint scope; @@ -437,14 +384,21 @@ public void IPv6StringToAddress_RoundTrip(byte[] bytes, string addressString) err = IPAddressPal.Ipv6StringToAddress(addressString, actualBytesPtr, actualBytes.Length, out scope); } Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < bytes.Length; i++) + for (int i = 0; i < address.Length; i++) { - Assert.Equal(bytes[i], actualBytes[i]); + Assert.Equal((address[i] & 0xFF00) >> 8, actualBytes[i * 2]); + Assert.Equal(address[i] & 0xFF, actualBytes[i * 2 + 1]); } Assert.Equal(0, (int)scope); + var actualNumbers = new ushort[IPAddressParserStatics.IPv6AddressBytes / 2]; + for (int i = 0; i < actualNumbers.Length; i++) + { + actualNumbers[i] = (ushort)(actualBytes[i * 2] * 256 + actualBytes[i * 2 + 1]); + } + var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - err = IPAddressPal.Ipv6AddressToString(actualBytes, 0, buffer); + err = IPAddressPal.Ipv6AddressToString(actualNumbers, 0, buffer); Assert.Equal(IPAddressPal.SuccessErrorCode, err); var roundTrippedAddressString = buffer.ToString(); diff --git a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj index ead4c0dbab21..5ed2e2a39c65 100644 --- a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj +++ b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj @@ -48,6 +48,9 @@ ProductionCode\System\Net\IPAddressParser.cs + + ProductionCode\Common\System\IO\StringBuilderCache.cs + @@ -134,8 +137,8 @@ - - ProductionCode\System\Net\IPAddressPal.Unix.cs + + ProductionCode\System\Net\IPAddressPal.Managed.cs ProductionCode\System\Net\SocketException.Unix.cs diff --git a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs index 72b75c1c3790..b0bbdef8d1a4 100644 --- a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs +++ b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs @@ -12,12 +12,12 @@ internal static class IPAddressPal { public const uint SuccessErrorCode = 0; - public static uint Ipv4AddressToString(byte[] address, StringBuilder buffer) + public static uint Ipv4AddressToString(ushort[] address, StringBuilder buffer) { return 0; } - public static uint Ipv6AddressToString(byte[] address, uint scopeId, StringBuilder buffer) + public static uint Ipv6AddressToString(ushort[] address, uint scopeId, StringBuilder buffer) { return 0; } From abc3f6c7f76e63bfde306fc3a591a4c540019f5d Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 13:03:12 -0400 Subject: [PATCH 165/336] Remove IPAddress PAL and use managed implementation everywhere --- .../NtDll/Interop.RtlIpv4AddressToStringEx.cs | 19 - .../NtDll/Interop.RtlIpv4StringToAddressEx.cs | 18 - .../NtDll/Interop.RtlIpv6AddressToStringEx.cs | 20 - .../NtDll/Interop.RtlIpv6StringToAddressEx.cs | 18 - .../src/System/Net/IPAddressParserStatics.cs | 1 + .../src/System.Net.Primitives.csproj | 18 +- .../src/System/Net/IPAddress.cs | 40 +- .../src/System/Net/IPAddressPal.Managed.cs | 206 --------- .../src/System/Net/IPAddressPal.Windows.cs | 61 --- .../src/System/Net/IPAddressParser.cs | 225 ++++++++-- .../src/System/Net/IPv4AddressHelper.cs | 4 +- .../tests/PalTests/IPAddressPalTest.cs | 408 ------------------ .../System.Net.Primitives.Pal.Tests.csproj | 28 +- .../tests/UnitTests/Fakes/IPAddressPal.cs | 42 -- .../UnitTests/Fakes/IPv4AddressHelper.cs | 12 + .../UnitTests/Fakes/IPv6AddressHelper.cs | 17 + ...stem.Net.Primitives.UnitTests.Tests.csproj | 5 +- 17 files changed, 254 insertions(+), 888 deletions(-) delete mode 100644 src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4AddressToStringEx.cs delete mode 100644 src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4StringToAddressEx.cs delete mode 100644 src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs delete mode 100644 src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6StringToAddressEx.cs delete mode 100644 src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs delete mode 100644 src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs delete mode 100644 src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs delete mode 100644 src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs create mode 100644 src/System.Net.Primitives/tests/UnitTests/Fakes/IPv4AddressHelper.cs create mode 100644 src/System.Net.Primitives/tests/UnitTests/Fakes/IPv6AddressHelper.cs diff --git a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4AddressToStringEx.cs b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4AddressToStringEx.cs deleted file mode 100644 index dd2fa0cd3b61..000000000000 --- a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4AddressToStringEx.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Runtime.InteropServices; -using System.Text; - -internal static partial class Interop -{ - internal static partial class NtDll - { - [DllImport(Interop.Libraries.NtDll, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal extern static uint RtlIpv4AddressToStringExW( - [In] byte[] address, - [In] ushort port, - [Out] StringBuilder addressString, - [In, Out] ref uint addressStringLength); - } -} diff --git a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4StringToAddressEx.cs b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4StringToAddressEx.cs deleted file mode 100644 index 84df9f656535..000000000000 --- a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv4StringToAddressEx.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Runtime.InteropServices; - -internal static partial class Interop -{ - internal static partial class NtDll - { - [DllImport(Interop.Libraries.NtDll, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal extern static unsafe uint RtlIpv4StringToAddressExW( - [In] string s, - [In] bool strict, - [Out] byte* address, - [Out] out ushort port); - } -} diff --git a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs deleted file mode 100644 index 90f611a5cdc8..000000000000 --- a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6AddressToStringEx.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Runtime.InteropServices; -using System.Text; - -internal static partial class Interop -{ - internal static partial class NtDll - { - [DllImport(Interop.Libraries.NtDll, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal extern static unsafe uint RtlIpv6AddressToStringExW( - [In] byte* address, - [In] uint scopeId, - [In] ushort port, - [Out] StringBuilder addressString, - [In, Out] ref uint addressStringLength); - } -} diff --git a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6StringToAddressEx.cs b/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6StringToAddressEx.cs deleted file mode 100644 index 51ce2918274f..000000000000 --- a/src/Common/src/Interop/Windows/NtDll/Interop.RtlIpv6StringToAddressEx.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Runtime.InteropServices; - -internal static partial class Interop -{ - internal static partial class NtDll - { - [DllImport(Interop.Libraries.NtDll, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal extern static unsafe uint RtlIpv6StringToAddressExW( - [In] string s, - [Out] byte* address, - [Out] out uint scopeId, - [Out] out ushort port); - } -} diff --git a/src/Common/src/System/Net/IPAddressParserStatics.cs b/src/Common/src/System/Net/IPAddressParserStatics.cs index a58e4eb2f4c6..fefc1e588347 100644 --- a/src/Common/src/System/Net/IPAddressParserStatics.cs +++ b/src/Common/src/System/Net/IPAddressParserStatics.cs @@ -8,5 +8,6 @@ internal static class IPAddressParserStatics { public const int IPv4AddressBytes = 4; public const int IPv6AddressBytes = 16; + public const int IPv6AddressShorts = IPv6AddressBytes / 2; } } diff --git a/src/System.Net.Primitives/src/System.Net.Primitives.csproj b/src/System.Net.Primitives/src/System.Net.Primitives.csproj index c3a6859b8973..ec7d36fbf736 100644 --- a/src/System.Net.Primitives/src/System.Net.Primitives.csproj +++ b/src/System.Net.Primitives/src/System.Net.Primitives.csproj @@ -39,6 +39,8 @@ + + @@ -102,7 +104,6 @@ - Common\System\Net\SocketAddressPal.Windows.cs @@ -122,18 +123,6 @@ Common\Interop\Windows\NtDll\Interop.NtStatus.cs - - Common\Interop\Windows\NtDll\Interop.RtlIpv4AddressToStringEx.cs - - - Common\Interop\Windows\NtDll\Interop.RtlIpv4StringToAddressEx.cs - - - Common\Interop\Windows\NtDll\Interop.RtlIpv6AddressToStringEx.cs - - - Common\Interop\Windows\NtDll\Interop.RtlIpv6StringToAddressEx.cs - @@ -163,9 +152,6 @@ - - - Common\System\Net\SocketAddressPal.Unix.cs diff --git a/src/System.Net.Primitives/src/System/Net/IPAddress.cs b/src/System.Net.Primitives/src/System/Net/IPAddress.cs index c5d127c38a11..5a1d5e381289 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddress.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddress.cs @@ -173,6 +173,21 @@ internal unsafe IPAddress(byte* address, int addressLength, long scopeid) PrivateScopeId = (uint)scopeid; } + internal unsafe IPAddress(ushort* numbers, int numbersLength, uint scopeid) + { + Debug.Assert(numbers != null); + Debug.Assert(numbersLength == NumberOfLabels); + + var arr = new ushort[NumberOfLabels]; + for (int i = 0; i < arr.Length; i++) + { + arr[i] = numbers[i]; + } + + _numbers = arr; + PrivateScopeId = scopeid; + } + private IPAddress(ushort[] numbers, uint scopeid) { Debug.Assert(numbers != null); @@ -258,20 +273,6 @@ public static IPAddress Parse(string ipString) return IPAddressParser.Parse(ipString, false); } - internal static unsafe void FillIPv6AddressBytes(ushort[] numbers, byte* bytes, int bytesLength) - { - Debug.Assert(numbers != null); - Debug.Assert(numbers.Length == NumberOfLabels); - Debug.Assert(bytesLength == numbers.Length * 2); - - int j = 0; - for (int i = 0; i < NumberOfLabels; i++) - { - bytes[j++] = (byte)((numbers[i] >> 8) & 0xFF); - bytes[j++] = (byte)((numbers[i]) & 0xFF); - } - } - /// /// /// Provides a copy of the IPAddress internals as an array of bytes. @@ -282,13 +283,14 @@ public byte[] GetAddressBytes() byte[] bytes; if (IsIPv6) { + Debug.Assert(_numbers != null && _numbers.Length == NumberOfLabels); + bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - unsafe + int j = 0; + for (int i = 0; i < NumberOfLabels; i++) { - fixed (byte* bytesPtr = &bytes[0]) - { - FillIPv6AddressBytes(_numbers, bytesPtr, IPAddressParserStatics.IPv6AddressBytes); - } + bytes[j++] = (byte)((_numbers[i] >> 8) & 0xFF); + bytes[j++] = (byte)((_numbers[i]) & 0xFF); } } else diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs deleted file mode 100644 index a33ed4b8148b..000000000000 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Managed.cs +++ /dev/null @@ -1,206 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics; -using System.Net.Sockets; -using System.Text; - -namespace System.Net -{ - internal static class IPAddressPal - { - public const uint SuccessErrorCode = (uint)SocketError.Success; - - public static unsafe uint Ipv6AddressToString(ushort[] address, uint scopeId, StringBuilder buffer) - { - Debug.Assert(address != null); - Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressBytes / 2); - Debug.Assert(buffer != null); - - if (IPv6AddressHelper.ShouldHaveIpv4Embedded(address)) - { - // We need to treat the last 2 ushorts as a 4-byte IPv4 address, - // so output the first 6 ushorts normally, followed by the IPv4 address. - AppendSections(address, 0, 6, buffer); - if (buffer[buffer.Length - 1] != ':') - { - buffer.Append(':'); - } - buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); - } - else - { - // No IPv4 address. Output all 8 sections as part of the IPv6 address - // with normal formatting rules. - AppendSections(address, 0, 8, buffer); - } - - // If there's a scope ID, append it. - if (scopeId != 0) - { - buffer.Append('%').Append(scopeId); - } - - return SuccessErrorCode; - } - - public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int bytesLength, out ushort port) - { - Debug.Assert(ipString != null); - Debug.Assert(bytes != null); - Debug.Assert(bytesLength >= IPAddressParserStatics.IPv4AddressBytes); - - port = 0; - long address; - int end = ipString.Length; - fixed (char* ipStringPtr = ipString) - { - address = IPv4AddressHelper.ParseNonCanonical(ipStringPtr, 0, ref end, notImplicitFile: true); - } - - if (address == IPv4AddressHelper.Invalid || end != ipString.Length) - { - return (uint)SocketError.InvalidArgument; - } - - bytes[0] = (byte)((0xFF000000 & address) >> 24); - bytes[1] = (byte)((0x00FF0000 & address) >> 16); - bytes[2] = (byte)((0x0000FF00 & address) >> 8); - bytes[3] = (byte)((0x000000FF & address) >> 0); - return SuccessErrorCode; - } - - public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) - { - Debug.Assert(ipString != null); - Debug.Assert(bytes != null); - Debug.Assert(bytesLength >= IPAddressParserStatics.IPv6AddressBytes); - - scope = 0; - - int end = ipString.Length; - fixed (char* name = ipString) - { - if (IPv6AddressHelper.IsValidStrict(name, 0, ref end) || (end != ipString.Length)) - { - ushort* numbers = stackalloc ushort[IPAddressParserStatics.IPv6AddressBytes / 2]; - string scopeId = null; - IPv6AddressHelper.Parse(ipString, numbers, 0, ref scopeId); - - long result = 0; - if (!string.IsNullOrEmpty(scopeId)) - { - if (scopeId.Length < 2) - { - return (uint)SocketError.InvalidArgument; - } - - for (int i = 1; i < scopeId.Length; i++) - { - char c = scopeId[i]; - if (c < '0' || c > '9') - { - return (uint)SocketError.InvalidArgument; - } - result = (result * 10) + (c - '0'); - if (result > uint.MaxValue) - { - return (uint)SocketError.InvalidArgument; - } - } - - scope = (uint)result; - } - - for (int i = 0; i < IPAddressParserStatics.IPv6AddressBytes / 2; i++) - { - bytes[i * 2 + 1] = (byte)(numbers[i] & 0xFF); - bytes[i * 2] = (byte)((numbers[i] & 0xFF00) >> 8); - } - return SuccessErrorCode; - } - } - - return (uint)SocketError.InvalidArgument; - } - - public static SocketError GetSocketErrorForErrorCode(uint status) => (SocketError)status; - - /// - /// Appends each of the numbers in address in indexed range [fromInclusive, toExclusive), - /// while also replacing the longest sequence of 0s found in that range with "::", as long - /// as the sequence is more than one 0. - /// - private static void AppendSections(ushort[] address, int fromInclusive, int toExclusive, StringBuilder buffer) - { - // Find the longest sequence of zeros to be combined into a "::" - (int zeroStart, int zeroEnd) = IPv6AddressHelper.FindCompressionRange(address, fromInclusive, toExclusive); - bool needsColon = false; - - // Output all of the numbers before the zero sequence - for (int i = fromInclusive; i < zeroStart; i++) - { - if (needsColon) - { - buffer.Append(':'); - } - needsColon = true; - AppendHex(address[i], buffer); - } - - // Output the zero sequence if there is one - if (zeroStart >= 0) - { - buffer.Append("::"); - needsColon = false; - fromInclusive = zeroEnd; - } - - // Output everything after the zero sequence - for (int i = fromInclusive; i < toExclusive; i++) - { - if (needsColon) - { - buffer.Append(':'); - } - needsColon = true; - AppendHex(address[i], buffer); - } - } - - /// Appends a number as hexadecimal (without the leading "0x") to the StringBuilder. - private static unsafe void AppendHex(int value, StringBuilder buffer) - { - const int MaxLength = 8; - char* chars = stackalloc char[MaxLength]; - int len = 0; - - do - { - int rem; - value = Math.DivRem(value, 16, out rem); - chars[len++] = rem < 10 ? - (char)('0' + rem) : - (char)('a' + (rem - 10)); - } - while (value != 0); - - int mid = len / 2; - for (int i = 0; i < mid; i++) - { - char c = chars[i]; - chars[i] = chars[len - i - 1]; - chars[len - i - 1] = c; - } - - buffer.Append(chars, len); - } - - /// Extracts the IPv4 address from the end of the IPv6 address byte array. - private static uint ExtractIPv4Address(ushort[] address) => (uint)(Reverse(address[7]) << 16) | Reverse(address[6]); - - /// Reverses the two bytes in the ushort. - private static ushort Reverse(ushort number) => (ushort)(((number >> 8) & 0xFF) | ((number << 8) & 0xFF00)); - } -} diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs b/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs deleted file mode 100644 index 1ab19e46f5a5..000000000000 --- a/src/System.Net.Primitives/src/System/Net/IPAddressPal.Windows.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics; -using System.Net.Sockets; -using System.Text; - -namespace System.Net -{ - internal static class IPAddressPal - { - public const uint SuccessErrorCode = Interop.StatusOptions.STATUS_SUCCESS; - - public static unsafe uint Ipv6AddressToString(ushort[] numbers, uint scopeId, StringBuilder buffer) - { - Debug.Assert(numbers != null); - Debug.Assert(numbers.Length == IPAddressParserStatics.IPv6AddressBytes / 2); - Debug.Assert(buffer != null); - Debug.Assert(buffer.Capacity >= IPAddressParser.INET6_ADDRSTRLEN); - - byte* address = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - IPAddress.FillIPv6AddressBytes(numbers, address, IPAddressParserStatics.IPv6AddressBytes); - - uint length = (uint)buffer.Capacity; - return Interop.NtDll.RtlIpv6AddressToStringExW(address, scopeId, 0, buffer, ref length); - } - - public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int bytesLength, out ushort port) - { - Debug.Assert(ipString != null); - Debug.Assert(bytes != null); - Debug.Assert(bytesLength == IPAddressParserStatics.IPv4AddressBytes); - - return Interop.NtDll.RtlIpv4StringToAddressExW(ipString, false, bytes, out port); - } - - public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) - { - Debug.Assert(ipString != null); - Debug.Assert(bytes != null); - Debug.Assert(bytesLength == IPAddressParserStatics.IPv6AddressBytes); - - ushort port; - return Interop.NtDll.RtlIpv6StringToAddressExW(ipString, bytes, out scope, out port); - } - - public static SocketError GetSocketErrorForErrorCode(uint status) - { - switch (status) - { - case Interop.StatusOptions.STATUS_SUCCESS: - return SocketError.Success; - case Interop.StatusOptions.STATUS_INVALID_PARAMETER: - return SocketError.InvalidArgument; - default: - return (SocketError)status; - } - } - } -} diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs index 91a5651166ef..a6e145fca6fa 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs @@ -11,9 +11,6 @@ namespace System.Net { internal class IPAddressParser { - internal const int INET_ADDRSTRLEN = 22; - internal const int INET6_ADDRSTRLEN = 65; - internal static unsafe IPAddress Parse(string ipString, bool tryParse) { if (ipString == null) @@ -25,41 +22,23 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) throw new ArgumentNullException(nameof(ipString)); } - uint error = 0; - - // Detect probable IPv6 addresses and use separate parse method. if (ipString.IndexOf(':') != -1) { - // If the address string contains the colon character - // then it can only be an IPv6 address. Use a separate - // parse method to unpack it all. Note: we don't support - // port specification at the end of address and so can - // make this decision. + // If the address string contains the colon character then it can only be an IPv6 address. + // This is valid because we don't support/parse a port specification at the end of an IPv4 address. uint scope; - byte* bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - error = IPAddressPal.Ipv6StringToAddress(ipString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope); - - if (error == IPAddressPal.SuccessErrorCode) + ushort* numbers = stackalloc ushort[IPAddressParserStatics.IPv6AddressShorts]; + if (Ipv6StringToAddress(ipString, numbers, IPAddressParserStatics.IPv6AddressShorts, out scope)) { - // AppCompat: .Net 4.5 ignores a correct port if the address was specified in brackets. - // Will still throw for an incorrect port. - return new IPAddress(bytes, IPAddressParserStatics.IPv6AddressBytes, scope); + return new IPAddress(numbers, IPAddressParserStatics.IPv6AddressShorts, scope); } } else { - ushort port; - byte* bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - error = IPAddressPal.Ipv4StringToAddress(ipString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - - if (error == IPAddressPal.SuccessErrorCode) + long address; + if (Ipv4StringToAddress(ipString, out address)) { - if (port != 0) - { - throw new FormatException(SR.dns_bad_ip_address); - } - - return new IPAddress(bytes, IPAddressParserStatics.IPv4AddressBytes); + return new IPAddress(address); } } @@ -68,8 +47,7 @@ internal static unsafe IPAddress Parse(string ipString, bool tryParse) return null; } - throw new FormatException(SR.dns_bad_ip_address, - new SocketException(IPAddressPal.GetSocketErrorForErrorCode(error), error)); + throw new FormatException(SR.dns_bad_ip_address, new SocketException(SocketError.InvalidArgument)); } internal static unsafe string IPv4AddressToString(uint address) @@ -89,20 +67,39 @@ internal static unsafe string IPv4AddressToString(uint address) return new string(addressString, offset, MaxLength - offset); } - internal static string IPv6AddressToString(ushort[] numbers, uint scopeId) + internal static string IPv6AddressToString(ushort[] address, uint scopeId) { - StringBuilder sb = StringBuilderCache.Acquire(INET6_ADDRSTRLEN); - uint errorCode = IPAddressPal.Ipv6AddressToString(numbers, scopeId, sb); + Debug.Assert(address != null); + Debug.Assert(address.Length == IPAddressParserStatics.IPv6AddressShorts); - if (errorCode == IPAddressPal.SuccessErrorCode) + const int INET6_ADDRSTRLEN = 65; + StringBuilder buffer = StringBuilderCache.Acquire(INET6_ADDRSTRLEN); + + if (IPv6AddressHelper.ShouldHaveIpv4Embedded(address)) { - return StringBuilderCache.GetStringAndRelease(sb); + // We need to treat the last 2 ushorts as a 4-byte IPv4 address, + // so output the first 6 ushorts normally, followed by the IPv4 address. + AppendSections(address, 0, 6, buffer); + if (buffer[buffer.Length - 1] != ':') + { + buffer.Append(':'); + } + buffer.Append(IPAddressParser.IPv4AddressToString(ExtractIPv4Address(address))); } else { - StringBuilderCache.Release(sb); - throw new SocketException(IPAddressPal.GetSocketErrorForErrorCode(errorCode), errorCode); + // No IPv4 address. Output all 8 sections as part of the IPv6 address + // with normal formatting rules. + AppendSections(address, 0, 8, buffer); } + + // If there's a scope ID, append it. + if (scopeId != 0) + { + buffer.Append('%').Append(scopeId); + } + + return StringBuilderCache.GetStringAndRelease(buffer); } private static unsafe void FormatIPv4AddressNumber(int number, char* addressString, ref int offset) @@ -116,5 +113,157 @@ private static unsafe void FormatIPv4AddressNumber(int number, char* addressStri } while (number != 0); offset = i; } + + public static unsafe bool Ipv4StringToAddress(string ipString, out long address) + { + Debug.Assert(ipString != null); + + long tmpAddr; + int end = ipString.Length; + fixed (char* ipStringPtr = ipString) + { + tmpAddr = IPv4AddressHelper.ParseNonCanonical(ipStringPtr, 0, ref end, notImplicitFile: true); + } + + if (tmpAddr != IPv4AddressHelper.Invalid && end == ipString.Length) + { + address = + ((0xFF000000 & tmpAddr) >> 24) | + ((0x00FF0000 & tmpAddr) >> 8) | + ((0x0000FF00 & tmpAddr) << 8) | + ((0x000000FF & tmpAddr) << 24); + return true; + } + else + { + address = 0; + return false; + } + } + + public static unsafe bool Ipv6StringToAddress(string ipString, ushort* numbers, int numbersLength, out uint scope) + { + Debug.Assert(ipString != null); + Debug.Assert(numbers != null); + Debug.Assert(numbersLength >= IPAddressParserStatics.IPv6AddressShorts); + + int end = ipString.Length; + fixed (char* name = ipString) + { + if (IPv6AddressHelper.IsValidStrict(name, 0, ref end) || (end != ipString.Length)) + { + string scopeId = null; + IPv6AddressHelper.Parse(ipString, numbers, 0, ref scopeId); + + long result = 0; + if (!string.IsNullOrEmpty(scopeId)) + { + if (scopeId.Length < 2) + { + scope = 0; + return false; + } + + for (int i = 1; i < scopeId.Length; i++) + { + char c = scopeId[i]; + if (c < '0' || c > '9') + { + scope = 0; + return false; + } + result = (result * 10) + (c - '0'); + if (result > uint.MaxValue) + { + scope = 0; + return false; + } + } + } + + scope = (uint)result; + return true; + } + } + + scope = 0; + return false; + } + + /// + /// Appends each of the numbers in address in indexed range [fromInclusive, toExclusive), + /// while also replacing the longest sequence of 0s found in that range with "::", as long + /// as the sequence is more than one 0. + /// + private static void AppendSections(ushort[] address, int fromInclusive, int toExclusive, StringBuilder buffer) + { + // Find the longest sequence of zeros to be combined into a "::" + (int zeroStart, int zeroEnd) = IPv6AddressHelper.FindCompressionRange(address, fromInclusive, toExclusive); + bool needsColon = false; + + // Output all of the numbers before the zero sequence + for (int i = fromInclusive; i < zeroStart; i++) + { + if (needsColon) + { + buffer.Append(':'); + } + needsColon = true; + AppendHex(address[i], buffer); + } + + // Output the zero sequence if there is one + if (zeroStart >= 0) + { + buffer.Append("::"); + needsColon = false; + fromInclusive = zeroEnd; + } + + // Output everything after the zero sequence + for (int i = fromInclusive; i < toExclusive; i++) + { + if (needsColon) + { + buffer.Append(':'); + } + needsColon = true; + AppendHex(address[i], buffer); + } + } + + /// Appends a number as hexadecimal (without the leading "0x") to the StringBuilder. + private static unsafe void AppendHex(int value, StringBuilder buffer) + { + const int MaxLength = 8; + char* chars = stackalloc char[MaxLength]; + int len = 0; + + do + { + int rem; + value = Math.DivRem(value, 16, out rem); + chars[len++] = rem < 10 ? + (char)('0' + rem) : + (char)('a' + (rem - 10)); + } + while (value != 0); + + int mid = len / 2; + for (int i = 0; i < mid; i++) + { + char c = chars[i]; + chars[i] = chars[len - i - 1]; + chars[len - i - 1] = c; + } + + buffer.Append(chars, len); + } + + /// Extracts the IPv4 address from the end of the IPv6 address byte array. + private static uint ExtractIPv4Address(ushort[] address) => (uint)(Reverse(address[7]) << 16) | Reverse(address[6]); + + /// Reverses the two bytes in the ushort. + private static ushort Reverse(ushort number) => (ushort)(((number >> 8) & 0xFF) | ((number << 8) & 0xFF00)); } } diff --git a/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs index fe8f1a5eebfb..26f958b98b5b 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv4AddressHelper.cs @@ -165,7 +165,7 @@ internal static unsafe long ParseNonCanonical(char* name, int start, ref int end { int numberBase = Decimal; char ch; - long[] parts = new long[4]; + long* parts = stackalloc long[4]; long currentValue = 0; bool atLeastOneChar = false; @@ -326,4 +326,4 @@ private static unsafe bool ParseCanonical(string name, byte* numbers, int start, return numbers[0] == 127; } } -} \ No newline at end of file +} diff --git a/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs b/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs deleted file mode 100644 index 30fb5660ab2e..000000000000 --- a/src/System.Net.Primitives/tests/PalTests/IPAddressPalTest.cs +++ /dev/null @@ -1,408 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Text; - -using Xunit; - -namespace System.Net.Primitives.PalTests -{ - public unsafe class IPAddressPalTests - { - [Fact] - public void IPv4StringToAddress_Valid() - { - const string AddressString = "127.0.64.255"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(127, bytes[0]); - Assert.Equal(0, bytes[1]); - Assert.Equal(64, bytes[2]); - Assert.Equal(255, bytes[3]); - Assert.Equal(0, port); - } - - [Fact] - public void IPv4StringToAddress_Valid_ClassB() - { - const string AddressString = "128.64.256"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(128, bytes[0]); - Assert.Equal(64, bytes[1]); - Assert.Equal(1, bytes[2]); - Assert.Equal(0, bytes[3]); - Assert.Equal(0, port); - } - - [Fact] - public void IPv4StringToAddress_Valid_ClassC() - { - const string AddressString = "192.65536"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(192, bytes[0]); - Assert.Equal(1, bytes[1]); - Assert.Equal(0, bytes[2]); - Assert.Equal(0, bytes[3]); - Assert.Equal(0, port); - } - - [Fact] - public void IPv4StringToAddress_Valid_ClassA() - { - const string AddressString = "2130706433"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(127, bytes[0]); - Assert.Equal(0, bytes[1]); - Assert.Equal(0, bytes[2]); - Assert.Equal(1, bytes[3]); - Assert.Equal(0, port); - } - - [Fact] - public void IPv4StringToAddress_Invalid_Empty() - { - const string AddressString = ""; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - [Fact] - public void IPv4StringToAddress_Invalid_NotAnAddress() - { - const string AddressString = "hello, world"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - [Fact] - public void IPv4StringToAddress_Invalid_Port() - { - const string AddressString = "127.0.64.255:80"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes]; - ushort port; - uint err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port); - Assert.True(err != IPAddressPal.SuccessErrorCode || port != 0); - } - - public static object[][] ValidIPv4Addresses = new object[][] { - new object[] { new byte[] { 0, 0, 0, 0 }, "0.0.0.0" }, - new object[] { new byte[] { 127, 0, 64, 255 }, "127.0.64.255" }, - new object[] { new byte[] { 128, 64, 1, 0 }, "128.64.1.0" }, - new object[] { new byte[] { 192, 0, 0, 1 }, "192.0.0.1" }, - new object[] { new byte[] { 255, 255, 255, 255 }, "255.255.255.255" } - }; - - [Fact] - public void IPv6StringToAddress_Valid_Localhost() - { - const string AddressString = "::1"; - var expectedBytes = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid() - { - const string AddressString = "2001:db8:aaaa:bbbb:cccc:dddd:eeee:1"; - var expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid_Bracketed() - { - const string AddressString = "[2001:db8:aaaa:bbbb:cccc:dddd:eeee:1]"; - var expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid_Port() - { - const string AddressString = "[2001:db8:aaaa:bbbb:cccc:dddd:eeee:1]:80"; - var expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid_Port_2() - { - const string AddressString = "[2001:db8:aaaa:bbbb:cccc:dddd:eeee:1]:"; - var expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid_Compressed() - { - const string AddressString = "2001:db8::1"; - var expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Valid_IPv4Compatible() - { - const string AddressString = "::ffff:222.1.41.90"; - var expectedBytes = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 222, 1, 41, 90 }; - - var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - Assert.Equal(bytes.Length, expectedBytes.Length); - - uint scope; - uint err; - fixed (byte* bytesPtr = bytes) - { - err = IPAddressPal.Ipv6StringToAddress(AddressString, bytesPtr, bytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < expectedBytes.Length; i++) - { - Assert.Equal(expectedBytes[i], bytes[i]); - } - Assert.Equal(0, (int)scope); - } - - [Fact] - public void IPv6StringToAddress_Invalid_Empty() - { - const string AddressString = ""; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - [Fact] - public void IPv6StringToAddress_Invalid_NotAnAddress() - { - const string AddressString = "hello, world"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - [Fact] - public void IPv6StringToAddress_Invalid_Port() - { - const string AddressString = "[2001:db8::1]:xx"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - [Fact] - public void IPv6StringToAddress_Invalid_Compression() - { - const string AddressString = "2001::db8::1"; - - var bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope); - Assert.NotEqual(err, IPAddressPal.SuccessErrorCode); - } - - public static object[][] ValidIPv6Addresses = new object[][] { - new object[] { - new ushort[] { 0, 0, 0, 0, 0, 0, 0, 1 }, - "::1" - }, - new object[] { - new ushort[] { 0x2001, 0x0db8, 0xaaaa, 0xbbbb, 0xcccc, 0xdddd, 0xeeee, 0x0001 }, - "2001:db8:aaaa:bbbb:cccc:dddd:eeee:1" - }, - new object[] { - new ushort[] { 0x2001, 0x0db8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001 }, - "2001:db8::1" - }, - new object[] { - new ushort[] { 0, 0, 0, 0, 0, 0xffff, 0xDE01, 0x295A }, - "::ffff:222.1.41.90" - } - }; - - [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6AddressToString_Valid(ushort[] address, string addressString) - { - var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - uint err = IPAddressPal.Ipv6AddressToString(address, 0, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - Assert.Equal(addressString, buffer.ToString()); - } - - [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6AddressToString_RoundTrip(ushort[] address, string addressString) - { - var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - uint err = IPAddressPal.Ipv6AddressToString(address, 0, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - - var actualAddressString = buffer.ToString(); - Assert.Equal(addressString, actualAddressString); - - var roundTrippedBytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - fixed (byte* roundTrippedBytesPtr = roundTrippedBytes) - { - err = IPAddressPal.Ipv6StringToAddress(actualAddressString, roundTrippedBytesPtr, IPAddressParserStatics.IPv6AddressBytes, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < address.Length; i++) - { - Assert.Equal((address[i] & 0xFF00) >> 8, roundTrippedBytes[i*2]); - Assert.Equal(address[i] & 0xFF, roundTrippedBytes[i*2+1]); - } - Assert.Equal(0, (int)scope); - } - - [Theory, MemberData(nameof(ValidIPv6Addresses))] - public void IPv6StringToAddress_RoundTrip(ushort[] address, string addressString) - { - var actualBytes = new byte[IPAddressParserStatics.IPv6AddressBytes]; - uint scope; - uint err; - fixed (byte* actualBytesPtr = actualBytes) - { - err = IPAddressPal.Ipv6StringToAddress(addressString, actualBytesPtr, actualBytes.Length, out scope); - } - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - for (int i = 0; i < address.Length; i++) - { - Assert.Equal((address[i] & 0xFF00) >> 8, actualBytes[i * 2]); - Assert.Equal(address[i] & 0xFF, actualBytes[i * 2 + 1]); - } - Assert.Equal(0, (int)scope); - - var actualNumbers = new ushort[IPAddressParserStatics.IPv6AddressBytes / 2]; - for (int i = 0; i < actualNumbers.Length; i++) - { - actualNumbers[i] = (ushort)(actualBytes[i * 2] * 256 + actualBytes[i * 2 + 1]); - } - - var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN); - err = IPAddressPal.Ipv6AddressToString(actualNumbers, 0, buffer); - Assert.Equal(IPAddressPal.SuccessErrorCode, err); - - var roundTrippedAddressString = buffer.ToString(); - Assert.Equal(addressString, roundTrippedAddressString); - } - } -} diff --git a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj index 5ed2e2a39c65..0fee8958acf3 100644 --- a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj +++ b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj @@ -35,6 +35,15 @@ ProductionCode\System\Net\IPAddress.cs + + ProductionCode\System\Net\IPAddressParser.cs + + + ProductionCode\System\Net\IPv4AddressHelper.cs + + + ProductionCode\System\Net\IPv6AddressHelper.cs + ProductionCode\System\Net\IPEndPoint.cs @@ -44,10 +53,6 @@ ProductionCode\System\Net\EndPoint.cs - - ProductionCode\System\Net\IPAddressParser.cs - - ProductionCode\Common\System\IO\StringBuilderCache.cs @@ -81,9 +86,6 @@ - - ProductionCode\System\Net\IPAddressPal.Windows.cs - ProductionCode\System\Net\SocketException.Windows.cs @@ -123,18 +125,6 @@ ProductionCode\Common\Interop\Windows\NtDll\Interop.NtStatus.cs - - ProductionCode\Common\Interop\Windows\NtDll\Interop.RtlIpv4AddressToStringEx.cs - - - ProductionCode\Common\Interop\Windows\NtDll\Interop.RtlIpv4StringToAddressEx.cs - - - ProductionCode\Common\Interop\Windows\NtDll\Interop.RtlIpv6AddressToStringEx.cs - - - ProductionCode\Common\Interop\Windows\NtDll\Interop.RtlIpv6StringToAddressEx.cs - diff --git a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs deleted file mode 100644 index b0bbdef8d1a4..000000000000 --- a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPAddressPal.cs +++ /dev/null @@ -1,42 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics; -using System.Net.Sockets; -using System.Text; - -namespace System.Net -{ - internal static class IPAddressPal - { - public const uint SuccessErrorCode = 0; - - public static uint Ipv4AddressToString(ushort[] address, StringBuilder buffer) - { - return 0; - } - - public static uint Ipv6AddressToString(ushort[] address, uint scopeId, StringBuilder buffer) - { - return 0; - } - - public static unsafe uint Ipv4StringToAddress(string ipString, byte* bytes, int bytesLength, out ushort port) - { - port = 0; - return 0; - } - - public static unsafe uint Ipv6StringToAddress(string ipString, byte* bytes, int bytesLength, out uint scope) - { - scope = 0; - return 0; - } - - public static SocketError GetSocketErrorForErrorCode(uint status) - { - return SocketError.Success; - } - } -} diff --git a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv4AddressHelper.cs b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv4AddressHelper.cs new file mode 100644 index 000000000000..8be832c76523 --- /dev/null +++ b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv4AddressHelper.cs @@ -0,0 +1,12 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System +{ + internal static class IPv4AddressHelper + { + internal const int Invalid = -1; + internal static unsafe long ParseNonCanonical(char* name, int start, ref int end, bool notImplicitFile) => 0; + } +} diff --git a/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv6AddressHelper.cs b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv6AddressHelper.cs new file mode 100644 index 000000000000..2b0cd555cabe --- /dev/null +++ b/src/System.Net.Primitives/tests/UnitTests/Fakes/IPv6AddressHelper.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; + +namespace System +{ + internal static class IPv6AddressHelper + { + internal unsafe static (int longestSequenceStart, int longestSequenceLength) FindCompressionRange( + ushort[] numbers, int fromInclusive, int toExclusive) => (-1, -1); + internal unsafe static bool ShouldHaveIpv4Embedded(ushort[] numbers) => false; + internal unsafe static bool IsValidStrict(char* name, int start, ref int end) => false; + internal static unsafe bool Parse(string address, ushort* numbers, int start, ref string scopeId) => false; + } +} diff --git a/src/System.Net.Primitives/tests/UnitTests/System.Net.Primitives.UnitTests.Tests.csproj b/src/System.Net.Primitives/tests/UnitTests/System.Net.Primitives.UnitTests.Tests.csproj index b5f3db68d947..bd0046aa76f8 100644 --- a/src/System.Net.Primitives/tests/UnitTests/System.Net.Primitives.UnitTests.Tests.csproj +++ b/src/System.Net.Primitives/tests/UnitTests/System.Net.Primitives.UnitTests.Tests.csproj @@ -66,9 +66,10 @@ - - + + + Common\System\StringExtensions.cs From f3e14448d27e5dedf2b928961c585d7ffab282fa Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 14:20:00 -0400 Subject: [PATCH 166/336] A bit more cleanup --- .../src/System/Net/IPv6AddressHelper.cs | 89 ++++--------------- 1 file changed, 15 insertions(+), 74 deletions(-) diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index eccc74923bf5..4dc5f7c683df 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -68,22 +68,21 @@ internal unsafe static bool ShouldHaveIpv4Embedded(ushort[] numbers) } // - // InternalIsValid + // IsValidStrict // // Determine whether a name is a valid IPv6 address. Rules are: // // * 8 groups of 16-bit hex numbers, separated by ':' // * a *single* run of zeros can be compressed using the symbol '::' // * an optional string of a ScopeID delimited by '%' - // * an optional (last) 1 or 2 character prefix length field delimited by '/' // * the last 32 bits in an address can be represented as an IPv4 address // + // Difference between IsValid() and IsValidStrict() is that IsValid() expects part of the string to + // be ipv6 address where as IsValidStrict() expects strict ipv6 address. + // // Inputs: // name - // Domain name field of a URI to check for pattern match with - // IPv6 address - // validateStrictAddress: if set to true, it expects strict ipv6 address. Otherwise it expects - // part of the string in ipv6 format. + // IPv6 address in string format // // Outputs: // Nothing @@ -92,7 +91,7 @@ internal unsafe static bool ShouldHaveIpv4Embedded(ushort[] numbers) // the correct name is terminated by ']' character // // Returns: - // true if has IPv6 format/ipv6 address based on validateStrictAddress, else false + // true if is IPv6 address, else false // // Throws: // Nothing @@ -100,13 +99,12 @@ internal unsafe static bool ShouldHaveIpv4Embedded(ushort[] numbers) // Remarks: MUST NOT be used unless all input indexes are verified and trusted. // start must be next to '[' position, or error is reported - private static unsafe bool InternalIsValid(char* name, int start, ref int end, bool validateStrictAddress) + internal unsafe static bool IsValidStrict(char* name, int start, ref int end) { int sequenceCount = 0; int sequenceLength = 0; bool haveCompressor = false; bool haveIPv4Address = false; - bool havePrefix = false; bool expectingNumber = true; int lastSequence = 1; @@ -120,7 +118,7 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b int i; for (i = start; i < end; ++i) { - if (havePrefix ? (name[i] >= '0' && name[i] <= '9') : Uri.IsHexDigit(name[i])) + if (Uri.IsHexDigit(name[i])) { ++sequenceLength; expectingNumber = false; @@ -218,17 +216,7 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b break; case '/': - if (validateStrictAddress) - { - return false; - } - if ((sequenceCount == 0) || havePrefix) - { - return false; - } - havePrefix = true; - expectingNumber = true; - break; + return false; case '.': if (haveIPv4Address) @@ -263,63 +251,16 @@ private static unsafe bool InternalIsValid(char* name, int start, ref int end, b sequenceLength = 0; } - // - // if the last token was a prefix, check number of digits - // - - if (havePrefix && ((sequenceLength < 1) || (sequenceLength > 2))) - { - return false; - } - // // these sequence counts are -1 because it is implied in end-of-sequence // - int expectedSequenceCount = 8 + (havePrefix ? 1 : 0); - - if (!expectingNumber && (sequenceLength <= 4) && (haveCompressor ? (sequenceCount < expectedSequenceCount) : (sequenceCount == expectedSequenceCount))) - { - return !needsClosingBracket; - } - return false; - } - - // - // IsValidStrict - // - // Determine whether a name is a valid IPv6 address. Rules are: - // - // * 8 groups of 16-bit hex numbers, separated by ':' - // * a *single* run of zeros can be compressed using the symbol '::' - // * an optional string of a ScopeID delimited by '%' - // * the last 32 bits in an address can be represented as an IPv4 address - // - // Difference between IsValid() and IsValidStrict() is that IsValid() expects part of the string to - // be ipv6 address where as IsValidStrict() expects strict ipv6 address. - // - // Inputs: - // name - // IPv6 address in string format - // - // Outputs: - // Nothing - // - // Assumes: - // the correct name is terminated by ']' character - // - // Returns: - // true if is IPv6 address, else false - // - // Throws: - // Nothing - // - - // Remarks: MUST NOT be used unless all input indexes are verified and trusted. - // start must be next to '[' position, or error is reported - internal unsafe static bool IsValidStrict(char* name, int start, ref int end) - { - return InternalIsValid(name, start, ref end, validateStrictAddress:true); + const int ExpectedSequenceCount = 8; + return + !expectingNumber && + (sequenceLength <= 4) && + (haveCompressor ? (sequenceCount < ExpectedSequenceCount) : (sequenceCount == ExpectedSequenceCount)) && + !needsClosingBracket; } // From 92950eb12dd6701d80a37ea6503c77c09bb580ab Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 14:56:40 -0400 Subject: [PATCH 167/336] Fix .csproj for removed file --- .../tests/PalTests/System.Net.Primitives.Pal.Tests.csproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj index 0fee8958acf3..99d4e231dda1 100644 --- a/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj +++ b/src/System.Net.Primitives/tests/PalTests/System.Net.Primitives.Pal.Tests.csproj @@ -127,9 +127,6 @@ - - ProductionCode\System\Net\IPAddressPal.Managed.cs - ProductionCode\System\Net\SocketException.Unix.cs From acbf944c4f83d87bbef84db7b1d0502e410e2972 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 16:34:18 -0400 Subject: [PATCH 168/336] Address PR feedback --- .../src/System/Net/IPAddressParser.cs | 28 ++++----- .../src/System/Net/IPv6AddressHelper.cs | 57 +------------------ 2 files changed, 12 insertions(+), 73 deletions(-) diff --git a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs index a6e145fca6fa..99fc88d37efc 100644 --- a/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs +++ b/src/System.Net.Primitives/src/System/Net/IPAddressParser.cs @@ -127,6 +127,8 @@ public static unsafe bool Ipv4StringToAddress(string ipString, out long address) if (tmpAddr != IPv4AddressHelper.Invalid && end == ipString.Length) { + // IPv4AddressHelper.ParseNonCanonical returns the bytes in the inverse order. + // Reverse them and return success. address = ((0xFF000000 & tmpAddr) >> 24) | ((0x00FF0000 & tmpAddr) >> 8) | @@ -136,6 +138,7 @@ public static unsafe bool Ipv4StringToAddress(string ipString, out long address) } else { + // Failed to parse the address. address = 0; return false; } @@ -233,31 +236,22 @@ private static void AppendSections(ushort[] address, int fromInclusive, int toEx } /// Appends a number as hexadecimal (without the leading "0x") to the StringBuilder. - private static unsafe void AppendHex(int value, StringBuilder buffer) + private static unsafe void AppendHex(ushort value, StringBuilder buffer) { - const int MaxLength = 8; + const int MaxLength = sizeof(ushort) * 2; // two hex chars per byte char* chars = stackalloc char[MaxLength]; - int len = 0; + int pos = MaxLength; do { - int rem; - value = Math.DivRem(value, 16, out rem); - chars[len++] = rem < 10 ? - (char)('0' + rem) : - (char)('a' + (rem - 10)); + int rem = value % 16; + value /= 16; + chars[--pos] = rem < 10 ? (char)('0' + rem) : (char)('a' + (rem - 10)); + Debug.Assert(pos >= 0); } while (value != 0); - int mid = len / 2; - for (int i = 0; i < mid; i++) - { - char c = chars[i]; - chars[i] = chars[len - i - 1]; - chars[len - i - 1] = c; - } - - buffer.Append(chars, len); + buffer.Append(chars + pos, MaxLength - pos); } /// Extracts the IPv4 address from the end of the IPv6 address byte array. diff --git a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs index 4dc5f7c683df..12582da222ad 100644 --- a/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs +++ b/src/System.Net.Primitives/src/System/Net/IPv6AddressHelper.cs @@ -199,11 +199,7 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) { if (haveCompressor) { - - // // can only have one per IPv6 address - // - return false; } haveCompressor = true; @@ -251,9 +247,7 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) sequenceLength = 0; } - // // these sequence counts are -1 because it is implied in end-of-sequence - // const int ExpectedSequenceCount = 8; return @@ -284,14 +278,11 @@ internal unsafe static bool IsValidStrict(char* name, int start, ref int end) // 16-bit numbers, the characters ':' and '/', and a possible IPv4 // address // - // Returns: - // true if this is a loopback, false otherwise. There is no falure indication as the sting must be a valid one. - // // Throws: // Nothing // - internal static unsafe bool Parse(string address, ushort* numbers, int start, ref string scopeId) + internal static unsafe void Parse(string address, ushort* numbers, int start, ref string scopeId) { int number = 0; int index = 0; @@ -338,21 +329,14 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re } else if ((compressorIndex < 0) && (index < 6)) { - - // // no point checking for IPv4 address if we don't // have a compressor or we haven't seen 6 16-bit // numbers yet - // - break; } - // // check to see if the upcoming number is really an IPv4 // address. If it is, convert it to 2 ushort numbers - // - for (int j = i; j < address.Length && (address[j] != ']') && (address[j] != ':') && @@ -363,16 +347,12 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re if (address[j] == '.') { - - // // we have an IPv4 address. Find the end of it: // we know that since we have a valid IPv6 // address, the only things that will terminate // the IPv4 address are the prefix delimiter '/' // or the end-of-string (which we conveniently // delimited with ']') - // - while (j < address.Length && (address[j] != ']') && (address[j] != '/') && (address[j] != '%')) { ++j; @@ -382,11 +362,8 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re numbers[index++] = (ushort)number; i = j; - // // set this to avoid adding another number to // the array if there's a prefix - // - number = 0; numberIsValid = false; break; @@ -401,11 +378,8 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re numberIsValid = false; } - // // since we have a valid IPv6 address string, the prefix // length is the last token in the string - // - for (++i; address[i] != ']'; ++i) { PrefixLength = PrefixLength * 10 + (address[i] - '0'); @@ -418,24 +392,17 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re } } - // // add number to the array if its not the prefix length or part of // an IPv4 address that's already been handled - // - if (numberIsValid) { numbers[index++] = (ushort)number; } - // // if we had a compressor sequence ("::") then we need to expand the // numbers array - // - if (compressorIndex > 0) { - int toIndex = NumberOfLabels - 1; int fromIndex = index - 1; @@ -445,28 +412,6 @@ internal static unsafe bool Parse(string address, ushort* numbers, int start, re numbers[fromIndex--] = 0; } } - - // - // is the address loopback? Loopback is defined as one of: - // - // 0:0:0:0:0:0:0:1 - // 0:0:0:0:0:0:127.0.0.1 == 0:0:0:0:0:0:7F00:0001 - // 0:0:0:0:0:FFFF:127.0.0.1 == 0:0:0:0:0:FFFF:7F00:0001 - // - - return ((numbers[0] == 0) - && (numbers[1] == 0) - && (numbers[2] == 0) - && (numbers[3] == 0) - && (numbers[4] == 0)) - && (((numbers[5] == 0) - && (numbers[6] == 0) - && (numbers[7] == 1)) - || (((numbers[6] == 0x7F00) - && (numbers[7] == 0x0001)) - && ((numbers[5] == 0) - || (numbers[5] == 0xFFFF)))); - } } } From 448c9526c150633ba4f789664494558f1607d5db Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 16:34:32 -0400 Subject: [PATCH 169/336] Add a few more tests --- .../tests/FunctionalTests/IPAddressParsing.cs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs index f02f6f4e7663..550e9ef79889 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs @@ -21,8 +21,6 @@ public class IPAddressParsing [InlineData("20.65535", "20.0.255.255")] [InlineData("157.3873051", "157.59.25.27")] [InlineData("157.6427", "157.0.25.27")] - [InlineData("0313.027035210", "203.92.58.136")] - [InlineData("0313.0134.035210", "203.92.58.136")] [InlineData("65535", "0.0.255.255")] [InlineData("65536", "0.1.0.0")] [InlineData("1434328179", "85.126.28.115")] @@ -40,6 +38,8 @@ public class IPAddressParsing [InlineData("0x89.0xab.0xcd.0xef", "137.171.205.239")] [InlineData("0xff.0x7f.0x20.0x01", "255.127.32.1")] // Octal + [InlineData("0313.027035210", "203.92.58.136")] + [InlineData("0313.0134.035210", "203.92.58.136")] [InlineData("0377.0377.0377.0377", "255.255.255.255")] [InlineData("037777777776", "255.255.255.254")] [InlineData("037777777777", "255.255.255.255")] @@ -71,6 +71,8 @@ public void ParseIPv4_ValidAddress_Success(string address, string expected) [InlineData(" ")] // whitespace [InlineData(" ")] // whitespace [InlineData(" 127.0.0.1")] // leading whitespace + [InlineData("127.0.0.1 ")] // trailing whitespace + [InlineData(" 127.0.0.1 ")] // leading and trailing whitespace [InlineData("192.168.0.0/16")] // with subnet [InlineData("192.168.0.0:80")] // with port [InlineData("192.168.0.1:80")] // with port @@ -235,6 +237,9 @@ public void ParseIPv4_InvalidAddress_Failure(string address) [InlineData("[Fe08::1]", "fe08::1")] // brackets dropped [InlineData("[Fe08::1]:0x80", "fe08::1")] // brackets and port dropped [InlineData("[Fe08::1]:0xFA", "fe08::1")] // brackets and port dropped + [InlineData("2001:0db8::0001", "2001:db8::1")] // leading 0s suppressed + [InlineData("3731:54:65fe:2::a7", "3731:54:65fe:2::a7")] // Unicast + [InlineData("3731:54:65fe:2::a8", "3731:54:65fe:2::a8")] // Anycast // ScopeID [InlineData("Fe08::1%13542", "fe08::1%13542")] [InlineData("1::%1", "1::%1")] @@ -259,6 +264,15 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri // Validate the ToString representation can be parsed as well back into the same IP IPAddress ip2 = IPAddress.Parse(ip.ToString()); Assert.Equal(ip, ip2); + + // Validate that anything that doesn't already start with brackets + // can be surrounded with brackets and still parse successfully. + if (!address.StartsWith("[")) + { + Assert.Equal( + expected.ToLowerInvariant(), + IPAddress.Parse("[" + address + "]").ToString()); + } } [Theory] @@ -288,6 +302,7 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData("1:")] // trailing single colon [InlineData(" ::1")] // leading whitespace [InlineData("::1 ")] // trailing whitespace + [InlineData(" ::1 ")] // leading and trailing whitespace [InlineData("1::1::1")] // ambiguous failure [InlineData("1234::ABCD:1234::ABCD:1234:ABCD")] // can only use :: once [InlineData("1:1\u67081:1:1")] // invalid char @@ -302,6 +317,8 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData("[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/")] // errneous ending slash after ignored port [InlineData("::1234%0x12")] // invalid scope ID [InlineData("")] // empty + [InlineData(" ")] // whitespace + [InlineData(" ")] // whitespace public void ParseIPv6_InvalidAddress_ThrowsFormatException(string invalidAddress) { FormatException fe = Assert.Throws(() => IPAddress.Parse(invalidAddress)); From 5fe5f9aae7b2987adc7082f90712b265bee5eefc Mon Sep 17 00:00:00 2001 From: Jeremy Barton Date: Tue, 18 Apr 2017 14:06:42 -0700 Subject: [PATCH 170/336] Enable the creation of certificates and cert requests The new CertificateRequest class allows a caller to specify a subject name, public key, and extensions for an extension request into a PKCS#10 blob to send to a certificate authority. The new CertificateRequest class allows a caller to set all of the fields in an X.509 v3 certificate, with the exception of the v2 IssuerUniqueId and SubjectUniqueId fields, as they are considered deprecated. Accelerators exist for self-signing, as well as chain-signing given an existing X509Certificate2 instance with a private key already associated. This change also adds CopyWithPrivateKey(this X509Certificate2 cert, {RSA|DSA|ECDSA} key) to enable scenarios where a public cert and private key are held independently but a unification is desired. This makes UNIX-style .pem/.key loading easier, but still requires users understand how to load the .key file. --- .../Interop.X509.cs | 40 ++ .../Cryptography/DSASecurityTransforms.cs | 2 +- .../Security/Cryptography/DerEncoder.cs | 247 +++++++- .../Cryptography/ECDsaSecurityTransforms.cs | 2 +- .../Cryptography/RSASecurityTransforms.cs | 2 +- .../pal_x509.cpp | 188 ++++++ .../pal_x509.h | 17 + .../Cryptography/CapiHelper.Shared.cs | 2 +- ....Security.Cryptography.X509Certificates.cs | 40 ++ ...urity.Cryptography.X509Certificates.csproj | 3 +- .../Internal/Cryptography/EncodingHelpers.cs | 94 +++ .../src/Internal/Cryptography/Helpers.cs | 31 + .../Internal/Cryptography/ICertificatePal.cs | 3 + .../src/Internal/Cryptography/Oids.cs | 16 +- .../Cryptography/Pal.OSX/CertificatePal.cs | 117 +++- .../Pal.Unix/OpenSslX509CertificateReader.cs | 72 +++ .../CertificatePal.CspParametersStub.cs | 71 --- .../Pal.Windows/CertificatePal.PrivateKey.cs | 363 ++++++++++++ .../Pal.Windows/Native/Interop.crypt32.cs | 3 + .../src/Resources/Strings.resx | 33 ++ ...urity.Cryptography.X509Certificates.csproj | 27 +- .../X509Certificates/CertificateRequest.cs | 460 +++++++++++++++ .../DSACertificateExtensions.cs | 31 + .../ECDsaCertificateExtensions.cs | 81 ++- .../ECDsaX509SignatureGenerator.cs | 111 ++++ .../X509Certificates/GeneralNameEncoder.cs | 88 +++ .../Pkcs10CertificationRequestInfo.cs | 84 +++ .../X509Certificates/Pkcs9ExtensionRequest.cs | 52 ++ .../RSACertificateExtensions.cs | 30 +- .../RSAPkcs1X509SignatureGenerator.cs | 77 +++ .../SubjectAlternativeNameBuilder.cs | 65 ++ .../X509Certificates/TbsCertificate.cs | 206 +++++++ .../X509Certificates/X501Attribute.cs | 14 + .../X509SignatureGenerator.cs | 47 ++ .../CertificateRequestApiTests.cs | 78 +++ .../CertificateRequestChainTests.cs | 305 ++++++++++ .../CertificateRequestUsageTests.cs | 372 ++++++++++++ .../DSAX509SignatureGenerator.cs | 177 ++++++ .../ECDsaX509SignatureGeneratorTests.cs | 139 +++++ .../tests/CertificateCreation/EccTestData.cs | 207 +++++++ .../PrivateKeyAssociationTests.cs | 554 ++++++++++++++++++ .../RSAPkcs1X509SignatureGeneratorTests.cs | 147 +++++ .../SubjectAltNameBuilderTests.cs | 266 +++++++++ .../tests/DSAOther.cs | 59 ++ .../tests/ECDsaOther.cs | 63 ++ .../tests/RSAOther.cs | 98 ++++ ...Cryptography.X509Certificates.Tests.csproj | 14 +- .../tests/TestData.cs | 102 ++++ 48 files changed, 5189 insertions(+), 111 deletions(-) create mode 100644 src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs delete mode 100644 src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.CspParametersStub.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaX509SignatureGenerator.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/GeneralNameEncoder.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSAPkcs1X509SignatureGenerator.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X501Attribute.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestApiTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/DSAX509SignatureGenerator.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/ECDsaX509SignatureGeneratorTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/EccTestData.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/PrivateKeyAssociationTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/RSAPkcs1X509SignatureGeneratorTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/SubjectAltNameBuilderTests.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/DSAOther.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/ECDsaOther.cs create mode 100644 src/System.Security.Cryptography.X509Certificates/tests/RSAOther.cs diff --git a/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509.cs b/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509.cs index 4bf5a41f0d16..88dffd90696b 100644 --- a/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509.cs +++ b/src/Common/src/Interop/OSX/System.Security.Cryptography.Native.Apple/Interop.X509.cs @@ -74,6 +74,14 @@ private static extern int AppleCryptoNative_X509ExportData( out SafeCFDataHandle pExportOut, out int pOSStatus); + [DllImport(Libraries.AppleCryptoNative)] + private static extern int AppleCryptoNative_X509CopyWithPrivateKey( + SafeSecCertificateHandle certHandle, + SafeSecKeyRefHandle privateKeyHandle, + SafeKeychainHandle targetKeychain, + out SafeSecIdentityHandle pIdentityHandleOut, + out int pOSStatus); + internal static byte[] X509GetRawData(SafeSecCertificateHandle cert) { int osStatus; @@ -342,6 +350,38 @@ internal static bool X509DemuxAndRetainHandle( } } + internal static SafeSecIdentityHandle X509CopyWithPrivateKey( + SafeSecCertificateHandle certHandle, + SafeSecKeyRefHandle privateKeyHandle, + SafeKeychainHandle targetKeychain) + { + SafeSecIdentityHandle identityHandle; + int osStatus; + + int result = AppleCryptoNative_X509CopyWithPrivateKey( + certHandle, + privateKeyHandle, + targetKeychain, + out identityHandle, + out osStatus); + + if (result == 1) + { + Debug.Assert(!identityHandle.IsInvalid); + return identityHandle; + } + + identityHandle.Dispose(); + + if (result == 0) + { + throw CreateExceptionForOSStatus(osStatus); + } + + Debug.Fail($"AppleCryptoNative_X509CopyWithPrivateKey returned {result}"); + throw new CryptographicException(); + } + private static byte[] X509Export(X509ContentType contentType, SafeCreateHandle cfPassphrase, IntPtr[] certHandles) { Debug.Assert(contentType == X509ContentType.Pkcs7 || contentType == X509ContentType.Pkcs12); diff --git a/src/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs b/src/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs index 5ff0be5f4174..f94d6cf00456 100644 --- a/src/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs +++ b/src/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs @@ -246,7 +246,7 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } - private SecKeyPair GetKeys() + internal SecKeyPair GetKeys() { SecKeyPair current = _keys; diff --git a/src/Common/src/System/Security/Cryptography/DerEncoder.cs b/src/Common/src/System/Security/Cryptography/DerEncoder.cs index cb196b5c3a4c..0d49b933bd3d 100644 --- a/src/Common/src/System/Security/Cryptography/DerEncoder.cs +++ b/src/Common/src/System/Security/Cryptography/DerEncoder.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Numerics; @@ -19,6 +20,13 @@ internal static class DerEncoder private const byte ConstructedSequenceTag = ConstructedFlag | (byte)DerSequenceReader.DerTag.Sequence; private const byte ConstructedSetTag = ConstructedFlag | (byte)DerSequenceReader.DerTag.Set; + private static readonly byte[][] s_nullTlv = + { + new byte[] { (byte)DerSequenceReader.DerTag.Null }, + new byte[] { 0 }, + Array.Empty(), + }; + private static byte[] EncodeLength(int length) { Debug.Assert(length >= 0); @@ -384,6 +392,20 @@ internal static byte[][] SegmentedEncodeOctetString(byte[] data) }; } + internal static byte[][] SegmentedEncodeNull() + { + return s_nullTlv; + } + + /// + /// Encode an object identifier (Oid). + /// + /// The encoded OID + internal static byte[] EncodeOid(string oidValue) + { + return ConcatenateArrays(SegmentedEncodeOid(oidValue)); + } + /// /// Encode the segments { tag, length, value } of an object identifier (Oid). /// @@ -397,6 +419,19 @@ internal static byte[][] SegmentedEncodeOid(Oid oid) // CryptEncodeObject. string oidValue = oid.Value; + return SegmentedEncodeOid(oidValue); + } + + /// + /// Encode the segments { tag, length, value } of an object identifier (Oid). + /// + /// The encoded segments { tag, length, value } + internal static byte[][] SegmentedEncodeOid(string oidValue) + { + // All exceptions herein should just be "CryptographicException", because that's + // how they'd come back from Desktop/Windows, since it was a non-success result of calling + // CryptEncodeObject. + if (string.IsNullOrEmpty(oidValue)) throw new CryptographicException(SR.Argument_InvalidOidValue); if (oidValue.Length < 3 /* "1.1" is the shortest value */) @@ -509,6 +544,11 @@ internal static byte[][] SegmentedEncodeUtf8String(char[] chars, int offset, int /// Series of Tag-Length-Value triplets to build into one sequence. /// The encoded segments { tag, length, value } internal static byte[][] ConstructSegmentedSequence(params byte[][][] items) + { + return ConstructSegmentedSequence((IEnumerable)items); + } + + internal static byte[][] ConstructSegmentedSequence(IEnumerable items) { Debug.Assert(items != null); @@ -560,6 +600,30 @@ internal static byte[][] ConstructSegmentedSet(params byte[][][] items) { Debug.Assert(items != null); + byte[][][] sortedItems = (byte[][][])items.Clone(); + Array.Sort(sortedItems, AsnSetValueComparer.Instance); + byte[] data = ConcatenateArrays(sortedItems); + + return new byte[][] + { + new byte[] { ConstructedSetTag }, + EncodeLength(data.Length), + data, + }; + } + + /// + /// Make a constructed SET of the byte-triplets of the contents, but leave + /// the value in a segmented form (to be included in a larger SEQUENCE). + /// + /// This method assumes that the data is presorted, and writes it as-is. + /// + /// Series of Tag-Length-Value triplets to build into one set. + /// The encoded segments { tag, length, value } + internal static byte[][] ConstructSegmentedPresortedSet(params byte[][][] items) + { + Debug.Assert(items != null); + byte[] data = ConcatenateArrays(items); return new byte[][] @@ -723,6 +787,109 @@ internal static byte[][] SegmentedEncodeIA5String(char[] chars, int offset, int }; } + internal static byte[][] SegmentedEncodeUtcTime(DateTime utcTime) + { + Debug.Assert(utcTime.Kind == DateTimeKind.Utc); + + // Low-allocating encoding of YYMMDDHHmmssZ + byte[] asciiDateBytes = new byte[13]; + + int year = utcTime.Year; + int month = utcTime.Month; + int day = utcTime.Day; + int hour = utcTime.Hour; + int minute = utcTime.Minute; + int second = utcTime.Second; + + const byte Char0 = (byte)'0'; + + asciiDateBytes[1] = (byte)(Char0 + (year % 10)); + year /= 10; + asciiDateBytes[0] = (byte)(Char0 + (year % 10)); + + asciiDateBytes[3] = (byte)(Char0 + (month % 10)); + month /= 10; + asciiDateBytes[2] = (byte)(Char0 + (month % 10)); + + asciiDateBytes[5] = (byte)(Char0 + (day % 10)); + day /= 10; + asciiDateBytes[4] = (byte)(Char0 + (day % 10)); + + asciiDateBytes[7] = (byte)(Char0 + (hour % 10)); + hour /= 10; + asciiDateBytes[6] = (byte)(Char0 + (hour % 10)); + + asciiDateBytes[9] = (byte)(Char0 + (minute % 10)); + minute /= 10; + asciiDateBytes[8] = (byte)(Char0 + (minute % 10)); + + asciiDateBytes[11] = (byte)(Char0 + (second % 10)); + second /= 10; + asciiDateBytes[10] = (byte)(Char0 + (second % 10)); + + asciiDateBytes[12] = (byte)'Z'; + + return new[] + { + new byte[] { (byte)DerSequenceReader.DerTag.UTCTime }, + EncodeLength(asciiDateBytes.Length), + asciiDateBytes, + }; + } + + internal static byte[][] SegmentedEncodeGeneralizedTime(DateTime utcTime) + { + Debug.Assert(utcTime.Kind == DateTimeKind.Utc); + + // Low-allocating encoding of YYYYMMDDHHmmssZ + byte[] asciiDateBytes = new byte[15]; + + int year = utcTime.Year; + int month = utcTime.Month; + int day = utcTime.Day; + int hour = utcTime.Hour; + int minute = utcTime.Minute; + int second = utcTime.Second; + + const byte Char0 = (byte)'0'; + + asciiDateBytes[3] = (byte)(Char0 + (year % 10)); + year /= 10; + asciiDateBytes[2] = (byte)(Char0 + (year % 10)); + year /= 10; + asciiDateBytes[1] = (byte)(Char0 + (year % 10)); + year /= 10; + asciiDateBytes[0] = (byte)(Char0 + (year % 10)); + + asciiDateBytes[5] = (byte)(Char0 + (month % 10)); + month /= 10; + asciiDateBytes[4] = (byte)(Char0 + (month % 10)); + + asciiDateBytes[7] = (byte)(Char0 + (day % 10)); + day /= 10; + asciiDateBytes[6] = (byte)(Char0 + (day % 10)); + + asciiDateBytes[9] = (byte)(Char0 + (hour % 10)); + hour /= 10; + asciiDateBytes[8] = (byte)(Char0 + (hour % 10)); + + asciiDateBytes[11] = (byte)(Char0 + (minute % 10)); + minute /= 10; + asciiDateBytes[10] = (byte)(Char0 + (minute % 10)); + + asciiDateBytes[13] = (byte)(Char0 + (second % 10)); + second /= 10; + asciiDateBytes[12] = (byte)(Char0 + (second % 10)); + + asciiDateBytes[14] = (byte)'Z'; + + return new[] + { + new byte[] { (byte)DerSequenceReader.DerTag.GeneralizedTime }, + EncodeLength(asciiDateBytes.Length), + asciiDateBytes, + }; + } /// /// Make a constructed SEQUENCE of the byte-triplets of the contents. @@ -884,7 +1051,12 @@ private static bool IsPrintableStringCharacter(char c) return false; } - private static byte[] ConcatenateArrays(byte[][][] segments) + private static byte[] ConcatenateArrays(params byte[][][] segments) + { + return ConcatenateArrays((IEnumerable)segments); + } + + private static byte[] ConcatenateArrays(IEnumerable segments) { int length = 0; @@ -911,5 +1083,78 @@ private static byte[] ConcatenateArrays(byte[][][] segments) return concatenated; } + + private class AsnSetValueComparer : IComparer, IComparer + { + public static AsnSetValueComparer Instance { get; } = new AsnSetValueComparer(); + + public int Compare(byte[][] x, byte[][] y) + { + Debug.Assert(x != null && y != null, "Comparing one more more null values"); + Debug.Assert(x.Length == 3, $"x.Length is {x.Length} when it should be 3"); + Debug.Assert(y.Length == 3, $"y.Length is {y.Length} when it should be 3"); + + // ITU-T X.690 11.6 Set-of components (CER/DER) + // The encodings of the component values of a set-of value shall appear in + // ascending order, the encodings being compared as octet strings with the + // shorter components being padded at their trailing end with 0-octets. + // + // ITU-T X.690 10.3 Set components (DER) + // The encodings of the component values of a set value shall appear in an + // order determined by their tags as specified in 8.6 of + // Rec. ITU-T X.680 | ISO/IEC 8824-1. + // + // ITU-T X.680 8.6 + // The canonical order for tags is based on the outermost tag of each type + // and is defined as follows: + // a) those elements or alternatives with universal class tags shall appear + // first, followed by those with application class tags, followed by those + // with context-specific tags, followed by those with private class tags; + // b) within each class of tags, the elements or alternatives shall appear + // in ascending order of their tag numbers. + // + // ITU-T X.690 8.1.2.2 says: + // Universal: 0b00xxxxxx + // Application: 0b01xxxxxx + // Context-Specific: 0b10xxxxxx + // Private: 0b11xxxxxx + // + // The net result is that the DER order is just lexicographic ordering by + // the TLV (tag-length-value) encoding. The comment in 11.6 about treating + // a shorter value as if it was right-padded with zeroes doesn't apply to DER, + // due to the length encoding. But for indefinite-length CER it would. + Debug.Assert(x[0].Length == 1, $"x[0].Length is {x[0].Length} when it should be 1"); + Debug.Assert(y[0].Length == 1, $"y[0].Length is {y[0].Length} when it should be 1"); + + int comparison = x[0][0] - y[0][0]; + + if (comparison != 0) + return comparison; + + // The length encoding will always sort lexicographically based on its value, due to the + // length-or-length-length first byte. So skip over the [1] values and compare [2].Length. + comparison = x[2].Length - y[2].Length; + + if (comparison != 0) + return comparison; + + for (int i = 0; i < x[2].Length; i++) + { + comparison = x[2][i] - y[2][i]; + + if (comparison != 0) + { + return comparison; + } + } + + return 0; + } + + public int Compare(object x, object y) + { + return Compare(x as byte[][], y as byte[][]); + } + } } } diff --git a/src/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs b/src/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs index fdd4600e47d7..7d41d3a0cd24 100644 --- a/src/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs +++ b/src/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs @@ -302,7 +302,7 @@ private void SetKey(SecKeyPair newKeyPair) } } - private SecKeyPair GetKeys() + internal SecKeyPair GetKeys() { SecKeyPair current = _keys; diff --git a/src/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs b/src/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs index 80ea3837dae3..e70a4d6aa416 100644 --- a/src/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs +++ b/src/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs @@ -287,7 +287,7 @@ private static Interop.AppleCrypto.PAL_HashAlgorithm PalAlgorithmFromAlgorithmNa throw new CryptographicException(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithmName.Name); } - private SecKeyPair GetKeys() + internal SecKeyPair GetKeys() { SecKeyPair current = _keys; diff --git a/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.cpp b/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.cpp index 31942b193da7..d120cbc857b7 100644 --- a/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.cpp +++ b/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.cpp @@ -488,3 +488,191 @@ extern "C" int32_t AppleCryptoNative_X509GetRawData(SecCertificateRef cert, CFDa *pOSStatus = SecItemExport(cert, dataFormat, 0, &keyParams, ppDataOut); return (*pOSStatus == noErr); } + +static OSStatus AddKeyToKeychain(SecKeyRef privateKey, SecKeychainRef targetKeychain) +{ + // This is quite similar to pal_seckey's ExportImportKey, but + // a) is used to put something INTO a keychain, instead of to take it out. + // b) Doesn't assume that the input should be CFRelease()d and overwritten. + // c) Doesn't return/emit the imported key reference. + // d) Works on private keys. + SecExternalFormat dataFormat = kSecFormatWrappedPKCS8; + CFDataRef exportData = nullptr; + + SecItemImportExportKeyParameters keyParams = {}; + keyParams.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION; + keyParams.passphrase = CFSTR("ExportImportPassphrase"); + + OSStatus status = SecItemExport(privateKey, dataFormat, 0, &keyParams, &exportData); + + SecExternalFormat actualFormat = dataFormat; + SecExternalItemType actualType = kSecItemTypePrivateKey; + CFArrayRef outItems = nullptr; + + if (status == noErr) + { + status = + SecItemImport(exportData, nullptr, &actualFormat, &actualType, 0, &keyParams, targetKeychain, &outItems); + } + + if (exportData != nullptr) + CFRelease(exportData); + + CFRelease(keyParams.passphrase); + keyParams.passphrase = nullptr; + + if (outItems != nullptr) + CFRelease(outItems); + + return status; +} + +extern "C" int32_t AppleCryptoNative_X509CopyWithPrivateKey(SecCertificateRef cert, + SecKeyRef privateKey, + SecKeychainRef targetKeychain, + SecIdentityRef* pIdentityOut, + int32_t* pOSStatus) +{ + if (pIdentityOut != nullptr) + *pIdentityOut = nullptr; + if (pOSStatus != nullptr) + *pOSStatus = noErr; + + if (cert == nullptr || privateKey == nullptr || targetKeychain == nullptr || pIdentityOut == nullptr || + pOSStatus == nullptr) + { + return -1; + } + + SecKeychainRef keyKeychain = nullptr; + + OSStatus status = SecKeychainItemCopyKeychain(reinterpret_cast(privateKey), &keyKeychain); + SecKeychainItemRef itemCopy = nullptr; + + // This only happens with an ephemeral key, so the keychain we're adding it to is temporary. + if (status == errSecNoSuchKeychain) + { + status = AddKeyToKeychain(privateKey, targetKeychain); + } + + if (itemCopy != nullptr) + { + CFRelease(itemCopy); + } + + CFMutableDictionaryRef query = nullptr; + + if (status == noErr) + { + query = CFDictionaryCreateMutable( + kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + + if (query == nullptr) + { + status = errSecAllocate; + } + } + + CFArrayRef searchList = nullptr; + + if (status == noErr) + { + searchList = CFArrayCreate( + nullptr, const_cast(reinterpret_cast(&targetKeychain)), 1, &kCFTypeArrayCallBacks); + + if (searchList == nullptr) + { + status = errSecAllocate; + } + } + + CFArrayRef itemMatch = nullptr; + + if (status == noErr) + { + itemMatch = CFArrayCreate( + nullptr, const_cast(reinterpret_cast(&cert)), 1, &kCFTypeArrayCallBacks); + + if (itemMatch == nullptr) + { + status = errSecAllocate; + } + } + + CFTypeRef result = nullptr; + + if (status == noErr) + { + CFDictionarySetValue(query, kSecReturnRef, kCFBooleanTrue); + CFDictionarySetValue(query, kSecMatchSearchList, searchList); + CFDictionarySetValue(query, kSecMatchItemList, itemMatch); + CFDictionarySetValue(query, kSecClass, kSecClassIdentity); + + status = SecItemCopyMatching(query, &result); + + if (status != noErr && result != nullptr) + { + CFRelease(result); + result = nullptr; + } + + bool added = false; + + if (status == errSecItemNotFound) + { + status = SecCertificateAddToKeychain(cert, targetKeychain); + + added = (status == noErr); + } + + if (result == nullptr && status == noErr) + { + status = SecItemCopyMatching(query, &result); + } + + if (result != nullptr && status == noErr) + { + + if (CFGetTypeID(result) != SecIdentityGetTypeID()) + { + status = errSecItemNotFound; + } + else + { + SecIdentityRef identity = reinterpret_cast(const_cast(result)); + CFRetain(identity); + *pIdentityOut = identity; + } + } + + if (added) + { + // The same query that was used to find the identity can be used + // to find/delete the certificate, as long as we fix the class to just the cert. + CFDictionarySetValue(query, kSecClass, kSecClassCertificate); + + // Ignore the output status, there's no point in telling the user + // that the cleanup failed, since that just makes them have a dirty keychain + // AND their program didn't work. + SecItemDelete(query); + } + } + + if (result != nullptr) + CFRelease(result); + + if (itemMatch != nullptr) + CFRelease(itemMatch); + + if (searchList != nullptr) + CFRelease(searchList); + + if (query != nullptr) + CFRelease(query); + + if (keyKeychain != nullptr) + CFRelease(keyKeychain); + + *pOSStatus = status; + return status == noErr; +} diff --git a/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.h b/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.h index ecd30c395d67..597ab282569c 100644 --- a/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.h +++ b/src/Native/Unix/System.Security.Cryptography.Native.Apple/pal_x509.h @@ -156,3 +156,20 @@ ppDataOut: Receives a CFDataRef with the exported blob pOSStatus: Receives the result of SecItemExport */ extern "C" int32_t AppleCryptoNative_X509GetRawData(SecCertificateRef cert, CFDataRef* ppDataOut, int32_t* pOSStatus); + +/* +Find a SecIdentityRef for the given cert and private key in the target keychain. +If the key does not belong to any keychain it is added to the target keychain and left there. +If the certificate does not belong to the target keychain it is added and removed. + +Returns 1 on success, 0 on failure, any other value indicates invalid state. + +Output: +pIdentityOut: Receives the SecIdentityRef of the mated cert/key pair. +pOSStatus: Receives the result of the last executed system call. +*/ +extern "C" int32_t AppleCryptoNative_X509CopyWithPrivateKey(SecCertificateRef cert, + SecKeyRef privateKey, + SecKeychainRef targetKeychain, + SecIdentityRef* pIdentityOut, + int32_t* pOSStatus); diff --git a/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/CapiHelper.Shared.cs b/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/CapiHelper.Shared.cs index a63bb4f33ae6..b2a401ccae57 100644 --- a/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/CapiHelper.Shared.cs +++ b/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography/CapiHelper.Shared.cs @@ -167,7 +167,7 @@ internal static RSAParameters ToRSAParameters(this byte[] cspBlob, bool includeP byte bVersion = br.ReadByte(); // BLOBHEADER.bVersion: Expected to be 0x2, though there's no check for backward compat reasons. br.ReadUInt16(); // BLOBHEADER.wReserved int algId = br.ReadInt32(); // BLOBHEADER.aiKeyAlg - if (algId != CALG_RSA_KEYX) + if (algId != CALG_RSA_KEYX && algId != CALG_RSA_SIGN) throw new PlatformNotSupportedException(); // The FCall this code was ported from supports other algid's but we're only porting what we use. int magic = br.ReadInt32(); // RSAPubKey.magic: Expected to be 0x31415352 ('RSA1') or 0x32415352 ('RSA2') diff --git a/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.cs b/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.cs index 64eb709ff9c3..7676b7338db2 100644 --- a/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.cs +++ b/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.cs @@ -18,13 +18,32 @@ protected override void Dispose(bool disposing) { } namespace System.Security.Cryptography.X509Certificates { + public sealed partial class CertificateRequest + { + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(System.Security.Cryptography.X509Certificates.X500DistinguishedName subjectName, System.Security.Cryptography.X509Certificates.PublicKey publicKey, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(string subjectName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public CertificateRequest(string subjectName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm) { } + public System.Collections.ObjectModel.Collection CertificateExtensions { get { throw null; } } + public System.Security.Cryptography.HashAlgorithmName HashAlgorithm { get { throw null; } } + public System.Security.Cryptography.X509Certificates.PublicKey PublicKey { get { throw null; } } + public System.Security.Cryptography.X509Certificates.X500DistinguishedName SubjectName { get { throw null; } } + public System.Security.Cryptography.X509Certificates.X509Certificate2 Create(System.Security.Cryptography.X509Certificates.X500DistinguishedName issuerName, System.Security.Cryptography.X509Certificates.X509SignatureGenerator generator, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 Create(System.Security.Cryptography.X509Certificates.X509Certificate2 issuerCertificate, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber) { throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 CreateSelfSigned(System.DateTimeOffset notBefore, System.DateTimeOffset notAfter) { throw null; } + public byte[] CreateSigningRequest() { throw null; } + public byte[] CreateSigningRequest(System.Security.Cryptography.X509Certificates.X509SignatureGenerator signatureGenerator) { throw null; } + } public static partial class DSACertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.DSA privateKey) { throw null; } public static System.Security.Cryptography.DSA GetDSAPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.DSA GetDSAPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } public static partial class ECDsaCertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.ECDsa privateKey) { throw null; } public static System.Security.Cryptography.ECDsa GetECDsaPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.ECDsa GetECDsaPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } @@ -47,6 +66,7 @@ public PublicKey(System.Security.Cryptography.Oid oid, System.Security.Cryptogra } public static partial class RSACertificateExtensions { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 CopyWithPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.RSA privateKey) { throw null; } public static System.Security.Cryptography.RSA GetRSAPrivateKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } public static System.Security.Cryptography.RSA GetRSAPublicKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw null; } } @@ -66,6 +86,16 @@ public enum StoreName TrustedPeople = 7, TrustedPublisher = 8, } + public sealed partial class SubjectAlternativeNameBuilder + { + public SubjectAlternativeNameBuilder() { } + public void AddDnsName(string dnsName) { } + public void AddEmailAddress(string emailAddress) { } + public void AddIpAddress(System.Net.IPAddress ipAddress) { } + public void AddUri(System.Uri uri) { } + public void AddUserPrincipalName(string upn) { } + public System.Security.Cryptography.X509Certificates.X509Extension Build(bool critical=false) { throw null; } + } public sealed partial class X500DistinguishedName : System.Security.Cryptography.AsnEncodedData { public X500DistinguishedName(byte[] encodedDistinguishedName) { } @@ -501,6 +531,16 @@ public enum X509RevocationMode Offline = 2, Online = 1, } + public abstract partial class X509SignatureGenerator + { + protected X509SignatureGenerator() { } + public System.Security.Cryptography.X509Certificates.PublicKey PublicKey { get { throw null; } } + protected abstract System.Security.Cryptography.X509Certificates.PublicKey BuildPublicKey(); + public static System.Security.Cryptography.X509Certificates.X509SignatureGenerator CreateForECDsa(System.Security.Cryptography.ECDsa key) { throw null; } + public static System.Security.Cryptography.X509Certificates.X509SignatureGenerator CreateForRSA(System.Security.Cryptography.RSA key, System.Security.Cryptography.RSASignaturePadding signaturePadding) { throw null; } + public abstract byte[] GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName hashAlgorithm); + public abstract byte[] SignData(byte[] data, System.Security.Cryptography.HashAlgorithmName hashAlgorithm); + } public sealed partial class X509Store : System.IDisposable { public X509Store() { } diff --git a/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.csproj b/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.csproj index 105d257f68a5..f79b2483c657 100644 --- a/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.csproj +++ b/src/System.Security.Cryptography.X509Certificates/ref/System.Security.Cryptography.X509Certificates.csproj @@ -12,6 +12,7 @@ + @@ -20,4 +21,4 @@ - \ No newline at end of file + diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs new file mode 100644 index 000000000000..b3b02e218670 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs @@ -0,0 +1,94 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + +namespace Internal.Cryptography +{ + internal static class EncodingHelpers + { + internal static byte[][] WrapAsSegmentedForSequence(this byte[] derData) + { + // ConstructSegmentedSequence understands triplets, but doesn't care they're valid, + // so lift this up into a "triplet". + return new[] { Array.Empty(), Array.Empty(), derData }; + } + + internal static byte[][] SegmentedEncodeSubjectPublicKeyInfo(this PublicKey publicKey) + { + if (publicKey == null) + throw new ArgumentNullException(nameof(publicKey)); + + if (publicKey.Oid == null || + string.IsNullOrEmpty(publicKey.Oid.Value) || + publicKey.EncodedKeyValue == null) + { + throw new CryptographicException(SR.Cryptography_InvalidPublicKey_Object); + } + + // SubjectPublicKeyInfo::= SEQUENCE { + // algorithm AlgorithmIdentifier, + // subjectPublicKey BIT STRING + // } + // + // AlgorithmIdentifier::= SEQUENCE { + // algorithm OBJECT IDENTIFIER, + // parameters ANY DEFINED BY algorithm OPTIONAL + // } + + byte[][] algorithmIdentifier; + + if (publicKey.EncodedParameters == null) + { + algorithmIdentifier = DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(publicKey.Oid)); + } + else + { + algorithmIdentifier = DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(publicKey.Oid), + publicKey.EncodedParameters.RawData.WrapAsSegmentedForSequence()); + } + + return DerEncoder.ConstructSegmentedSequence( + algorithmIdentifier, + DerEncoder.SegmentedEncodeBitString( + publicKey.EncodedKeyValue.RawData)); + } + + internal static byte[][] SegmentedEncodedX509Extension(this X509Extension extension) + { + if (extension.Critical) + { + return DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(extension.Oid), + DerEncoder.SegmentedEncodeBoolean(extension.Critical), + DerEncoder.SegmentedEncodeOctetString(extension.RawData)); + } + + return DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(extension.Oid), + DerEncoder.SegmentedEncodeOctetString(extension.RawData)); + } + + internal static byte[][] SegmentedEncodeAttributeSet(this IEnumerable attributes) + { + List encodedAttributes = new List(); + + foreach (X501Attribute attribute in attributes) + { + encodedAttributes.Add( + DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(attribute.Oid), + DerEncoder.ConstructSegmentedPresortedSet( + attribute.RawData.WrapAsSegmentedForSequence()))); + } + + return DerEncoder.ConstructSegmentedSet(encodedAttributes.ToArray()); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Helpers.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Helpers.cs index c94f6b9b2b26..50bdae57fa5e 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Helpers.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Helpers.cs @@ -125,6 +125,14 @@ public static bool ContentsEqual(this byte[] a1, byte[] a2) return true; } + internal static void AddRange(this ICollection coll, IEnumerable newData) + { + foreach (T datum in newData) + { + coll.Add(datum); + } + } + // // The following group of helpers emulates the non-public Calendar.IsValidDay() method used by X509Certificate.ToString(bool). // @@ -151,4 +159,27 @@ internal static void DisposeAll(this IEnumerable disposables) } } } + + internal struct PinAndClear : IDisposable + { + private byte[] _data; + private System.Runtime.InteropServices.GCHandle _gcHandle; + + internal static PinAndClear Track(byte[] data) + { + return new PinAndClear + { + _gcHandle = System.Runtime.InteropServices.GCHandle.Alloc( + data, + System.Runtime.InteropServices.GCHandleType.Pinned), + _data = data, + }; + } + + public void Dispose() + { + Array.Clear(_data, 0, _data.Length); + _gcHandle.Free(); + } + } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/ICertificatePal.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/ICertificatePal.cs index 80bf77c2b960..1685fb4a771c 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/ICertificatePal.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/ICertificatePal.cs @@ -36,5 +36,8 @@ internal interface ICertificatePal : IDisposable ECDsa GetECDsaPrivateKey(); string GetNameInfo(X509NameType nameType, bool forIssuer); void AppendPrivateKeyInfo(StringBuilder sb); + ICertificatePal CopyWithPrivateKey(DSA privateKey); + ICertificatePal CopyWithPrivateKey(ECDsa privateKey); + ICertificatePal CopyWithPrivateKey(RSA privateKey); } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Oids.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Oids.cs index 69b30bc6033b..e14f0d6ac265 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Oids.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Oids.cs @@ -2,12 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Text; -using System.Diagnostics; -using System.Globalization; -using System.Security.Cryptography; - namespace Internal.Cryptography { // @@ -31,8 +25,18 @@ internal static class Oids public const string CertPolicyConstraints = "2.5.29.36"; public const string EnhancedKeyUsage = "2.5.29.37"; public const string InhibitAnyPolicyExtension = "2.5.29.54"; + public const string EccCurveSecp384r1 = "1.3.132.0.34"; + public const string EccCurveSecp521r1 = "1.3.132.0.35"; public const string Ecc = "1.2.840.10045.2.1"; + public const string EccCurveSecp256r1 = "1.2.840.10045.3.1.7"; + public const string ECDsaSha256 = "1.2.840.10045.4.3.2"; + public const string ECDsaSha384 = "1.2.840.10045.4.3.3"; + public const string ECDsaSha512 = "1.2.840.10045.4.3.4"; public const string RsaRsa = "1.2.840.113549.1.1.1"; + public const string RsaPkcs1Sha256 = "1.2.840.113549.1.1.11"; + public const string RsaPkcs1Sha384 = "1.2.840.113549.1.1.12"; + public const string RsaPkcs1Sha512 = "1.2.840.113549.1.1.13"; + public const string Pkcs9ExtensionRequest = "1.2.840.113549.1.9.14"; public const string DsaDsa = "1.2.840.10040.4.1"; public const string EmailAddress = "1.2.840.113549.1.9.1"; public const string EnrollCertTypeExtension = "1.3.6.1.4.1.311.20.2"; diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/CertificatePal.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/CertificatePal.cs index f2a383a0525e..6f478f2f4c03 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/CertificatePal.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.OSX/CertificatePal.cs @@ -153,6 +153,9 @@ public static ICertificatePal FromFile(string fileName, SafePasswordHandle passw internal sealed class AppleCertificatePal : ICertificatePal { private SafeSecIdentityHandle _identityHandle; + // Do not give out this reference, it's only needed in certain cases to prevent temporary keychains + // from being deleted. + private SafeSecKeyRefHandle _privateKeyHolder; private SafeSecCertificateHandle _certHandle; private CertificateData _certData; private bool _readCertData; @@ -176,9 +179,11 @@ public void Dispose() { _certHandle?.Dispose(); _identityHandle?.Dispose(); + _privateKeyHolder?.Dispose(); _certHandle = null; _identityHandle = null; + _privateKeyHolder = null; } internal SafeSecCertificateHandle CertificateHandle => _certHandle; @@ -358,21 +363,6 @@ public byte[] SubjectPublicKeyInfo } } - public AsymmetricAlgorithm GetPrivateKey() - { - switch (KeyAlgorithm) - { - case Oids.RsaRsa: - return GetRSAPrivateKey(); - case Oids.DsaDsa: - return GetDSAPrivateKey(); - case Oids.Ecc: - return GetECDsaPrivateKey(); - } - - throw new NotSupportedException(SR.NotSupported_KeyAlgorithm); - } - public RSA GetRSAPrivateKey() { if (_identityHandle == null) @@ -409,6 +399,103 @@ public ECDsa GetECDsaPrivateKey() return new ECDsaImplementation.ECDsaSecurityTransforms(publicKey, privateKey); } + private void HoldPrivateKey() + { + _privateKeyHolder = Interop.AppleCrypto.X509GetPrivateKeyFromIdentity(_identityHandle); + Debug.Assert(!_privateKeyHolder.IsInvalid); + } + + public ICertificatePal CopyWithPrivateKey(DSA privateKey) + { + var typedKey = privateKey as DSAImplementation.DSASecurityTransforms; + + if (typedKey != null) + { + return CopyWithPrivateKey(typedKey.GetKeys()); + } + + DSAParameters dsaParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(dsaParameters.X)) + using (typedKey = new DSAImplementation.DSASecurityTransforms()) + { + typedKey.ImportParameters(dsaParameters); + return CopyWithPrivateKey(typedKey.GetKeys()); + } + } + + public ICertificatePal CopyWithPrivateKey(ECDsa privateKey) + { + var typedKey = privateKey as ECDsaImplementation.ECDsaSecurityTransforms; + + if (typedKey != null) + { + return CopyWithPrivateKey(typedKey.GetKeys()); + } + + ECParameters ecParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(ecParameters.D)) + using (typedKey = new ECDsaImplementation.ECDsaSecurityTransforms()) + { + typedKey.ImportParameters(ecParameters); + return CopyWithPrivateKey(typedKey.GetKeys()); + } + } + + public ICertificatePal CopyWithPrivateKey(RSA privateKey) + { + var typedKey = privateKey as RSAImplementation.RSASecurityTransforms; + + if (typedKey != null) + { + return CopyWithPrivateKey(typedKey.GetKeys()); + } + + RSAParameters rsaParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(rsaParameters.D)) + using (PinAndClear.Track(rsaParameters.P)) + using (PinAndClear.Track(rsaParameters.Q)) + using (PinAndClear.Track(rsaParameters.DP)) + using (PinAndClear.Track(rsaParameters.DQ)) + using (PinAndClear.Track(rsaParameters.InverseQ)) + using (typedKey = new RSAImplementation.RSASecurityTransforms()) + { + typedKey.ImportParameters(rsaParameters); + return CopyWithPrivateKey(typedKey.GetKeys()); + } + } + + private ICertificatePal CopyWithPrivateKey(SecKeyPair keyPair) + { + if (keyPair.PrivateKey == null) + { + // Both Windows and Linux/OpenSSL are unaware if they bound a public or private key. + // Here, we do know. So throw if we can't do what they asked. + throw new CryptographicException(SR.Cryptography_CSP_NoPrivateKey); + } + + SafeKeychainHandle keychain = Interop.AppleCrypto.SecKeychainItemCopyKeychain(keyPair.PrivateKey); + + if (keychain.IsInvalid) + { + keychain = Interop.AppleCrypto.CreateTemporaryKeychain(); + } + + using (keychain) + { + SafeSecIdentityHandle identityHandle = Interop.AppleCrypto.X509CopyWithPrivateKey( + _certHandle, + keyPair.PrivateKey, + keychain); + + AppleCertificatePal newPal = new AppleCertificatePal(identityHandle); + newPal.HoldPrivateKey(); + return newPal; + } + } + public string GetNameInfo(X509NameType nameType, bool forIssuer) { // Algorithm behaviors (pseudocode). When forIssuer is true, replace "Subject" with "Issuer" and diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509CertificateReader.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509CertificateReader.cs index 300864cb75df..2042037ccdce 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509CertificateReader.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/OpenSslX509CertificateReader.cs @@ -295,6 +295,78 @@ public ECDsa GetECDsaPrivateKey() return new ECDsaOpenSsl(_privateKey); } + private ICertificatePal CopyWithPrivateKey(SafeEvpPKeyHandle privateKey) + { + // This could be X509Duplicate for a full clone, but since OpenSSL certificates + // are functionally immutable (unlike Windows ones) an UpRef is sufficient. + SafeX509Handle certHandle = Interop.Crypto.X509UpRef(_cert); + OpenSslX509CertificateReader duplicate = new OpenSslX509CertificateReader(certHandle); + + duplicate.SetPrivateKey(privateKey); + return duplicate; + } + + public ICertificatePal CopyWithPrivateKey(DSA privateKey) + { + DSAOpenSsl typedKey = privateKey as DSAOpenSsl; + + if (typedKey != null) + { + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + + DSAParameters dsaParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(dsaParameters.X)) + using (typedKey = new DSAOpenSsl(dsaParameters)) + { + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + } + + public ICertificatePal CopyWithPrivateKey(ECDsa privateKey) + { + ECDsaOpenSsl typedKey = privateKey as ECDsaOpenSsl; + + if (typedKey != null) + { + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + + ECParameters ecParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(ecParameters.D)) + using (typedKey = new ECDsaOpenSsl()) + { + typedKey.ImportParameters(ecParameters); + + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + } + + public ICertificatePal CopyWithPrivateKey(RSA privateKey) + { + RSAOpenSsl typedKey = privateKey as RSAOpenSsl; + + if (typedKey != null) + { + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + + RSAParameters rsaParameters = privateKey.ExportParameters(true); + + using (PinAndClear.Track(rsaParameters.D)) + using (PinAndClear.Track(rsaParameters.P)) + using (PinAndClear.Track(rsaParameters.Q)) + using (PinAndClear.Track(rsaParameters.DP)) + using (PinAndClear.Track(rsaParameters.DQ)) + using (PinAndClear.Track(rsaParameters.InverseQ)) + using (typedKey = new RSAOpenSsl(rsaParameters)) + { + return CopyWithPrivateKey((SafeEvpPKeyHandle)typedKey.DuplicateKeyHandle()); + } + } + public string GetNameInfo(X509NameType nameType, bool forIssuer) { using (SafeBioHandle bioHandle = Interop.Crypto.GetX509NameInfo(_cert, (int)nameType, forIssuer)) diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.CspParametersStub.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.CspParametersStub.cs deleted file mode 100644 index 8953d211c8ee..000000000000 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.CspParametersStub.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -// .NET Native (UWP) does not have access to the CspParameters type because it is in a non-UWP-compatible -// assembly. So these type definitions allow the code to continue to use the same data transport structure -// that it has for quite a while. - -#if uap -using System; - -namespace Internal.Cryptography.Pal -{ - internal sealed partial class CertificatePal : IDisposable, ICertificatePal - { - [Flags] - private enum CspProviderFlags - { - // Note: UWP doesn't use any flags other than these, so they have been omitted. - NoFlags = 0x0000, - UseMachineKeyStore = 0x0001, - } - - private sealed class CspParameters - { - public int ProviderType; - public string ProviderName; - public string KeyContainerName; - public int KeyNumber; - private int _flags; - - /// - /// Flag property - /// - public CspProviderFlags Flags - { - get { return (CspProviderFlags)_flags; } - set - { - const int allFlags = 0x00FF; // this should change if more values are added to CspProviderFlags - int flags = (int)value; - if ((flags & ~allFlags) != 0) - { - throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, nameof(value))); - } - _flags = flags; - } - } - - public CspParameters() : this(-1, null, null) - { - } - - private CspParameters(int dwTypeIn, string strProviderNameIn, string strContainerNameIn) : - this(dwTypeIn, strProviderNameIn, strContainerNameIn, CspProviderFlags.NoFlags) - { - } - - private CspParameters(int providerType, string providerName, string keyContainerName, CspProviderFlags flags) - { - ProviderType = providerType; - ProviderName = providerName; - KeyContainerName = keyContainerName; - KeyNumber = -1; - Flags = flags; - } - } - } -} - -#endif // #if uap diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs index ec4e2ab602b3..de3ba92b3189 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs @@ -4,8 +4,10 @@ using System; using System.Diagnostics; +using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; using Microsoft.Win32.SafeHandles; using Internal.Cryptography.Pal.Native; @@ -80,6 +82,112 @@ public ECDsa GetECDsaPrivateKey() ); } + public ICertificatePal CopyWithPrivateKey(DSA dsa) + { + DSACng dsaCng = dsa as DSACng; + ICertificatePal clone = null; + + if (dsaCng != null) + { + clone = CopyWithPersistedCngKey(dsaCng.Key); + + if (clone != null) + { + return clone; + } + } + + DSACryptoServiceProvider dsaCsp = dsa as DSACryptoServiceProvider; + + if (dsaCsp != null) + { + clone = CopyWithPersistedCapiKey(dsaCsp.CspKeyContainerInfo); + + if (clone != null) + { + return clone; + } + } + + DSAParameters privateParameters = dsa.ExportParameters(true); + + using (PinAndClear.Track(privateParameters.X)) + using (DSACng clonedKey = new DSACng()) + { + clonedKey.ImportParameters(privateParameters); + + return CopyWithEphemeralKey(clonedKey.Key); + } + } + + public ICertificatePal CopyWithPrivateKey(ECDsa ecdsa) + { + ECDsaCng ecdsaCng = ecdsa as ECDsaCng; + + if (ecdsaCng != null) + { + ICertificatePal clone = CopyWithPersistedCngKey(ecdsaCng.Key); + + if (clone != null) + { + return clone; + } + } + + ECParameters privateParameters = ecdsa.ExportParameters(true); + + using (PinAndClear.Track(privateParameters.D)) + using (ECDsaCng clonedKey = new ECDsaCng()) + { + clonedKey.ImportParameters(privateParameters); + + return CopyWithEphemeralKey(clonedKey.Key); + } + } + + public ICertificatePal CopyWithPrivateKey(RSA rsa) + { + RSACng rsaCng = rsa as RSACng; + ICertificatePal clone = null; + + if (rsaCng != null) + { + clone = CopyWithPersistedCngKey(rsaCng.Key); + + if (clone != null) + { + return clone; + } + } + + RSACryptoServiceProvider rsaCsp = rsa as RSACryptoServiceProvider; + + if (rsaCsp != null) + { + clone = CopyWithPersistedCapiKey(rsaCsp.CspKeyContainerInfo); + + if (clone != null) + { + return clone; + } + } + + RSAParameters privateParameters = rsa.ExportParameters(true); + + using (PinAndClear.Track(privateParameters.D)) + using (PinAndClear.Track(privateParameters.P)) + using (PinAndClear.Track(privateParameters.Q)) + using (PinAndClear.Track(privateParameters.DP)) + using (PinAndClear.Track(privateParameters.DQ)) + using (PinAndClear.Track(privateParameters.InverseQ)) + using (RSACng clonedKey = new RSACng()) + { + clonedKey.ImportParameters(privateParameters); + + return CopyWithEphemeralKey(clonedKey.Key); + } + } + private T GetPrivateKey(Func createCsp, Func createCng) where T : AsymmetricAlgorithm { CngKeyHandleOpenOptions cngHandleOptions; @@ -239,5 +347,260 @@ private CspParameters GetPrivateKeyCsp() } } } + + private unsafe ICertificatePal CopyWithPersistedCngKey(CngKey cngKey) + { + if (string.IsNullOrEmpty(cngKey.KeyName)) + { + return null; + } + + // Make a new pal from bytes. + CertificatePal pal = (CertificatePal)FromBlob(RawData, SafePasswordHandle.InvalidHandle, X509KeyStorageFlags.PersistKeySet); + + CngProvider provider = cngKey.Provider; + string keyName = cngKey.KeyName; + bool machineKey = cngKey.IsMachineKey; + + // CAPI RSA_SIGN keys won't open correctly under CNG without the key number being specified, so + // check to see if we can figure out what key number it needs to re-open. + int keySpec = GuessKeySpec(provider, keyName, machineKey, cngKey.AlgorithmGroup); + + CRYPT_KEY_PROV_INFO keyProvInfo = new CRYPT_KEY_PROV_INFO(); + + fixed (char* keyNamePtr = cngKey.KeyName) + fixed (char* provNamePtr = cngKey.Provider.Provider) + { + keyProvInfo.pwszContainerName = keyNamePtr; + keyProvInfo.pwszProvName = provNamePtr; + keyProvInfo.dwFlags = machineKey ? CryptAcquireContextFlags.CRYPT_MACHINE_KEYSET : 0; + keyProvInfo.dwKeySpec = keySpec; + + if (!Interop.crypt32.CertSetCertificateContextProperty( + pal._certContext, + CertContextPropId.CERT_KEY_PROV_INFO_PROP_ID, + CertSetPropertyFlags.None, + &keyProvInfo)) + { + pal.Dispose(); + throw Marshal.GetLastWin32Error().ToCryptographicException(); + } + } + + return pal; + } + + private static int GuessKeySpec( + CngProvider provider, + string keyName, + bool machineKey, + CngAlgorithmGroup algorithmGroup) + { + if (provider == CngProvider.MicrosoftSoftwareKeyStorageProvider || + provider == CngProvider.MicrosoftSmartCardKeyStorageProvider) + { + // Well-known CNG providers, keySpec is 0. + return 0; + } + + const int NTE_BAD_KEYSET = unchecked((int)0x80090016); + + try + { + CngKeyOpenOptions options = machineKey ? CngKeyOpenOptions.MachineKey : CngKeyOpenOptions.None; + + using (CngKey.Open(keyName, provider, options)) + { + // It opened with keySpec 0, so use keySpec 0. + return 0; + } + } + catch (CryptographicException e) + { + Debug.Assert( + e.HResult == NTE_BAD_KEYSET, + $"CngKey.Open had unexpected error: 0x{e.HResult:X8}: {e.Message}"); + + CspParameters cspParameters = new CspParameters + { + ProviderName = provider.Provider, + KeyContainerName = keyName, + Flags = CspProviderFlags.UseExistingKey, + KeyNumber = (int)KeyNumber.Signature, + }; + + if (machineKey) + { + cspParameters.Flags |= CspProviderFlags.UseMachineKeyStore; + } + + int keySpec; + + if (TryGuessKeySpec(cspParameters, algorithmGroup, out keySpec)) + { + return keySpec; + } + + throw; + } + } + + private static bool TryGuessKeySpec( + CspParameters cspParameters, + CngAlgorithmGroup algorithmGroup, + out int keySpec) + { + if (algorithmGroup == CngAlgorithmGroup.Rsa) + { + return TryGuessRsaKeySpec(cspParameters, out keySpec); + } + + if (algorithmGroup == CngAlgorithmGroup.Dsa) + { + return TryGuessDsaKeySpec(cspParameters, out keySpec); + } + + keySpec = 0; + return false; + } + + private static bool TryGuessRsaKeySpec(CspParameters cspParameters, out int keySpec) + { + // Try the AT_SIGNATURE spot in each of the 4 RSA provider type values, + // ideally one of them will work. + const int PROV_RSA_FULL = 1; + const int PROV_RSA_SIG = 2; + const int PROV_RSA_SCHANNEL = 12; + const int PROV_RSA_AES = 24; + + // These are ordered in terms of perceived likeliness, given that the key + // is AT_SIGNATURE. + int[] provTypes = + { + PROV_RSA_FULL, + PROV_RSA_AES, + PROV_RSA_SCHANNEL, + + // Nothing should be PROV_RSA_SIG, but if everything else has failed, + // just try this last thing. + PROV_RSA_SIG, + }; + + foreach (int provType in provTypes) + { + cspParameters.ProviderType = provType; + + try + { + using (new RSACryptoServiceProvider(cspParameters)) + { + { + keySpec = cspParameters.KeyNumber; + return true; + } + } + } + catch (CryptographicException) + { + } + } + + Debug.Fail("RSA key did not open with KeyNumber 0 or AT_SIGNATURE"); + keySpec = 0; + return false; + } + + private static bool TryGuessDsaKeySpec(CspParameters cspParameters, out int keySpec) + { + const int PROV_DSS = 3; + const int PROV_DSS_DH = 13; + + int[] provTypes = + { + PROV_DSS_DH, + PROV_DSS, + }; + + foreach (int provType in provTypes) + { + cspParameters.ProviderType = provType; + + try + { + using (new DSACryptoServiceProvider(cspParameters)) + { + { + keySpec = cspParameters.KeyNumber; + return true; + } + } + } + catch (CryptographicException) + { + } + } + + Debug.Fail("DSA key did not open with KeyNumber 0 or AT_SIGNATURE"); + keySpec = 0; + return false; + } + + private unsafe ICertificatePal CopyWithPersistedCapiKey(CspKeyContainerInfo keyContainerInfo) + { + if (string.IsNullOrEmpty(keyContainerInfo.KeyContainerName)) + { + return null; + } + + // Make a new pal from bytes. + CertificatePal pal = (CertificatePal)FromBlob(RawData, SafePasswordHandle.InvalidHandle, X509KeyStorageFlags.PersistKeySet); + CRYPT_KEY_PROV_INFO keyProvInfo = new CRYPT_KEY_PROV_INFO(); + + fixed (char* keyName = keyContainerInfo.KeyContainerName) + fixed (char* provName = keyContainerInfo.ProviderName) + { + keyProvInfo.pwszContainerName = keyName; + keyProvInfo.pwszProvName = provName; + keyProvInfo.dwFlags = keyContainerInfo.MachineKeyStore ? CryptAcquireContextFlags.CRYPT_MACHINE_KEYSET : 0; + keyProvInfo.dwProvType = keyContainerInfo.ProviderType; + keyProvInfo.dwKeySpec = (int)keyContainerInfo.KeyNumber; + + if (!Interop.crypt32.CertSetCertificateContextProperty( + pal._certContext, + CertContextPropId.CERT_KEY_PROV_INFO_PROP_ID, + CertSetPropertyFlags.None, + &keyProvInfo)) + { + pal.Dispose(); + throw Marshal.GetLastWin32Error().ToCryptographicException(); + } + } + + return pal; + } + + private ICertificatePal CopyWithEphemeralKey(CngKey cngKey) + { + Debug.Assert(string.IsNullOrEmpty(cngKey.KeyName)); + + SafeNCryptKeyHandle handle = cngKey.Handle; + + // Make a new pal from bytes. + CertificatePal pal = (CertificatePal)FromBlob(RawData, SafePasswordHandle.InvalidHandle, X509KeyStorageFlags.PersistKeySet); + + if (!Interop.crypt32.CertSetCertificateContextProperty( + pal._certContext, + CertContextPropId.CERT_NCRYPT_KEY_HANDLE_PROP_ID, + CertSetPropertyFlags.CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG, + handle)) + { + pal.Dispose(); + throw Marshal.GetLastWin32Error().ToCryptographicException(); + } + + // The value was transferred to the certificate. + handle.SetHandleAsInvalid(); + return pal; + } } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/Interop.crypt32.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/Interop.crypt32.cs index 80a6a75ec09b..52dc3ac85b59 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/Interop.crypt32.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/Interop.crypt32.cs @@ -86,6 +86,9 @@ IntPtr ppvContext [DllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] public static extern unsafe bool CertSetCertificateContextProperty(SafeCertContextHandle pCertContext, CertContextPropId dwPropId, CertSetPropertyFlags dwFlags, [In] CRYPT_KEY_PROV_INFO* pvData); + [DllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] + public static extern unsafe bool CertSetCertificateContextProperty(SafeCertContextHandle pCertContext, CertContextPropId dwPropId, CertSetPropertyFlags dwFlags, [In] SafeNCryptKeyHandle keyHandle); + [DllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "CertGetNameStringW")] public static extern int CertGetNameString(SafeCertContextHandle pCertContext, CertNameType dwType, CertNameFlags dwFlags, [In] ref CertNameStringType pvTypePara, [Out] StringBuilder pszNameString, int cchNameString); diff --git a/src/System.Security.Cryptography.X509Certificates/src/Resources/Strings.resx b/src/System.Security.Cryptography.X509Certificates/src/Resources/Strings.resx index 4a6782d346d6..0fbed8111585 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Resources/Strings.resx +++ b/src/System.Security.Cryptography.X509Certificates/src/Resources/Strings.resx @@ -103,6 +103,24 @@ The provided value of {0} bytes does not match the expected size of {1} bytes for the algorithm ({2}). + + The certificate already has an associated private key. + + + The provided notBefore value is later than the notAfter value. + + + The value predates 1950 and has no defined encoding. + + + An X509Extension with OID '{0}' has already been specified. + + + The provided issuer certificate does not have an associated private key. + + + This method cannot be used since no signing key was provided via a constructor, use an overload accepting an X509SignatureGenerator instead. + Object contains only the public half of a key pair. A private key must also be provided. @@ -115,6 +133,9 @@ ASN1 corrupted data. + + The hash algorithm name cannot be null or empty. + The chain context handle is invalid. @@ -127,6 +148,9 @@ Specified padding mode is not valid for this algorithm. + + The provided PublicKey object is invalid, valid Oid and EncodedKeyValue property values are required. + The specified RSA parameters are not valid; both Exponent and Modulus are required fields. @@ -136,6 +160,12 @@ Cannot open an invalid handle. + + The provided key does not match the public key for this certificate. + + + The provided key does not match the public key algorithm for this certificate. + Unix LocalMachine X509Stores are read-only for all users. @@ -148,6 +178,9 @@ '{0}' is not a known hash algorithm. + + '{0}' is not a known key algorithm. + X509ContentType.SerializedCert and X509ContentType.SerializedStore are not supported on Unix. diff --git a/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj b/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj index e8b43ab33132..a113c6e4b676 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj +++ b/src/System.Security.Cryptography.X509Certificates/src/System.Security.Cryptography.X509Certificates.csproj @@ -21,7 +21,14 @@ Common\Microsoft\Win32\SafeHandles\SafeHandleCache.cs + + Common\System\Security\Cryptography\DerEncoder.cs + + + Common\System\Security\Cryptography\DerSequenceReader.cs + + @@ -34,15 +41,24 @@ + + + + + + + + + @@ -70,6 +86,7 @@ + @@ -77,7 +94,6 @@ - @@ -381,12 +397,6 @@ - - Common\System\Security\Cryptography\DerEncoder.cs - - - Common\System\Security\Cryptography\DerSequenceReader.cs - @@ -399,6 +409,7 @@ + @@ -417,4 +428,4 @@ - \ No newline at end of file + diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs new file mode 100644 index 000000000000..a53edac40b19 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs @@ -0,0 +1,460 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.ObjectModel; +using System.Diagnostics; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + /// + /// Represents an abstraction over the PKCS#10 CertificationRequestInfo and the X.509 TbsCertificate, + /// allowing callers to create self-signed or chain-signed X.509 Public-Key Certificates, as well as + /// create a certificate signing request blob to send to a Certificate Authority (CA). + /// + public sealed class CertificateRequest + { + private readonly AsymmetricAlgorithm _key; + private readonly X509SignatureGenerator _generator; + + /// + /// The X.500 Distinguished Name to use as the Subject in a created certificate or certificate request. + /// + public X500DistinguishedName SubjectName { get; } + + /// + /// The X.509 Certificate Extensions to include in the certificate or certificate request. + /// + public Collection CertificateExtensions { get; } = new Collection(); + + /// + /// A representation of the public key for the certificate or certificate request. + /// + public PublicKey PublicKey { get; } + + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + public HashAlgorithmName HashAlgorithm { get; } + + /// + /// Create a CertificateRequest for the specified subject name, ECDSA key, and hash algorithm. + /// + /// + /// The string representation of the subject name for the certificate or certificate request. + /// + /// + /// An ECDSA key whose public key material will be included in the certificate or certificate request. + /// This key will be used as a private key if is called. + /// + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + /// + public CertificateRequest(string subjectName, ECDsa key, HashAlgorithmName hashAlgorithm) + { + if (subjectName == null) + throw new ArgumentNullException(nameof(subjectName)); + if (key == null) + throw new ArgumentNullException(nameof(key)); + if (string.IsNullOrEmpty(hashAlgorithm.Name)) + throw new ArgumentException(SR.Cryptography_HashAlgorithmNameNullOrEmpty, nameof(hashAlgorithm)); + + SubjectName = new X500DistinguishedName(subjectName); + + _key = key; + _generator = X509SignatureGenerator.CreateForECDsa(key); + PublicKey = _generator.PublicKey; + HashAlgorithm = hashAlgorithm; + } + + /// + /// Create a CertificateRequest for the specified subject name, ECDSA key, and hash algorithm. + /// + /// + /// The parsed representation of the subject name for the certificate or certificate request. + /// + /// + /// An ECDSA key whose public key material will be included in the certificate or certificate request. + /// This key will be used as a private key if is called. + /// + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + public CertificateRequest(X500DistinguishedName subjectName, ECDsa key, HashAlgorithmName hashAlgorithm) + { + if (subjectName == null) + throw new ArgumentNullException(nameof(subjectName)); + if (key == null) + throw new ArgumentNullException(nameof(key)); + if (string.IsNullOrEmpty(hashAlgorithm.Name)) + throw new ArgumentException(SR.Cryptography_HashAlgorithmNameNullOrEmpty, nameof(hashAlgorithm)); + + SubjectName = subjectName; + + _key = key; + _generator = X509SignatureGenerator.CreateForECDsa(key); + PublicKey = _generator.PublicKey; + HashAlgorithm = hashAlgorithm; + } + + /// + /// Create a CertificateRequest for the specified subject name, RSA key, and hash algorithm. + /// + /// + /// The string representation of the subject name for the certificate or certificate request. + /// + /// + /// An RSA key whose public key material will be included in the certificate or certificate request. + /// This key will be used as a private key if is called. + /// + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + /// + public CertificateRequest(string subjectName, RSA key, HashAlgorithmName hashAlgorithm) + { + if (subjectName == null) + throw new ArgumentNullException(nameof(subjectName)); + if (key == null) + throw new ArgumentNullException(nameof(key)); + if (string.IsNullOrEmpty(hashAlgorithm.Name)) + throw new ArgumentException(SR.Cryptography_HashAlgorithmNameNullOrEmpty, nameof(hashAlgorithm)); + + SubjectName = new X500DistinguishedName(subjectName); + + _key = key; + _generator = X509SignatureGenerator.CreateForRSA(key, RSASignaturePadding.Pkcs1); + PublicKey = _generator.PublicKey; + HashAlgorithm = hashAlgorithm; + } + + /// + /// Create a CertificateRequest for the specified subject name, RSA key, and hash algorithm. + /// + /// + /// The parsed representation of the subject name for the certificate or certificate request. + /// + /// + /// An RSA key whose public key material will be included in the certificate or certificate request. + /// This key will be used as a private key if is called. + /// + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + public CertificateRequest(X500DistinguishedName subjectName, RSA key, HashAlgorithmName hashAlgorithm) + { + if (subjectName == null) + throw new ArgumentNullException(nameof(subjectName)); + if (key == null) + throw new ArgumentNullException(nameof(key)); + if (string.IsNullOrEmpty(hashAlgorithm.Name)) + throw new ArgumentException(SR.Cryptography_HashAlgorithmNameNullOrEmpty, nameof(hashAlgorithm)); + + SubjectName = subjectName; + + _key = key; + _generator = X509SignatureGenerator.CreateForRSA(key, RSASignaturePadding.Pkcs1); + PublicKey = _generator.PublicKey; + HashAlgorithm = hashAlgorithm; + } + + /// + /// Create a CertificateRequest for the specified subject name, encoded public key, and hash algorithm. + /// + /// + /// The parsed representation of the subject name for the certificate or certificate request. + /// + /// + /// The encoded representation of the public key to include in the certificate or certificate request. + /// + /// + /// The hash algorithm to use when signing the certificate or certificate request. + /// + public CertificateRequest(X500DistinguishedName subjectName, PublicKey publicKey, HashAlgorithmName hashAlgorithm) + { + if (subjectName == null) + throw new ArgumentNullException(nameof(subjectName)); + if (publicKey == null) + throw new ArgumentNullException(nameof(publicKey)); + if (string.IsNullOrEmpty(hashAlgorithm.Name)) + throw new ArgumentException(SR.Cryptography_HashAlgorithmNameNullOrEmpty, nameof(hashAlgorithm)); + + SubjectName = subjectName; + PublicKey = publicKey; + HashAlgorithm = hashAlgorithm; + } + + /// + /// Create an ASN.1 DER-encoded PKCS#10 CertificationRequest object representating the current state + /// of this object. + /// + /// A DER-encoded certificate signing request. + /// + /// When submitting a certificate signing request via a web browser, or other graphical or textual + /// interface, the input is frequently expected to be in the PEM (Privacy Enhanced Mail) format, + /// instead of the DER binary format. To convert the return value to PEM format, make a string + /// consisting of -----BEGIN CERTIFICATE REQUEST-----, a newline, the Base-64-encoded + /// representation of the request (by convention, linewrapped at 64 characters), a newline, + /// and -----END CERTIFICATE REQUEST-----. + /// + /// + /// + public byte[] CreateSigningRequest() + { + if (_generator == null) + throw new InvalidOperationException(SR.Cryptography_CertReq_NoKeyProvided); + + return CreateSigningRequest(_generator); + } + + /// + /// Create an ASN.1 DER-encoded PKCS#10 CertificationRequest representating the current state + /// of this object using the provided signature generator. + /// + /// + /// A with which to sign the request. + /// + public byte[] CreateSigningRequest(X509SignatureGenerator signatureGenerator) + { + if (signatureGenerator == null) + throw new ArgumentNullException(nameof(signatureGenerator)); + + X501Attribute[] attributes = Array.Empty(); + + if (CertificateExtensions.Count > 0) + { + attributes = new X501Attribute[] { new Pkcs9ExtensionRequest(CertificateExtensions) }; + } + + var requestInfo = new Pkcs10CertificationRequestInfo(SubjectName, PublicKey, attributes); + return requestInfo.ToPkcs10Request(signatureGenerator, HashAlgorithm); + } + + /// + /// Create a self-signed certificate using the established subject, key, and optional + /// extensions. + /// + /// + /// The oldest date and time where this certificate is considered valid. + /// Typically , plus or minus a few seconds. + /// + /// + /// The date and time where this certificate is no longer considered valid. + /// + /// + /// An with the specified values. The returned object will + /// assert . + /// + /// + /// represents a date and time before . + /// + /// + /// A constructor was used which did not accept a signing key. + /// > + /// + /// Other errors during the certificate creation process. + /// + public X509Certificate2 CreateSelfSigned(DateTimeOffset notBefore, DateTimeOffset notAfter) + { + if (notAfter < notBefore) + throw new ArgumentException(SR.Cryptography_CertReq_DatesReversed); + if (_key == null) + throw new InvalidOperationException(SR.Cryptography_CertReq_NoKeyProvided); + + Debug.Assert(_generator != null); + + byte[] serialNumber = new byte[8]; + + using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) + { + rng.GetBytes(serialNumber); + } + + using (X509Certificate2 certificate = Create( + SubjectName, + _generator, + notBefore, + notAfter, + serialNumber)) + { + RSA rsa = _key as RSA; + + if (rsa != null) + { + return certificate.CopyWithPrivateKey(rsa); + } + + ECDsa ecdsa = _key as ECDsa; + + if (ecdsa != null) + { + return certificate.CopyWithPrivateKey(ecdsa); + } + } + + Debug.Fail($"Key was of no known type: {_key?.GetType().FullName ?? "null"}"); + throw new CryptographicException(); + } + + /// + /// Create a certificate using the established subject, key, and optional extensions using + /// the provided certificate as the issuer. + /// + /// + /// An X509Certificate2 instance representing the issuing Certificate Authority (CA). + /// + /// + /// The oldest date and time where this certificate is considered valid. + /// Typically , plus or minus a few seconds. + /// + /// + /// The date and time where this certificate is no longer considered valid. + /// + /// + /// The serial number to use for the new certificate. This value should be unique per issuer. + /// The value is interpreted as an unsigned (big) integer in big endian byte ordering. + /// + /// + /// An with the specified values. The returned object will + /// not assert . + /// + /// is null. + /// + /// The value for is false. + /// + /// + /// The type of signing key represented by could not be determined. + /// + /// + /// represents a date and time before . + /// + /// is null or has length 0. + public X509Certificate2 Create( + X509Certificate2 issuerCertificate, + DateTimeOffset notBefore, + DateTimeOffset notAfter, + byte[] serialNumber) + { + if (issuerCertificate == null) + throw new ArgumentNullException(nameof(issuerCertificate)); + if (!issuerCertificate.HasPrivateKey) + throw new ArgumentException(SR.Cryptography_CertReq_IssuerRequiresPrivateKey, nameof(issuerCertificate)); + + AsymmetricAlgorithm key = null; + string keyAlgorithm = issuerCertificate.GetKeyAlgorithm(); + X509SignatureGenerator generator; + + try + { + switch (keyAlgorithm) + { + case Oids.RsaRsa: + RSA rsa = issuerCertificate.GetRSAPrivateKey(); + key = rsa; + generator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + break; + case Oids.Ecc: + ECDsa ecdsa = issuerCertificate.GetECDsaPrivateKey(); + key = ecdsa; + generator = X509SignatureGenerator.CreateForECDsa(ecdsa); + break; + default: + throw new ArgumentException( + SR.Format(SR.Cryptography_UnknownKeyAlgorithm, keyAlgorithm), + nameof(issuerCertificate)); + } + + return Create(issuerCertificate.SubjectName, generator, notBefore, notAfter, serialNumber); + } + finally + { + key?.Dispose(); + } + } + + /// + /// Sign the current certificate request to create a chain-signed or self-signed certificate. + /// + /// The X500DistinguishedName for the Issuer + /// + /// An representing the issuing certificate authority. + /// + /// + /// The oldest date and time where this certificate is considered valid. + /// Typically , plus or minus a few seconds. + /// + /// + /// The date and time where this certificate is no longer considered valid. + /// + /// + /// The serial number to use for the new certificate. This value should be unique per issuer. + /// The value is interpreted as an unsigned (big) integer in big endian byte ordering. + /// + /// + /// The ASN.1 DER-encoded certificate, suitable to be passed to . + /// + /// is null. + /// is null. + /// + /// represents a date and time before . + /// + /// is null or has length 0. + /// Any error occurs during the signing operation. + public X509Certificate2 Create( + X500DistinguishedName issuerName, + X509SignatureGenerator generator, + DateTimeOffset notBefore, + DateTimeOffset notAfter, + byte[] serialNumber) + { + if (issuerName == null) + throw new ArgumentNullException(nameof(issuerName)); + if (generator == null) + throw new ArgumentNullException(nameof(generator)); + if (notAfter < notBefore) + throw new ArgumentException(SR.Cryptography_CertReq_DatesReversed); + if (serialNumber == null || serialNumber.Length < 1) + throw new ArgumentException(SR.Arg_EmptyOrNullArray, nameof(serialNumber)); + + TbsCertificate tbsCertificate = new TbsCertificate + { + Version = 2, + SerialNumber = serialNumber, + Issuer = issuerName, + PublicKey = PublicKey, + NotBefore = notBefore, + NotAfter = notAfter, + Subject = SubjectName, + }; + + tbsCertificate.Extensions.AddRange(CertificateExtensions); + + return new X509Certificate2(tbsCertificate.Sign(generator, HashAlgorithm)); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs index 0b54b86bf518..630856c76324 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using Internal.Cryptography; using Internal.Cryptography.Pal; namespace System.Security.Cryptography.X509Certificates @@ -27,5 +28,35 @@ public static DSA GetDSAPrivateKey(this X509Certificate2 certificate) { return certificate.GetPrivateKey(); } + + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, DSA privateKey) + { + if (certificate == null) + throw new ArgumentNullException(nameof(certificate)); + if (privateKey == null) + throw new ArgumentNullException(nameof(privateKey)); + + if (certificate.HasPrivateKey) + throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); + + DSA publicKey = GetDSAPublicKey(certificate); + + if (publicKey == null) + throw new ArgumentException(SR.Cryptography_PrivateKey_WrongAlgorithm); + + DSAParameters currentParameters = publicKey.ExportParameters(false); + DSAParameters newParameters = privateKey.ExportParameters(false); + + if (!currentParameters.G.ContentsEqual(newParameters.G) || + !currentParameters.P.ContentsEqual(newParameters.P) || + !currentParameters.Q.ContentsEqual(newParameters.Q) || + !currentParameters.Y.ContentsEqual(newParameters.Y)) + { + throw new ArgumentException(SR.Cryptography_PrivateKey_DoesNotMatch, nameof(privateKey)); + } + + ICertificatePal pal = certificate.Pal.CopyWithPrivateKey(privateKey); + return new X509Certificate2(pal); + } } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs index 8cb9e353e140..56d7c26effd3 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Diagnostics; using Internal.Cryptography; using Internal.Cryptography.Pal; @@ -16,7 +17,6 @@ public static class ECDsaCertificateExtensions /// /// Gets the public key from the certificate or null if the certificate does not have an ECDsa public key. /// - [SecuritySafeCritical] public static ECDsa GetECDsaPublicKey(this X509Certificate2 certificate) { return certificate.GetPublicKey(cert => HasECDsaKeyUsage(cert)); @@ -25,12 +25,35 @@ public static ECDsa GetECDsaPublicKey(this X509Certificate2 certificate) /// /// Gets the private key from the certificate or null if the certificate does not have an ECDsa private key. /// - [SecuritySafeCritical] public static ECDsa GetECDsaPrivateKey(this X509Certificate2 certificate) { return certificate.GetPrivateKey(cert => HasECDsaKeyUsage(cert)); } + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, ECDsa privateKey) + { + if (certificate == null) + throw new ArgumentNullException(nameof(certificate)); + if (privateKey == null) + throw new ArgumentNullException(nameof(privateKey)); + + if (certificate.HasPrivateKey) + throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); + + ECDsa publicKey = GetECDsaPublicKey(certificate); + + if (publicKey == null) + throw new ArgumentException(SR.Cryptography_PrivateKey_WrongAlgorithm); + + if (!IsSameKey(publicKey, privateKey)) + { + throw new ArgumentException(SR.Cryptography_PrivateKey_DoesNotMatch, nameof(privateKey)); + } + + ICertificatePal pal = certificate.Pal.CopyWithPrivateKey(privateKey); + return new X509Certificate2(pal); + } + private static bool HasECDsaKeyUsage(X509Certificate2 certificate) { foreach (X509Extension extension in certificate.Extensions) @@ -64,5 +87,59 @@ private static bool HasECDsaKeyUsage(X509Certificate2 certificate) // considered valid for all usages, so we can use it for ECDSA. return true; } + + private static bool IsSameKey(ECDsa a, ECDsa b) + { + ECParameters aParameters = a.ExportParameters(false); + ECParameters bParameters = b.ExportParameters(false); + + if (aParameters.Curve.CurveType != bParameters.Curve.CurveType) + return false; + + if (!aParameters.Q.X.ContentsEqual(bParameters.Q.X) || + !aParameters.Q.Y.ContentsEqual(bParameters.Q.Y)) + { + return false; + } + + ECCurve aCurve = aParameters.Curve; + ECCurve bCurve = bParameters.Curve; + + if (aCurve.IsNamed) + { + // On Windows we care about FriendlyName, on Unix we care about Value + return (aCurve.Oid.Value == bCurve.Oid.Value && aCurve.Oid.FriendlyName == bCurve.Oid.FriendlyName); + } + + if (!aCurve.IsExplicit) + { + // Implicit curve, always fail. + return false; + } + + // Ignore Cofactor (which is derivable from the prime or polynomial and Order) + // Ignore Seed and Hash (which are entirely optional, and about how A and B were built) + if (!aCurve.G.X.ContentsEqual(bCurve.G.X) || + !aCurve.G.Y.ContentsEqual(bCurve.G.Y) || + !aCurve.Order.ContentsEqual(bCurve.Order) || + !aCurve.A.ContentsEqual(bCurve.A) || + !aCurve.B.ContentsEqual(bCurve.B)) + { + return false; + } + + if (aCurve.IsPrime) + { + return aCurve.Prime.ContentsEqual(bCurve.Prime); + } + + if (aCurve.IsCharacteristic2) + { + return aCurve.Polynomial.ContentsEqual(bCurve.Polynomial); + } + + Debug.Fail($"Missing match criteria for curve type {aCurve.CurveType}"); + return false; + } } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaX509SignatureGenerator.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaX509SignatureGenerator.cs new file mode 100644 index 000000000000..8eb22b365df7 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/ECDsaX509SignatureGenerator.cs @@ -0,0 +1,111 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + internal sealed class ECDsaX509SignatureGenerator : X509SignatureGenerator + { + private readonly ECDsa _key; + + internal ECDsaX509SignatureGenerator(ECDsa key) + { + Debug.Assert(key != null); + + _key = key; + } + + public override byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm) + { + string oid; + + if (hashAlgorithm == HashAlgorithmName.SHA256) + { + oid = Oids.ECDsaSha256; + } + else if (hashAlgorithm == HashAlgorithmName.SHA384) + { + oid = Oids.ECDsaSha384; + } + else if (hashAlgorithm == HashAlgorithmName.SHA512) + { + oid = Oids.ECDsaSha512; + } + else + { + throw new ArgumentOutOfRangeException( + nameof(hashAlgorithm), + hashAlgorithm, + SR.Format(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithm.Name)); + } + + return DerEncoder.ConstructSequence(DerEncoder.SegmentedEncodeOid(oid)); + } + + public override byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + { + byte[] ieeeFormat = _key.SignData(data, hashAlgorithm); + + Debug.Assert(ieeeFormat.Length % 2 == 0); + int segmentLength = ieeeFormat.Length / 2; + + return DerEncoder.ConstructSequence( + DerEncoder.SegmentedEncodeUnsignedInteger(ieeeFormat, 0, segmentLength), + DerEncoder.SegmentedEncodeUnsignedInteger(ieeeFormat, segmentLength, segmentLength)); + } + + protected override PublicKey BuildPublicKey() + { + ECParameters ecParameters = _key.ExportParameters(false); + + if (!ecParameters.Curve.IsNamed) + { + throw new InvalidOperationException(SR.Cryptography_ECC_NamedCurvesOnly); + } + + string curveOid = ecParameters.Curve.Oid.Value; + + if (string.IsNullOrEmpty(curveOid)) + { + string friendlyName = ecParameters.Curve.Oid.FriendlyName; + + // Translate the three curves that were supported Windows 7-8.1, but emit no Oid.Value; + // otherwise just wash the friendly name back through Oid to see if we can get a value. + switch (friendlyName) + { + case "nistP256": + curveOid = Oids.EccCurveSecp256r1; + break; + case "nistP384": + curveOid = Oids.EccCurveSecp384r1; + break; + case "nistP521": + curveOid = Oids.EccCurveSecp521r1; + break; + default: + curveOid = new Oid(friendlyName).Value; + break; + } + } + + Debug.Assert(ecParameters.Q.X.Length == ecParameters.Q.Y.Length); + byte[] uncompressedPoint = new byte[1 + ecParameters.Q.X.Length + ecParameters.Q.Y.Length]; + + // Uncompressed point (0x04) + uncompressedPoint[0] = 0x04; + + Buffer.BlockCopy(ecParameters.Q.X, 0, uncompressedPoint, 1, ecParameters.Q.X.Length); + Buffer.BlockCopy(ecParameters.Q.Y, 0, uncompressedPoint, 1 + ecParameters.Q.X.Length, ecParameters.Q.Y.Length); + + Oid ecPublicKey = new Oid(Oids.Ecc); + + return new PublicKey( + ecPublicKey, + new AsnEncodedData(ecPublicKey, DerEncoder.EncodeOid(curveOid)), + new AsnEncodedData(ecPublicKey, uncompressedPoint)); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/GeneralNameEncoder.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/GeneralNameEncoder.cs new file mode 100644 index 000000000000..2b9082c50cf1 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/GeneralNameEncoder.cs @@ -0,0 +1,88 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Globalization; +using System.Net; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + internal sealed class GeneralNameEncoder + { + private enum GeneralNameTag : byte + { + // Constructed + OtherName = DerSequenceReader.ContextSpecificConstructedTag0, + + // Primitive + Rfc822Name = DerSequenceReader.ContextSpecificTagFlag | 1, + DnsName = DerSequenceReader.ContextSpecificTagFlag | 2, + X400Address = DerSequenceReader.ContextSpecificTagFlag | 3, + DirectoryName = DerSequenceReader.ContextSpecificTagFlag | 4, + EdiPartyName = DerSequenceReader.ContextSpecificTagFlag | 5, + Uri = DerSequenceReader.ContextSpecificTagFlag | 6, + IpAddress = DerSequenceReader.ContextSpecificTagFlag | 7, + RegisteredId = DerSequenceReader.ContextSpecificTagFlag | 8, + } + + private readonly IdnMapping _idnMapping = new IdnMapping(); + + internal byte[][] EncodeEmailAddress(string emailAddress) + { + byte[][] rfc822NameTlv = DerEncoder.SegmentedEncodeIA5String(emailAddress.ToCharArray()); + rfc822NameTlv[0][0] = (byte)GeneralNameTag.Rfc822Name; + + return rfc822NameTlv; + } + + internal byte[][] EncodeDnsName(string dnsName) + { + string idnaName = _idnMapping.GetAscii(dnsName); + byte[][] dnsNameTlv = DerEncoder.SegmentedEncodeIA5String(idnaName.ToCharArray()); + dnsNameTlv[0][0] = (byte)GeneralNameTag.DnsName; + + return dnsNameTlv; + } + + internal byte[][] EncodeUri(Uri uri) + { + byte[][] uriTlv = DerEncoder.SegmentedEncodeIA5String(uri.AbsoluteUri.ToCharArray()); + uriTlv[0][0] = (byte)GeneralNameTag.Uri; + + return uriTlv; + } + + internal byte[][] EncodeIpAddress(IPAddress address) + { + byte[] addressBytes = address.GetAddressBytes(); + + byte[][] ipAddressTlv = DerEncoder.SegmentedEncodeOctetString(addressBytes); + ipAddressTlv[0][0] = (byte)GeneralNameTag.IpAddress; + + return ipAddressTlv; + } + + internal byte[][] EncodeUserPrincipalName(string upn) + { + // AnotherName ::= SEQUENCE { + // type-id OBJECT IDENTIFIER, + // value[0] EXPLICIT ANY DEFINED BY type-id + // } + + byte[][] upnUtf8 = DerEncoder.SegmentedEncodeUtf8String(upn.ToCharArray()); + + // [0] EXPLICIT + byte[][] payloadTlv = DerEncoder.ConstructSegmentedSequence(upnUtf8); + payloadTlv[0][0] = DerSequenceReader.ContextSpecificConstructedTag0; + + byte[][] anotherNameTlv = DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeOid(Oids.UserPrincipalName), + payloadTlv); + + anotherNameTlv[0][0] = (byte)GeneralNameTag.OtherName; + + return anotherNameTlv; + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs new file mode 100644 index 000000000000..09542a760d9f --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs @@ -0,0 +1,84 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + internal class Pkcs10CertificationRequestInfo + { + private static readonly byte[][] s_encodedVersion = DerEncoder.SegmentedEncodeUnsignedInteger(new byte[1]); + + internal X500DistinguishedName Subject { get; set; } + internal PublicKey PublicKey { get; set; } + internal Collection Attributes { get; } = new Collection(); + + internal Pkcs10CertificationRequestInfo( + X500DistinguishedName subject, + PublicKey publicKey, + IEnumerable attributes) + { + if (subject == null) + throw new ArgumentNullException(nameof(subject)); + if (publicKey == null) + throw new ArgumentNullException(nameof(publicKey)); + + Subject = subject; + PublicKey = publicKey; + + if (attributes != null) + { + Attributes.AddRange(attributes); + } + } + + private byte[] Encode() + { + // CertificationRequestInfo::= SEQUENCE { + // version INTEGER { v1(0) } (v1,...), + // subject Name, + // subjectPKInfo SubjectPublicKeyInfo{ { PKInfoAlgorithms } }, + // attributes[0] Attributes{ { CRIAttributes } } + // } + // + // Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }} + + byte[][] attrSet = Attributes.SegmentedEncodeAttributeSet(); + + // Replace the tag with ContextSpecific0. + attrSet[0][0] = DerSequenceReader.ContextSpecificConstructedTag0; + + return DerEncoder.ConstructSequence( + s_encodedVersion, + Subject.RawData.WrapAsSegmentedForSequence(), + PublicKey.SegmentedEncodeSubjectPublicKeyInfo(), + attrSet); + } + + internal byte[] ToPkcs10Request(X509SignatureGenerator signatureGenerator, HashAlgorithmName hashAlgorithm) + { + // State validation should be runtime checks if/when this becomes public API + Debug.Assert(signatureGenerator != null); + Debug.Assert(Subject != null); + Debug.Assert(PublicKey != null); + + // CertificationRequest ::= SEQUENCE { + // certificationRequestInfo CertificationRequestInfo, + // signatureAlgorithm AlgorithmIdentifier{ { SignatureAlgorithms } }, + // signature BIT STRING + // } + + byte[] encoded = Encode(); + byte[] signature = signatureGenerator.SignData(encoded, hashAlgorithm); + + return DerEncoder.ConstructSequence( + encoded.WrapAsSegmentedForSequence(), + signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm).WrapAsSegmentedForSequence(), + DerEncoder.SegmentedEncodeBitString(signature)); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs new file mode 100644 index 000000000000..e47a99e06f8a --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs @@ -0,0 +1,52 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + internal sealed class Pkcs9ExtensionRequest : X501Attribute + { + internal Pkcs9ExtensionRequest(IEnumerable extensions) + : base(Oids.Pkcs9ExtensionRequest, EncodeAttribute(extensions)) + { + } + + private static byte[] EncodeAttribute(IEnumerable extensions) + { + if (extensions == null) + throw new ArgumentNullException(nameof(extensions)); + + // extensionRequest ATTRIBUTE ::= { + // WITH SYNTAX ExtensionRequest + // SINGLE VALUE TRUE + // ID pkcs-9-at-extensionRequest + // } + // + // ExtensionRequest ::= Extensions + // + // Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension + // + // Extension ::= SEQUENCE { + // extnID OBJECT IDENTIFIER, + // critical BOOLEAN DEFAULT FALSE, + // extnValue OCTET STRING } + + List encodedExtensions = new List(); + + foreach (X509Extension extension in extensions) + { + if (extension == null) + continue; + + encodedExtensions.Add(extension.SegmentedEncodedX509Extension()); + } + + // The SEQUENCE over the encodedExtensions list is the value of + // Extensions/ExtensionRequest. + return DerEncoder.ConstructSequence(encodedExtensions.ToArray()); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs index d2ae1f043bc6..f26eadcb8c77 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs @@ -16,7 +16,6 @@ public static class RSACertificateExtensions /// /// Gets the public key from the certificate or null if the certificate does not have an RSA public key. /// - [SecuritySafeCritical] public static RSA GetRSAPublicKey(this X509Certificate2 certificate) { return certificate.GetPublicKey(); @@ -25,10 +24,37 @@ public static RSA GetRSAPublicKey(this X509Certificate2 certificate) /// /// Gets the private key from the certificate or null if the certificate does not have an RSA private key. /// - [SecuritySafeCritical] public static RSA GetRSAPrivateKey(this X509Certificate2 certificate) { return certificate.GetPrivateKey(); } + + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, RSA privateKey) + { + if (certificate == null) + throw new ArgumentNullException(nameof(certificate)); + if (privateKey == null) + throw new ArgumentNullException(nameof(privateKey)); + + if (certificate.HasPrivateKey) + throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); + + RSA publicKey = GetRSAPublicKey(certificate); + + if (publicKey == null) + throw new ArgumentException(SR.Cryptography_PrivateKey_WrongAlgorithm); + + RSAParameters currentParameters = publicKey.ExportParameters(false); + RSAParameters newParameters = privateKey.ExportParameters(false); + + if (!currentParameters.Modulus.ContentsEqual(newParameters.Modulus) || + !currentParameters.Exponent.ContentsEqual(newParameters.Exponent)) + { + throw new ArgumentException(SR.Cryptography_PrivateKey_DoesNotMatch, nameof(privateKey)); + } + + ICertificatePal pal = certificate.Pal.CopyWithPrivateKey(privateKey); + return new X509Certificate2(pal); + } } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSAPkcs1X509SignatureGenerator.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSAPkcs1X509SignatureGenerator.cs new file mode 100644 index 000000000000..3edb7ff7b936 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/RSAPkcs1X509SignatureGenerator.cs @@ -0,0 +1,77 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + internal sealed class RSAPkcs1X509SignatureGenerator : X509SignatureGenerator + { + private readonly RSA _key; + + internal RSAPkcs1X509SignatureGenerator(RSA key) + { + Debug.Assert(key != null); + + _key = key; + } + + public override byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + { + return _key.SignData(data, hashAlgorithm, RSASignaturePadding.Pkcs1); + } + + protected override PublicKey BuildPublicKey() + { + RSAParameters parameters = _key.ExportParameters(false); + + byte[] rsaPublicKey = DerEncoder.ConstructSequence( + DerEncoder.SegmentedEncodeUnsignedInteger(parameters.Modulus), + DerEncoder.SegmentedEncodeUnsignedInteger(parameters.Exponent)); + + Oid oid = new Oid(Oids.RsaRsa); + + // The OID is being passed to everything here because that's what + // X509Certificate2.PublicKey does. + return new PublicKey( + oid, + // Encode the DER-NULL even though it is OPTIONAL, because everyone else does. + // + // This is due to one version of the ASN.1 not including OPTIONAL, and that was + // the version that got predominately implemented for RSA. Now it's convention. + new AsnEncodedData(oid, new byte[] { 0x05, 0x00 }), + new AsnEncodedData(oid, rsaPublicKey)); + } + + public override byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm) + { + string oid; + + if (hashAlgorithm == HashAlgorithmName.SHA256) + { + oid = Oids.RsaPkcs1Sha256; + } + else if (hashAlgorithm == HashAlgorithmName.SHA384) + { + oid = Oids.RsaPkcs1Sha384; + } + else if (hashAlgorithm == HashAlgorithmName.SHA512) + { + oid = Oids.RsaPkcs1Sha512; + } + else + { + throw new ArgumentOutOfRangeException( + nameof(hashAlgorithm), + hashAlgorithm, + SR.Format(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithm.Name)); + } + + return DerEncoder.ConstructSequence( + DerEncoder.SegmentedEncodeOid(oid), + DerEncoder.SegmentedEncodeNull()); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs new file mode 100644 index 000000000000..ab65fa5290f7 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Net; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + public sealed class SubjectAlternativeNameBuilder + { + // Because GeneralNames is a SEQUENCE, just make a rolling list, it doesn't need to be re-sorted. + private readonly List _encodedTlvs = new List(); + private readonly GeneralNameEncoder _generalNameEncoder = new GeneralNameEncoder(); + + public void AddEmailAddress(string emailAddress) + { + if (string.IsNullOrEmpty(emailAddress)) + throw new ArgumentOutOfRangeException(nameof(emailAddress), SR.Arg_EmptyOrNullString); + + _encodedTlvs.Add(_generalNameEncoder.EncodeEmailAddress(emailAddress)); + } + + public void AddDnsName(string dnsName) + { + if (string.IsNullOrEmpty(dnsName)) + throw new ArgumentOutOfRangeException(nameof(dnsName), SR.Arg_EmptyOrNullString); + + _encodedTlvs.Add(_generalNameEncoder.EncodeDnsName(dnsName)); + } + + public void AddUri(Uri uri) + { + if (uri == null) + throw new ArgumentNullException(nameof(uri)); + + _encodedTlvs.Add(_generalNameEncoder.EncodeUri(uri)); + } + + public void AddIpAddress(IPAddress ipAddress) + { + if (ipAddress == null) + throw new ArgumentNullException(nameof(ipAddress)); + + _encodedTlvs.Add(_generalNameEncoder.EncodeIpAddress(ipAddress)); + } + + public void AddUserPrincipalName(string upn) + { + if (string.IsNullOrEmpty(upn)) + throw new ArgumentOutOfRangeException(nameof(upn), SR.Arg_EmptyOrNullString); + + _encodedTlvs.Add(_generalNameEncoder.EncodeUserPrincipalName(upn)); + } + + public X509Extension Build(bool critical=false) + { + return new X509Extension( + Oids.SubjectAltName, + DerEncoder.ConstructSequence(_encodedTlvs), + critical); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs new file mode 100644 index 000000000000..7cc09ae0c2aa --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs @@ -0,0 +1,206 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using Internal.Cryptography; + +namespace System.Security.Cryptography.X509Certificates +{ + /* + TBSCertificate ::= SEQUENCE { + version [0] Version DEFAULT v1, + serialNumber CertificateSerialNumber, + signature AlgorithmIdentifier, + issuer Name, + validity Validity, + subject Name, + subjectPublicKeyInfo SubjectPublicKeyInfo, + issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, + -- If present, version MUST be v2 or v3 + subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, + -- If present, version MUST be v2 or v3 + extensions [3] Extensions OPTIONAL + -- If present, version MUST be v3 -- } + */ + internal sealed class TbsCertificate + { + // If TbsCertificate is made public API, consider having Version nullable to be + // automatically assigned a value per RFC 3280. + public byte Version { get; set; } + public byte[] SerialNumber { get; set; } + public byte[] SignatureAlgorithm { get; set; } + public X500DistinguishedName Issuer { get; set; } + public DateTimeOffset NotBefore { get; set; } + public DateTimeOffset NotAfter { get; set; } + public X500DistinguishedName Subject { get; set; } + public PublicKey PublicKey { get; set; } + // We don't support the IssuerUniqueId or SubjectUniqueId fields. + // They might be needed if TbsCertificate becomes public API. + public Collection Extensions { get; } = new Collection(); + + private byte[] Encode(X509SignatureGenerator signatureGenerator, HashAlgorithmName hashAlgorithm) + { + // State validation should be runtime checks if/when this becomes public API + Debug.Assert(Subject != null); + Debug.Assert(PublicKey != null); + + // Under a public API model we could allow these to be null for a self-signed case. + Debug.Assert(SerialNumber != null); + Debug.Assert(Issuer != null); + + if (SignatureAlgorithm != null) + { + ValidateSignatureAlgorithm(); + } + + List encodedFields = new List(); + + byte version = Version; + + if (version != 0) + { + byte[][] encodedVersion = DerEncoder.ConstructSegmentedSequence( + DerEncoder.SegmentedEncodeUnsignedInteger(new[] { version })); + + encodedVersion[0][0] = DerSequenceReader.ContextSpecificConstructedTag0; + + encodedFields.Add(encodedVersion); + } + + encodedFields.Add(DerEncoder.SegmentedEncodeUnsignedInteger(SerialNumber)); + + // SignatureAlgorithm: Use the specified value, or ask the generator (without mutating the class) + byte[] signatureAlgorithm = SignatureAlgorithm ?? signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + encodedFields.Add(signatureAlgorithm.WrapAsSegmentedForSequence()); + + // For public API allowing self-sign ease-of-use, this could be (Issuer ?? Subject). + encodedFields.Add(Issuer.RawData.WrapAsSegmentedForSequence()); + + encodedFields.Add( + DerEncoder.ConstructSegmentedSequence( + EncodeValidityField(NotBefore, nameof(NotBefore)), + EncodeValidityField(NotAfter, nameof(NotAfter)))); + + encodedFields.Add(Subject.RawData.WrapAsSegmentedForSequence()); + + encodedFields.Add(PublicKey.SegmentedEncodeSubjectPublicKeyInfo()); + + // Issuer and Subject Unique ID values would go here, if they were supported. + + if (Extensions.Count > 0) + { + Debug.Assert(version >= 2); + + List encodedExtensions = new List(Extensions.Count); + + // extensions[3] Extensions OPTIONAL + // + // Since this doesn't say IMPLICIT, it will look like + // + // A3 [length] + // 30 [length] + // First Extension + // Second Extension + // ... + + // An interesting quirk of skipping null values here is that + // Extensions.Count == 0 => no extensions + // Extensions.ContainsOnly(null) => empty extensions list + + HashSet usedOids = new HashSet(Extensions.Count); + + foreach (X509Extension extension in Extensions) + { + if (extension == null) + continue; + + if (!usedOids.Add(extension.Oid.Value)) + { + throw new InvalidOperationException( + SR.Format(SR.Cryptography_CertReq_DuplicateExtension, extension.Oid.Value)); + } + + encodedExtensions.Add(extension.SegmentedEncodedX509Extension()); + } + + byte[][] extensionField = DerEncoder.ConstructSegmentedSequence( + DerEncoder.ConstructSegmentedSequence(encodedExtensions)); + extensionField[0][0] = DerSequenceReader.ContextSpecificConstructedTag3; + + encodedFields.Add(extensionField); + } + + return DerEncoder.ConstructSequence(encodedFields); + } + + private static byte[][] EncodeValidityField(DateTimeOffset validityField, string propertyName) + { + /* https://tools.ietf.org/html/rfc3280#section-4.1.2.5 + 4.1.2.5 Validity + + The certificate validity period is the time interval during which the + CA warrants that it will maintain information about the status of the + certificate. The field is represented as a SEQUENCE of two dates: + the date on which the certificate validity period begins (notBefore) + and the date on which the certificate validity period ends + (notAfter). Both notBefore and notAfter may be encoded as UTCTime or + GeneralizedTime. + + CAs conforming to this profile MUST always encode certificate + validity dates through the year 2049 as UTCTime; certificate validity + dates in 2050 or later MUST be encoded as GeneralizedTime. + + The validity period for a certificate is the period of time from + notBefore through notAfter, inclusive. + */ + + DateTime utcValue = validityField.UtcDateTime; + + // On the one hand, GeneralizedTime easily goes back to 1000, and possibly to 0000; + // but on the other, dates before computers are just a bit beyond the pale. + if (utcValue.Year < 1950) + { + throw new ArgumentOutOfRangeException(propertyName, utcValue, SR.Cryptography_CertReq_DateTooOld); + } + + // Since the date encoding is effectively a DER rule (ensuring that two encoders + // produce the same result), no option exists to encode the validity field as a + // GeneralizedTime when it fits in the UTCTime constraint. + if (utcValue.Year < 2050) + { + return DerEncoder.SegmentedEncodeUtcTime(utcValue); + } + + return DerEncoder.SegmentedEncodeGeneralizedTime(utcValue); + } + + internal byte[] Sign(X509SignatureGenerator signatureGenerator, HashAlgorithmName hashAlgorithm) + { + if (signatureGenerator == null) + throw new ArgumentNullException(nameof(signatureGenerator)); + + byte[] encoded = Encode(signatureGenerator, hashAlgorithm); + byte[] signature = signatureGenerator.SignData(encoded, hashAlgorithm); + + return DerEncoder.ConstructSequence( + encoded.WrapAsSegmentedForSequence(), + signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm).WrapAsSegmentedForSequence(), + DerEncoder.SegmentedEncodeBitString(signature)); + } + + private void ValidateSignatureAlgorithm() + { + DerSequenceReader algReader = new DerSequenceReader(SignatureAlgorithm); + algReader.ReadOid(); + + if (algReader.HasData) + algReader.SkipValue(); + + if (algReader.HasData) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X501Attribute.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X501Attribute.cs new file mode 100644 index 000000000000..f21dbd1990d3 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X501Attribute.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Security.Cryptography.X509Certificates +{ + internal class X501Attribute : AsnEncodedData + { + internal X501Attribute(string oid, byte[] rawData) + : base(oid, rawData) + { + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs new file mode 100644 index 000000000000..a76720716383 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs @@ -0,0 +1,47 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Security.Cryptography.X509Certificates +{ + public abstract class X509SignatureGenerator + { + private PublicKey _publicKey; + + public PublicKey PublicKey + { + get + { + if (_publicKey == null) + { + _publicKey = BuildPublicKey(); + } + + return _publicKey; + } + } + + public abstract byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm); + public abstract byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm); + protected abstract PublicKey BuildPublicKey(); + + public static X509SignatureGenerator CreateForECDsa(ECDsa key) + { + if (key == null) + throw new ArgumentNullException(nameof(key)); + + return new ECDsaX509SignatureGenerator(key); + } + + public static X509SignatureGenerator CreateForRSA(RSA key, RSASignaturePadding signaturePadding) + { + if (key == null) + throw new ArgumentNullException(nameof(key)); + + if (signaturePadding == RSASignaturePadding.Pkcs1) + return new RSAPkcs1X509SignatureGenerator(key); + + throw new ArgumentException(SR.Cryptography_InvalidPaddingMode); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestApiTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestApiTests.cs new file mode 100644 index 000000000000..066f991cf9e2 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestApiTests.cs @@ -0,0 +1,78 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class CertificateRequestApiTests + { + [Fact] + public static void ConstructorDefaults() + { + const string TestCN = "CN=Test"; + + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp256r1Data.KeyParameters)) + { + CertificateRequest request = new CertificateRequest(TestCN, ecdsa, HashAlgorithmName.SHA256); + + Assert.NotNull(request.PublicKey); + Assert.NotNull(request.CertificateExtensions); + Assert.Empty(request.CertificateExtensions); + Assert.Equal(TestCN, request.SubjectName.Name); + } + } + + [Fact] + public static void ToPkcs10_ArgumentExceptions() + { + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp256r1Data.KeyParameters)) + { + CertificateRequest request = new CertificateRequest("", ecdsa, HashAlgorithmName.SHA256); + + Assert.Throws("signatureGenerator", () => request.CreateSigningRequest(null)); + } + } + + [Fact] + public static void SelfSign_ArgumentValidation() + { + using (RSA rsa = RSA.Create()) + { + rsa.ImportParameters(TestData.RsaBigExponentParams); + + CertificateRequest request = new CertificateRequest("CN=Test", rsa, HashAlgorithmName.SHA256); + + Assert.Throws( + null, + () => request.CreateSelfSigned(DateTimeOffset.MaxValue, DateTimeOffset.MinValue)); + } + } + + [Fact] + public static void Sign_ArgumentValidation() + { + using (X509Certificate2 testRoot = new X509Certificate2(TestData.PfxData, TestData.PfxDataPassword)) + { + CertificateRequest request = new CertificateRequest("CN=Test", testRoot.GetRSAPublicKey(), HashAlgorithmName.SHA256); + + Assert.Throws( + "generator", + () => request.Create(testRoot.SubjectName, null, DateTimeOffset.MinValue, DateTimeOffset.MinValue, null)); + + Assert.Throws( + null, + () => request.Create(testRoot, DateTimeOffset.MaxValue, DateTimeOffset.MinValue, null)); + + Assert.Throws( + "serialNumber", + () => request.Create(testRoot, DateTimeOffset.MinValue, DateTimeOffset.MaxValue, null)); + + Assert.Throws( + "serialNumber", + () => request.Create(testRoot, DateTimeOffset.MinValue, DateTimeOffset.MaxValue, Array.Empty())); + } + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs new file mode 100644 index 000000000000..13cb5716746b --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestChainTests.cs @@ -0,0 +1,305 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Linq; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class CertificateRequestChainTests + { + [Fact] + public static void CreateChain_ECC() + { + using (ECDsa rootKey = ECDsa.Create(ECCurve.NamedCurves.nistP521)) + using (ECDsa intermed1Key = ECDsa.Create(ECCurve.NamedCurves.nistP384)) + using (ECDsa intermed2Key = ECDsa.Create(ECCurve.NamedCurves.nistP384)) + using (ECDsa leafKey = ECDsa.Create(ECCurve.NamedCurves.nistP256)) + using (ECDsa leafPubKey = ECDsa.Create(leafKey.ExportParameters(false))) + { + CreateAndTestChain( + rootKey, + intermed1Key, + intermed2Key, + leafPubKey); + } + } + + [Fact] + public static void CreateChain_RSA() + { + using (RSA rootKey = RSA.Create(3072)) + using (RSA intermed1Key = RSA.Create(2048)) + using (RSA intermed2Key = RSA.Create(2048)) + using (RSA leafKey = RSA.Create(1536)) + using (RSA leafPubKey = RSA.Create(leafKey.ExportParameters(false))) + { + leafPubKey.ImportParameters(leafKey.ExportParameters(false)); + + CreateAndTestChain( + rootKey, + intermed1Key, + intermed2Key, + leafPubKey); + } + } + + [Fact] + public static void CreateChain_Hybrid() + { + using (ECDsa rootKey = ECDsa.Create(ECCurve.NamedCurves.nistP521)) + using (RSA intermed1Key = RSA.Create(2048)) + using (RSA intermed2Key = RSA.Create(2048)) + using (ECDsa leafKey = ECDsa.Create(ECCurve.NamedCurves.nistP256)) + using (ECDsa leafPubKey = ECDsa.Create(leafKey.ExportParameters(false))) + { + CreateAndTestChain( + rootKey, + intermed1Key, + intermed2Key, + leafPubKey); + } + } + + private static CertificateRequest OpenCertRequest( + string dn, + AsymmetricAlgorithm key, + HashAlgorithmName hashAlgorithm) + { + RSA rsa = key as RSA; + + if (rsa != null) + return new CertificateRequest(dn, rsa, hashAlgorithm); + + ECDsa ecdsa = key as ECDsa; + + if (ecdsa != null) + return new CertificateRequest(dn, ecdsa, hashAlgorithm); + + throw new InvalidOperationException( + $"Had no handler for key of type {key?.GetType().FullName ?? "null"}"); + } + + private static CertificateRequest CreateChainRequest( + string dn, + AsymmetricAlgorithm key, + HashAlgorithmName hashAlgorithm, + bool isCa, + int? pathLen) + { + const X509KeyUsageFlags CAFlags = X509KeyUsageFlags.CrlSign | X509KeyUsageFlags.KeyCertSign; + const X509KeyUsageFlags EEFlags = + X509KeyUsageFlags.DataEncipherment | + X509KeyUsageFlags.KeyEncipherment | + X509KeyUsageFlags.DigitalSignature | + X509KeyUsageFlags.NonRepudiation; + + CertificateRequest request = OpenCertRequest(dn, key, hashAlgorithm); + + request.CertificateExtensions.Add( + new X509SubjectKeyIdentifierExtension( + request.PublicKey, + X509SubjectKeyIdentifierHashAlgorithm.Sha1, + false)); + + request.CertificateExtensions.Add( + new X509KeyUsageExtension( + isCa ? CAFlags : EEFlags, + true)); + + request.CertificateExtensions.Add( + new X509BasicConstraintsExtension( + isCa, + pathLen.HasValue, + pathLen.GetValueOrDefault(), + true)); + + return request; + } + + private static void RunChain( + X509Chain chain, + X509Certificate2 cert, + bool expectSuccess, + string msg) + { + bool success = chain.Build(cert); + + FormattableString errMsg = null; + + if (expectSuccess && !success) + { + for (int i = 0; i < chain.ChainElements.Count; i++) + { + X509ChainElement element = chain.ChainElements[i]; + + if (element.ChainElementStatus.Length != 0) + { + X509ChainStatusFlags flags = + element.ChainElementStatus.Select(ces => ces.Status).Aggregate((a, b) => a | b); + + errMsg = $"{msg}: Initial chain error at depth {i}: {flags}"; + break; + } + } + } + else if (!expectSuccess && success) + { + errMsg = $"{msg}: Chain fails when expected"; + } + + if (errMsg != null) + { + DisposeChainCerts(chain); + } + + if (expectSuccess) + { + Assert.True(success, errMsg?.ToString()); + } + else + { + Assert.False(success, errMsg?.ToString()); + } + } + + private static void DisposeChainCerts(X509Chain chain) + { + foreach (X509ChainElement element in chain.ChainElements) + { + element.Certificate.Dispose(); + } + } + + private static X509Certificate2 CloneWithPrivateKey(X509Certificate2 cert, AsymmetricAlgorithm key) + { + RSA rsa = key as RSA; + + if (rsa != null) + return cert.CopyWithPrivateKey(rsa); + + ECDsa ecdsa = key as ECDsa; + + if (ecdsa != null) + return cert.CopyWithPrivateKey(ecdsa); + + DSA dsa = key as DSA; + + if (dsa != null) + return cert.CopyWithPrivateKey(dsa); + + throw new InvalidOperationException( + $"Had no handler for key of type {key?.GetType().FullName ?? "null"}"); + } + + private static void CreateAndTestChain( + AsymmetricAlgorithm rootPrivKey, + AsymmetricAlgorithm intermed1PrivKey, + AsymmetricAlgorithm intermed2PrivKey, + AsymmetricAlgorithm leafPubKey) + { + const string RootDN = "CN=Experimental Root Certificate"; + const string Intermed1DN = "CN=First Intermediate Certificate, O=Experimental"; + const string Intermed2DN = "CN=Second Intermediate Certificate, O=Experimental"; + const string LeafDN = "CN=End-Entity Certificate, O=Experimental"; + + CertificateRequest rootRequest = + CreateChainRequest(RootDN, rootPrivKey, HashAlgorithmName.SHA512, true, null); + + CertificateRequest intermed1Request = + CreateChainRequest(Intermed1DN, intermed1PrivKey, HashAlgorithmName.SHA384, true, null); + + CertificateRequest intermed2Request = + CreateChainRequest(Intermed2DN, intermed2PrivKey, HashAlgorithmName.SHA384, true, 0); + + CertificateRequest leafRequest = + CreateChainRequest(LeafDN, leafPubKey, HashAlgorithmName.SHA256, false, null); + + leafRequest.CertificateExtensions.Add( + new X509EnhancedKeyUsageExtension(new OidCollection { new Oid("1.3.6.1.5.5.7.3.1") }, false)); + + X509Certificate2 rootCertWithKey = null; + X509Certificate2 intermed1CertWithKey = null; + X509Certificate2 intermed2CertWithKey = null; + X509Certificate2 leafCert = null; + + try + { + DateTimeOffset now = DateTimeOffset.UtcNow; + DateTimeOffset rootEnd = now + TimeSpan.FromDays(10000); + DateTimeOffset intermedEnd = now + TimeSpan.FromDays(366 * 4); + DateTimeOffset leafEnd = now + TimeSpan.FromDays(366 * 1.3); + + rootCertWithKey = rootRequest.CreateSelfSigned(now, rootEnd); + + byte[] intermed1Serial = new byte[10]; + byte[] intermed2Serial = new byte[10]; + byte[] leafSerial = new byte[10]; + + intermed1Serial[1] = 1; + intermed2Serial[1] = 2; + leafSerial[1] = 1; + + using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) + { + rng.GetBytes(intermed1Serial, 2, intermed1Serial.Length - 2); + rng.GetBytes(intermed2Serial, 2, intermed2Serial.Length - 2); + rng.GetBytes(leafSerial, 2, leafSerial.Length - 2); + } + + X509Certificate2 intermed1Tmp = intermed1Request.Create(rootCertWithKey, now, intermedEnd, intermed1Serial); + X509Certificate2 intermed2Tmp = intermed2Request.Create(rootCertWithKey, now, intermedEnd, intermed1Serial); + + intermed1CertWithKey = CloneWithPrivateKey(intermed1Tmp, intermed1PrivKey); + intermed2CertWithKey = CloneWithPrivateKey(intermed2Tmp, intermed2PrivKey); + + intermed1Tmp.Dispose(); + intermed2Tmp.Dispose(); + + leafCert = leafRequest.Create(intermed2CertWithKey, now, leafEnd, leafSerial); + + using (X509Chain chain = new X509Chain()) + { + chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; + chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority; + chain.ChainPolicy.ExtraStore.Add(intermed1CertWithKey); + chain.ChainPolicy.ExtraStore.Add(intermed2CertWithKey); + chain.ChainPolicy.ExtraStore.Add(rootCertWithKey); + + RunChain(chain, leafCert, true, "Initial chain build"); + + try + { + // Intermediate 1 plays no part. + Assert.Equal(3, chain.ChainElements.Count); + Assert.Equal(LeafDN, chain.ChainElements[0].Certificate.Subject); + Assert.Equal(Intermed2DN, chain.ChainElements[1].Certificate.Subject); + Assert.Equal(RootDN, chain.ChainElements[2].Certificate.Subject); + } + finally + { + DisposeChainCerts(chain); + } + + // Server Auth EKU, expect true. + chain.ChainPolicy.ApplicationPolicy.Add(new Oid("1.3.6.1.5.5.7.3.1")); + RunChain(chain, leafCert, true, "Server auth EKU chain build"); + DisposeChainCerts(chain); + + // Client Auth EKU, expect false + chain.ChainPolicy.ApplicationPolicy.Add(new Oid("1.3.6.1.5.5.7.3.2")); + RunChain(chain, leafCert, false, "Server and Client auth EKU chain build"); + DisposeChainCerts(chain); + } + } + finally + { + leafCert?.Dispose(); + intermed2CertWithKey?.Dispose(); + intermed1CertWithKey?.Dispose(); + rootCertWithKey?.Dispose(); + } + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs new file mode 100644 index 000000000000..3164f6a10835 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs @@ -0,0 +1,372 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class CertificateRequestUsageTests + { + [Fact] + public static void ReproduceBigExponentCsr() + { + X509Extension sanExtension = new X509Extension( + "2.5.29.17", + "302387047F00000187100000000000000000000000000000000182096C6F63616C686F7374".HexToByteArray(), + false); + + byte[] autoCsr; + byte[] csr; + + using (RSA rsa = RSA.Create()) + { + rsa.ImportParameters(TestData.RsaBigExponentParams); + + CertificateRequest request = new CertificateRequest( + "CN=localhost, OU=.NET Framework (CoreFX), O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + rsa, + HashAlgorithmName.SHA256); + + request.CertificateExtensions.Add(sanExtension); + + autoCsr = request.CreateSigningRequest(); + + X509SignatureGenerator generator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + csr = request.CreateSigningRequest(generator); + } + + Assert.Equal(TestData.BigExponentPkcs10Bytes.ByteArrayToHex(), autoCsr.ByteArrayToHex()); + Assert.Equal(TestData.BigExponentPkcs10Bytes.ByteArrayToHex(), csr.ByteArrayToHex()); + } + + [Fact] + public static void ReproduceBigExponentCert() + { + DateTimeOffset notBefore = new DateTimeOffset(2016, 3, 2, 1, 48, 0, TimeSpan.Zero); + DateTimeOffset notAfter = new DateTimeOffset(2017, 3, 2, 1, 48, 0, TimeSpan.Zero); + byte[] serialNumber = "9B5DE6C15126A58B".HexToByteArray(); + + var subject = new X500DistinguishedName( + "CN=localhost, OU=.NET Framework (CoreFX), O=Microsoft Corporation, L=Redmond, S=Washington, C=US"); + + X509Extension skidExtension = new X509SubjectKeyIdentifierExtension( + "78A5C75D51667331D5A96924114C9B5FA00D7BCB", + false); + + X509Extension akidExtension = new X509Extension( + "2.5.29.35", + "3016801478A5C75D51667331D5A96924114C9B5FA00D7BCB".HexToByteArray(), + false); + + X509Extension basicConstraints = new X509BasicConstraintsExtension(true, false, 0, false); + + X509Certificate2 cert; + + using (RSA rsa = RSA.Create()) + { + rsa.ImportParameters(TestData.RsaBigExponentParams); + + CertificateRequest request = new CertificateRequest(subject, rsa, HashAlgorithmName.SHA256); + request.CertificateExtensions.Add(skidExtension); + request.CertificateExtensions.Add(akidExtension); + request.CertificateExtensions.Add(basicConstraints); + + var signatureGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + + cert = request.Create(subject, signatureGenerator, notBefore, notAfter, serialNumber); + } + + const string expectedHex = + "308203EB308202D3A0030201020209009B5DE6C15126A58B300D06092A864886" + + "F70D01010B050030818A310B3009060355040613025553311330110603550408" + + "130A57617368696E67746F6E3110300E060355040713075265646D6F6E64311E" + + "301C060355040A13154D6963726F736F667420436F72706F726174696F6E3120" + + "301E060355040B13172E4E4554204672616D65776F726B2028436F7265465829" + + "31123010060355040313096C6F63616C686F7374301E170D3136303330323031" + + "343830305A170D3137303330323031343830305A30818A310B30090603550406" + + "13025553311330110603550408130A57617368696E67746F6E3110300E060355" + + "040713075265646D6F6E64311E301C060355040A13154D6963726F736F667420" + + "436F72706F726174696F6E3120301E060355040B13172E4E4554204672616D65" + + "776F726B2028436F726546582931123010060355040313096C6F63616C686F73" + + "7430820124300D06092A864886F70D010101050003820111003082010C028201" + + "0100AF81C1CBD8203F624A539ED6608175372393A2837D4890E48A19DED36973" + + "115620968D6BE0D3DAA38AA777BE02EE0B6B93B724E8DCC12B632B4FA80BBC92" + + "5BCE624F4CA7CC606306B39403E28C932D24DD546FFE4EF6A37F10770B2215EA" + + "8CBB5BF427E8C4D89B79EB338375100C5F83E55DE9B4466DDFBEEE42539AEF33" + + "EF187B7760C3B1A1B2103C2D8144564A0C1039A09C85CF6B5974EB516FC8D662" + + "3C94AE3A5A0BB3B4C792957D432391566CF3E2A52AFB0C142B9E0681B8972671" + + "AF2B82DD390A39B939CF719568687E4990A63050CA7768DCD6B378842F18FDB1" + + "F6D9FF096BAF7BEB98DCF930D66FCFD503F58D41BFF46212E24E3AFC45EA42BD" + + "884702050200000441A350304E301D0603551D0E0416041478A5C75D51667331" + + "D5A96924114C9B5FA00D7BCB301F0603551D2304183016801478A5C75D516673" + + "31D5A96924114C9B5FA00D7BCB300C0603551D13040530030101FF300D06092A" + + "864886F70D01010B0500038201010077756D05FFA6ADFED5B6D4AFB540840C6D" + + "01CF6B3FA6C973DFD61FCAA0A814FA1E2469019D94B1D856D07DD2B95B8550DF" + + "D2085953A494B99EFCBAA7982CE771984F9D4A445FFEE062E8A049736A39FD99" + + "4E1FDA0A5DC2B5B0E57A0B10C41BC7FE6A40B24F85977302593E60B98DD4811D" + + "47D948EDF8D6E6B5AF80A1827496E20BFD240E467674504D4E4703331D64705C" + + "36FB6E14BABFD9CBEEC44B33A8D7B36479900F3C5BBAB69C5E453D180783E250" + + "8051B998C038E4622571D2AB891D898E5458828CF18679517D28DBCABF72E813" + + "07BFD721B73DDB1751123F99D8FC0D533798C4DBD14719D5D8A85B00A144A367" + + "677B48891A9B56F045334811BACB7A"; + + Assert.Equal(expectedHex, cert.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SimpleSelfSign_RSA() + { + using (RSA rsa = RSA.Create()) + { + SimpleSelfSign( + new CertificateRequest("CN=localhost", rsa, HashAlgorithmName.SHA256), + "1.2.840.113549.1.1.1"); + } + } + + [Fact] + public static void SimpleSelfSign_ECC() + { + using (ECDsa ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP521)) + { + SimpleSelfSign( + new CertificateRequest("CN=localhost", ecdsa, HashAlgorithmName.SHA512), + "1.2.840.10045.2.1"); + } + } + + private static void SimpleSelfSign(CertificateRequest request, string expectedKeyOid) + { + request.CertificateExtensions.Add( + new X509EnhancedKeyUsageExtension(new OidCollection { new Oid("1.3.6.1.5.5.7.3.1") }, false)); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 newCert = request.CreateSelfSigned(now, now.AddDays(90))) + { + Assert.True(newCert.HasPrivateKey); + + Assert.Equal("CN=localhost", newCert.Subject); + Assert.Equal(expectedKeyOid, newCert.GetKeyAlgorithm()); + Assert.Equal(1, newCert.Extensions.Count); + + X509Extension extension = newCert.Extensions["2.5.29.37"]; + Assert.NotNull(extension); + + X509EnhancedKeyUsageExtension ekuExtension = (X509EnhancedKeyUsageExtension)extension; + Assert.Equal(1, ekuExtension.EnhancedKeyUsages.Count); + Assert.Equal("1.3.6.1.5.5.7.3.1", ekuExtension.EnhancedKeyUsages[0].Value); + + // Ideally the serial number is 8 bytes. But maybe it accidentally started with 0x00 (1/256), + // or 0x0000 (1/32768), or even 0x00000000 (1/4 billion). But that's where we draw the line. + string serialNumber = newCert.SerialNumber; + // Using this construct so the value gets printed in a failure, instead of just the length. + Assert.True( + serialNumber.Length >= 8 && serialNumber.Length <= 18, + $"Serial number ({serialNumber}) should be between 4 and 9 bytes, inclusive"); + } + } + + [Fact] + public static void SelfSign_RSA_UseCertKeys() + { + X509Certificate2 cert; + RSAParameters pubParams; + + RSA priv2; + + using (RSA rsa = RSA.Create()) + { + pubParams = rsa.ExportParameters(false); + + CertificateRequest request = new CertificateRequest( + "CN=localhost, OU=.NET Framework (CoreFX), O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + rsa, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + cert = request.CreateSelfSigned(now, now.AddDays(90)); + } + + using (cert) + using (priv2 = cert.GetRSAPrivateKey()) + using (RSA pub = RSA.Create()) + { + Assert.True(cert.HasPrivateKey, "cert.HasPrivateKey"); + Assert.NotNull(priv2); + + byte[] sig = priv2.SignData(pubParams.Modulus, HashAlgorithmName.SHA512, RSASignaturePadding.Pkcs1); + + pub.ImportParameters(pubParams); + + Assert.True( + pub.VerifyData(pubParams.Modulus, sig, HashAlgorithmName.SHA512, RSASignaturePadding.Pkcs1), + "Cert signature validates with public key"); + } + } + + [Fact] + public static void SelfSign_ECC_UseCertKeys() + { + X509Certificate2 cert; + ECParameters pubParams; + + ECDsa priv2; + + using (ECDsa ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256)) + { + pubParams = ecdsa.ExportParameters(false); + + CertificateRequest request = new CertificateRequest( + "CN=localhost, OU=.NET Framework (CoreFX), O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + ecdsa, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + cert = request.CreateSelfSigned(now, now.AddDays(90)); + } + + using (cert) + using (priv2 = cert.GetECDsaPrivateKey()) + using (ECDsa pub = ECDsa.Create(pubParams)) + { + Assert.True(cert.HasPrivateKey, "cert.HasPrivateKey"); + Assert.NotNull(priv2); + + byte[] sig = priv2.SignData(pubParams.Q.X, HashAlgorithmName.SHA384); + + Assert.True( + pub.VerifyData(pubParams.Q.X, sig, HashAlgorithmName.SHA384), + "Cert signature validates with public key"); + } + } + + [Fact] + public static void SelfSign_ECC_DiminishedPoint_UseCertKeys() + { + X509Certificate2 cert; + ECParameters pubParams; + + ECDsa priv2; + + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp521r1_DiminishedPublic_Data.KeyParameters)) + { + pubParams = ecdsa.ExportParameters(false); + + CertificateRequest request = new CertificateRequest( + "CN=localhost, OU=.NET Framework (CoreFX), O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + ecdsa, + HashAlgorithmName.SHA512); + + DateTimeOffset now = DateTimeOffset.UtcNow; + cert = request.CreateSelfSigned(now, now.AddDays(90)); + + priv2 = cert.GetECDsaPrivateKey(); + } + + using (cert) + using (priv2) + using (ECDsa pub = ECDsa.Create(pubParams)) + { + Assert.True(cert.HasPrivateKey, "cert.HasPrivateKey"); + Assert.NotNull(priv2); + + byte[] sig = priv2.SignData(pubParams.Q.X, HashAlgorithmName.SHA384); + + Assert.True( + pub.VerifyData(pubParams.Q.X, sig, HashAlgorithmName.SHA384), + "Cert signature validates with public key"); + } + } + + [Fact] + public static void SerialNumber_AlwaysPositive() + { + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp521r1_DiminishedPublic_Data.KeyParameters)) + { + var generator = X509SignatureGenerator.CreateForECDsa(ecdsa); + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName("CN=Test Cert"), + generator.PublicKey, + HashAlgorithmName.SHA512); + + byte[] desiredSerial = { 0x80 }; + + DateTimeOffset now = DateTimeOffset.UtcNow; + + X509Certificate2 cert = request.Create( + request.SubjectName, + generator, + now, + now.AddDays(1), + desiredSerial); + + using (cert) + { + Assert.Equal("0080", cert.SerialNumber); + } + } + } + + [Fact] + public static void AlwaysVersion3() + { + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp384r1Data.KeyParameters)) + { + CertificateRequest request = new CertificateRequest("CN=Test Cert", ecdsa, HashAlgorithmName.SHA384); + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddHours(1))) + { + Assert.Equal(3, cert.Version); + } + + request.CertificateExtensions.Add(null); + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddHours(1))) + { + Assert.Equal(3, cert.Version); + Assert.Equal(0, cert.Extensions.Count); + } + + request.CertificateExtensions.Clear(); + request.CertificateExtensions.Add( + new X509SubjectKeyIdentifierExtension( + request.PublicKey, + X509SubjectKeyIdentifierHashAlgorithm.Sha1, + false)); + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddHours(1))) + { + Assert.Equal(3, cert.Version); + Assert.Equal(1, cert.Extensions.Count); + } + } + } + + [Fact] + public static void UniqueExtensions() + { + using (RSA rsa = RSA.Create()) + { + CertificateRequest request = new CertificateRequest( + "CN=Double Extension Test", + rsa, + HashAlgorithmName.SHA256); + + request.CertificateExtensions.Add( + new X509BasicConstraintsExtension(true, false, 0, true)); + + request.CertificateExtensions.Add( + new X509BasicConstraintsExtension(true, false, 0, true)); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + Assert.Throws(() => request.CreateSelfSigned(now, now.AddDays(1))); + } + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/DSAX509SignatureGenerator.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/DSAX509SignatureGenerator.cs new file mode 100644 index 000000000000..bca809f11786 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/DSAX509SignatureGenerator.cs @@ -0,0 +1,177 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Test.Cryptography; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + internal sealed class DSAX509SignatureGenerator : X509SignatureGenerator + { + private readonly DSA _key; + + public DSAX509SignatureGenerator(DSA key) + { + if (key == null) + throw new ArgumentNullException(nameof(key)); + + _key = key; + } + + public override byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm) + { + if (hashAlgorithm == HashAlgorithmName.SHA1) + { + return "300906072A8648CE380403".HexToByteArray(); + } + + if (hashAlgorithm == HashAlgorithmName.SHA256) + { + return "300B0609608648016503040302".HexToByteArray(); + } + + throw new InvalidOperationException(); + } + + private static byte[] EncodeLength(int length) + { + Debug.Assert(length >= 0); + + byte low = unchecked((byte)length); + + // If the length value fits in 7 bits, it's an answer all by itself. + if (length < 0x80) + { + return new[] { low }; + } + + if (length <= 0xFF) + { + return new byte[] { 0x81, low }; + } + + int remainder = length >> 8; + byte midLow = unchecked((byte)remainder); + + if (length <= 0xFFFF) + { + return new byte[] { 0x82, midLow, low }; + } + + remainder >>= 8; + byte midHigh = unchecked((byte)remainder); + + if (length <= 0xFFFFFF) + { + return new byte[] { 0x83, midHigh, midLow, low }; + } + + remainder >>= 8; + byte high = unchecked((byte)remainder); + + // Since we know this was a non-negative signed number, the highest + // legal value here is 0x7F. + Debug.Assert(remainder < 0x80); + + return new byte[] { 0x84, high, midHigh, midLow, low }; + } + + private byte[] EncodeUnsignedInteger(byte[] data) + { + return EncodeUnsignedInteger(data, 0, data.Length); + } + + private byte[] EncodeUnsignedInteger(byte[] data, int offset, int count) + { + int length = count; + int realOffset = offset; + bool paddingByte = false; + + if (count == 0 || data[offset] >= 0x80) + { + paddingByte = true; + } + else + { + while (length > 1 && data[realOffset] == 0) + { + realOffset++; + length--; + } + } + + byte encodedLength = (byte)length; + + if (paddingByte) + { + encodedLength++; + } + + IEnumerable bytes = new byte[] { 0x02 }; + bytes = bytes.Concat(EncodeLength(encodedLength)); + + if (paddingByte) + { + bytes = bytes.Concat(new byte[1]); + } + + bytes = bytes.Concat(data.Skip(realOffset).Take(length)); + + return bytes.ToArray(); + } + + public override byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + { + byte[] ieeeFormat = _key.SignData(data, hashAlgorithm); + + Debug.Assert(ieeeFormat.Length % 2 == 0); + int segmentLength = ieeeFormat.Length / 2; + + byte[] r = EncodeUnsignedInteger(ieeeFormat, 0, segmentLength); + byte[] s = EncodeUnsignedInteger(ieeeFormat, segmentLength, segmentLength); + + return + new byte[] { 0x30 }. + Concat(EncodeLength(r.Length + s.Length)). + Concat(r). + Concat(s). + ToArray(); + } + + protected override PublicKey BuildPublicKey() + { + // DSA + Oid oid = new Oid("1.2.840.10040.4.1"); + + DSAParameters dsaParameters = _key.ExportParameters(false); + + // Dss-Parms ::= SEQUENCE { + // p INTEGER, + // q INTEGER, + // g INTEGER + // } + + byte[] p = EncodeUnsignedInteger(dsaParameters.P); + byte[] q = EncodeUnsignedInteger(dsaParameters.Q); + byte[] g = EncodeUnsignedInteger(dsaParameters.G); + + byte[] algParameters = + new byte[] { 0x30 }. + Concat(EncodeLength(p.Length + q.Length + g.Length)). + Concat(p). + Concat(q). + Concat(g). + ToArray(); + + byte[] keyValue = EncodeUnsignedInteger(dsaParameters.Y); + + return new PublicKey( + oid, + new AsnEncodedData(oid, algParameters), + new AsnEncodedData(oid, keyValue)); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/ECDsaX509SignatureGeneratorTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/ECDsaX509SignatureGeneratorTests.cs new file mode 100644 index 000000000000..5b4e664fd19f --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/ECDsaX509SignatureGeneratorTests.cs @@ -0,0 +1,139 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Linq; +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class ECDsaX509SignatureGeneratorTests + { + [Fact] + public static void ECDsaX509SignatureGeneratorCtor_Exceptions() + { + Assert.Throws( + "key", + () => X509SignatureGenerator.CreateForECDsa(null)); + } + + [Theory] + [MemberData(nameof(GetApplicableTestData))] + public static void PublicKeyEncoding(EccTestData testData) + { + ECParameters keyParameters = testData.KeyParameters; + + using (ECDsa ecdsa = ECDsa.Create(keyParameters)) + { + X509SignatureGenerator signatureGenerator = + X509SignatureGenerator.CreateForECDsa(ecdsa); + + PublicKey publicKey = signatureGenerator.PublicKey; + + Assert.Equal( + testData.CurveEncodedOidHex, + publicKey.EncodedParameters.RawData.ByteArrayToHex()); + + string expectedKeyHex = + // Uncompressed Point + "04" + + // Qx + keyParameters.Q.X.ByteArrayToHex() + + // Qy + keyParameters.Q.Y.ByteArrayToHex(); + + Assert.Equal(expectedKeyHex, publicKey.EncodedKeyValue.RawData.ByteArrayToHex()); + + const string ecPublicKeyOid = "1.2.840.10045.2.1"; + Assert.Equal(ecPublicKeyOid, publicKey.Oid.Value); + Assert.Equal(ecPublicKeyOid, publicKey.EncodedParameters.Oid.Value); + Assert.Equal(ecPublicKeyOid, publicKey.EncodedKeyValue.Oid.Value); + + PublicKey publicKey2 = signatureGenerator.PublicKey; + Assert.Same(publicKey, publicKey2); + } + } + + [Theory] + [InlineData("SHA256")] + [InlineData("SHA384")] + [InlineData("SHA512")] + public static void SignatureAlgorithm_StableNotSame(string hashAlgorithmName) + { + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp256r1Data.KeyParameters)) + { + HashAlgorithmName hashAlgorithm = new HashAlgorithmName(hashAlgorithmName); + var generator = X509SignatureGenerator.CreateForECDsa(ecdsa); + + byte[] sigAlg = generator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + byte[] sigAlg2 = generator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + + Assert.NotSame(sigAlg, sigAlg2); + Assert.Equal(sigAlg, sigAlg2); + } + } + + [Theory] + [InlineData("MD5")] + [InlineData("SHA1")] + [InlineData("Potato")] + public static void SignatureAlgorithm_NotSupported(string hashAlgorithmName) + { + using (ECDsa ecdsa = ECDsa.Create(EccTestData.Secp256r1Data.KeyParameters)) + { + HashAlgorithmName hashAlgorithm = new HashAlgorithmName(hashAlgorithmName); + var generator = X509SignatureGenerator.CreateForECDsa(ecdsa); + + Assert.Throws( + "hashAlgorithm", + () => generator.GetSignatureAlgorithmIdentifier(hashAlgorithm)); + } + } + + [Theory] + [InlineData("SHA256")] + [InlineData("SHA384")] + [InlineData("SHA512")] + public static void SignatureAlgorithm_Encoding(string hashAlgorithmName) + { + string expectedAlgOid; + + switch (hashAlgorithmName) + { + case "SHA1": + expectedAlgOid = "06072A8648CE3D0401"; + break; + case "SHA256": + expectedAlgOid = "06082A8648CE3D040302"; + break; + case "SHA384": + expectedAlgOid = "06082A8648CE3D040303"; + break; + case "SHA512": + expectedAlgOid = "06082A8648CE3D040304"; + break; + default: + throw new ArgumentOutOfRangeException(nameof(hashAlgorithmName)); + } + + EccTestData testData = EccTestData.Secp521r1Data; + + string expectedHex = $"30{(expectedAlgOid.Length / 2):X2}{expectedAlgOid}"; + + using (ECDsa ecdsa = ECDsa.Create(testData.KeyParameters)) + { + var generator = X509SignatureGenerator.CreateForECDsa(ecdsa); + byte[] sigAlg = generator.GetSignatureAlgorithmIdentifier(new HashAlgorithmName(hashAlgorithmName)); + + Assert.Equal(expectedHex, sigAlg.ByteArrayToHex()); + } + } + + public static IEnumerable GetApplicableTestData() + { + return EccTestData.EnumerateApplicableTests().Select(x => new object[] { x }); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/EccTestData.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/EccTestData.cs new file mode 100644 index 000000000000..de9e08c96ca7 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/EccTestData.cs @@ -0,0 +1,207 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using Test.Cryptography; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public class EccTestData + { + internal static bool SupportsBrainpoolCurves { get; } = TestBrainpoolSupport(); + internal const string Secp256r1OidValue = "1.2.840.10045.3.1.7"; + internal const string Secp256r1OidHexValue = "06082A8648CE3D030107"; + internal const string Secp384r1OidValue = "1.3.132.0.34"; + internal const string Secp384r1OidHexValue = "06052B81040022"; + internal const string Secp521r1OidValue = "1.3.132.0.35"; + internal const string Secp521r1OidHexValue = "06052B81040023"; + internal const string BrainpoolP256r1OidValue = "1.3.36.3.3.2.8.1.1.7"; + internal const string BrainpoolP256r1OidHexValue = "06092B2403030208010107"; + internal const string BrainpoolP256t1OidValue = "1.3.36.3.3.2.8.1.1.8"; + internal const string BrainpoolP256t1OidHexValue = "06092B2403030208010108"; + + internal ECParameters KeyParameters { get; private set; } + internal string CurveOid { get; private set; } + internal string CurveEncodedOidHex { get; private set; } + internal string Name { get; private set; } + + internal static IEnumerable EnumerateApplicableTests() + { + yield return Secp256r1Data; + yield return Secp384r1Data; + yield return Secp521r1Data; + + if (SupportsBrainpoolCurves) + { + yield return BrainpoolP256r1Data; + yield return BrainpoolP256t1Data; + } + } + + internal static readonly EccTestData Secp256r1Data = new EccTestData + { + Name = nameof(Secp256r1Data), + CurveOid = Secp256r1OidValue, + CurveEncodedOidHex = Secp256r1OidHexValue, + + // Suite B Implementer’s Guide to FIPS 186-3, + // D.1 Example ECDSA Signature for P-256 + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.nistP256, + + Q = new ECPoint + { + X = "8101ECE47464A6EAD70CF69A6E2BD3D88691A3262D22CBA4F7635EAFF26680A8".HexToByteArray(), + Y = "D8A12BA61D599235F67D9CB4D58F1783D3CA43E78F0A5ABAA624079936C0C3A9".HexToByteArray(), + }, + + D = "70A12C2DB16845ED56FF68CFC21A472B3F04D7D6851BF6349F2D7D5B3452B38A".HexToByteArray(), + }, + }; + + internal static readonly EccTestData Secp384r1Data = new EccTestData + { + Name = nameof(Secp384r1Data), + CurveOid = Secp384r1OidValue, + CurveEncodedOidHex = Secp384r1OidHexValue, + + // Suite B Implementer’s Guide to FIPS 186-3, + // D.2 Example ECDSA Signature for P-384 + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.nistP384, + + Q = new ECPoint + { + X = ( + "1FBAC8EEBD0CBF35640B39EFE0808DD774DEBFF20A2A329E" + + "91713BAF7D7F3C3E81546D883730BEE7E48678F857B02CA0").HexToByteArray(), + Y = ( + "EB213103BD68CE343365A8A4C3D4555FA385F5330203BDD7" + + "6FFAD1F3AFFB95751C132007E1B240353CB0A4CF1693BDF9").HexToByteArray(), + }, + + D = ( + "C838B85253EF8DC7394FA5808A5183981C7DEEF5A69BA8F4" + + "F2117FFEA39CFCD90E95F6CBC854ABACAB701D50C1F3CF24").HexToByteArray(), + } + }; + + internal static readonly EccTestData Secp521r1Data = new EccTestData + { + Name = nameof(Secp521r1Data), + CurveOid = Secp521r1OidValue, + CurveEncodedOidHex = Secp521r1OidHexValue, + + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.nistP521, + + Q = new ECPoint + { + X = ( + "0045A14653054227E6E539A189364397535652EE822C1135E9F9F4D34D7EA795A3" + + "B545CCD30312AC34E709042596BB049AB05BEE6C06F1E02BB9CC62A771EEFD8DAA").HexToByteArray(), + + Y = ( + "00AE3CEEBFF58625C0DD7A878B5CB883F95CE40DAE62C082418EBB96B59DC76366" + + "96ADC04B0201721F9D842C32588909B61F7E2236200E3EB29233A322E661A2EA05").HexToByteArray(), + }, + + D = ( + "01CD352B44ED263B4BE0D8CDCB78B2CF9283FA8C74D27CA7629E600F0A15514278" + + "5769022DEEA3FDFC5C9830E546D7321A1080E574473A81D6DAF45E1D437926E9AF").HexToByteArray(), + } + }; + + internal static readonly EccTestData Secp521r1_DiminishedPublic_Data = new EccTestData + { + Name = nameof(Secp521r1Data), + CurveOid = Secp521r1OidValue, + CurveEncodedOidHex = Secp521r1OidHexValue, + + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.nistP521, + + Q = new ECPoint + { + X = ( + "00D27056ECECBF471448D9590845953B2B7CB4BA4D5F6B2DB6A28A37C1B0FEFFF4" + + "C45E9A0BE7D372C75E16A60BBF30942C4E2085DA53E03BDF282B652CE17477E52C").HexToByteArray(), + + Y = ( + "0053E0828044670D349F10D3673A1F50A19A24E2B5D7154339A2F77FB31F91A5CA" + + "FE2C13349B3680855D8CA303DA540D5C78C8FDD7DF08963B9C855BB6B199730A32").HexToByteArray(), + }, + + D = ( + "01E262CBEA07EF60695D05D79257B6A57A175AB4243CEC99C60AD7BC5058666AB4" + + "C9DCF18443DCDEFDA5E08A7158D404BF328C7CECCD447F064FC5D681400509BCD8").HexToByteArray(), + } + }; + + internal static readonly EccTestData BrainpoolP256r1Data = new EccTestData + { + Name = nameof(BrainpoolP256r1Data), + CurveOid = BrainpoolP256r1OidValue, + CurveEncodedOidHex = BrainpoolP256r1OidHexValue, + + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.brainpoolP256r1, + + Q = new ECPoint + { + X = "419A7BB2B7CEBDD62A6BD3483FDE3985BFC2F3E0CD2AF362B430BC4A737BAC38".HexToByteArray(), + Y = "631730AF824E760DA912EB012893BE5692A7F3BFDD156CB9F7313DE2ECA3C184".HexToByteArray(), + }, + + D = "67DE7D6322530549BEC961149582C2EA9532B3641D273F13CD881D0D735EA531".HexToByteArray(), + }, + }; + + internal static readonly EccTestData BrainpoolP256t1Data = new EccTestData + { + Name = nameof(BrainpoolP256t1Data), + CurveOid = BrainpoolP256t1OidValue, + CurveEncodedOidHex = BrainpoolP256t1OidHexValue, + + KeyParameters = new ECParameters + { + Curve = ECCurve.NamedCurves.brainpoolP256t1, + + Q = new ECPoint + { + X = "9A34B1EF0077DBCECC2034A101229B5D1B8DDF191D8064B4662C452414B508C1".HexToByteArray(), + Y = "96BA5E99FDF30EC25F3DA1A1F572C07D8810F63F7B8E8740ED666426C2E70836".HexToByteArray(), + }, + + D = "6FA384038FFCA28C21F9A491B99EC07DD021B241E6696C4F96BC5EB922B1D806".HexToByteArray(), + }, + }; + + public override string ToString() + { + return Name; + } + + private static bool TestBrainpoolSupport() + { + try + { + using (ECDsa ecdsa = ECDsa.Create(ECCurve.NamedCurves.brainpoolP256r1)) + { + } + + return true; + } + catch + { + return false; + } + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/PrivateKeyAssociationTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/PrivateKeyAssociationTests.cs new file mode 100644 index 000000000000..be4591692e56 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/PrivateKeyAssociationTests.cs @@ -0,0 +1,554 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class PrivateKeyAssociationTests + { + private const int PROV_RSA_FULL = 1; + private const int PROV_DSS = 3; + private const int PROV_DSS_DH = 13; + private const int PROV_RSA_SCHANNEL = 12; + private const int PROV_RSA_AES = 24; + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData(PROV_RSA_FULL, KeyNumber.Signature)] + [InlineData(PROV_RSA_FULL, KeyNumber.Exchange)] + // No PROV_RSA_SIG, creation does not succeed with that prov type, MSDN says it is not supported. + [InlineData(PROV_RSA_SCHANNEL, KeyNumber.Exchange)] + [InlineData(PROV_RSA_AES, KeyNumber.Signature)] + [InlineData(PROV_RSA_AES, KeyNumber.Exchange)] + public static void AssociatePersistedKey_CAPI_RSA(int provType, KeyNumber keyNumber) + { + const string KeyName = nameof(AssociatePersistedKey_CAPI_RSA); + + CspParameters cspParameters = new CspParameters(provType) + { + KeyNumber = (int)keyNumber, + KeyContainerName = KeyName, + Flags = CspProviderFlags.UseNonExportableKey, + }; + + using (RSACryptoServiceProvider rsaCsp = new RSACryptoServiceProvider(cspParameters)) + { + rsaCsp.PersistKeyInCsp = false; + + // Use SHA-1 because the FULL and SCHANNEL providers can't handle SHA-2. + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA1; + var generator = new RSASha1Pkcs1SignatureGenerator(rsaCsp); + byte[] signature; + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}-{provType}-{keyNumber}"), + generator.PublicKey, + hashAlgorithm); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, generator, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 withPrivateKey = cert.CopyWithPrivateKey(rsaCsp)) + using (RSA rsa = withPrivateKey.GetRSAPrivateKey()) + { + signature = rsa.SignData(Array.Empty(), hashAlgorithm, RSASignaturePadding.Pkcs1); + + Assert.True( + rsaCsp.VerifyData(Array.Empty(), signature, hashAlgorithm, RSASignaturePadding.Pkcs1)); + } + + // Some certs have disposed, did they delete the key? + cspParameters.Flags = CspProviderFlags.UseExistingKey; + + using (RSACryptoServiceProvider stillPersistedKey = new RSACryptoServiceProvider(cspParameters)) + { + byte[] signature2 = stillPersistedKey.SignData( + Array.Empty(), + hashAlgorithm, + RSASignaturePadding.Pkcs1); + + Assert.Equal(signature, signature2); + } + } + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData(PROV_RSA_FULL, KeyNumber.Signature)] + [InlineData(PROV_RSA_FULL, KeyNumber.Exchange)] + // No PROV_RSA_SIG, creation does not succeed with that prov type, MSDN says it is not supported. + [InlineData(PROV_RSA_SCHANNEL, KeyNumber.Exchange)] + [InlineData(PROV_RSA_AES, KeyNumber.Signature)] + [InlineData(PROV_RSA_AES, KeyNumber.Exchange)] + public static void AssociatePersistedKey_CAPIviaCNG_RSA(int provType, KeyNumber keyNumber) + { + const string KeyName = nameof(AssociatePersistedKey_CAPIviaCNG_RSA); + + CspParameters cspParameters = new CspParameters(provType) + { + KeyNumber = (int)keyNumber, + KeyContainerName = KeyName, + Flags = CspProviderFlags.UseNonExportableKey, + }; + + using (RSACryptoServiceProvider rsaCsp = new RSACryptoServiceProvider(cspParameters)) + { + rsaCsp.PersistKeyInCsp = false; + + // Use SHA-1 because the FULL and SCHANNEL providers can't handle SHA-2. + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA1; + var generator = new RSASha1Pkcs1SignatureGenerator(rsaCsp); + byte[] signature; + + CertificateRequest request = new CertificateRequest( + $"CN={KeyName}-{provType}-{keyNumber}", + rsaCsp, + hashAlgorithm); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, generator, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 withPrivateKey = cert.CopyWithPrivateKey(rsaCsp)) + using (RSA rsa = withPrivateKey.GetRSAPrivateKey()) + { + // `rsa` will be an RSACng wrapping the CAPI key, which means it does not expose the + // KeyNumber from CAPI. + Assert.IsAssignableFrom(rsa); + + request = new CertificateRequest( + $"CN={KeyName}-{provType}-{keyNumber}-again", + rsa, + hashAlgorithm); + + X509Certificate2 cert2 = request.Create( + request.SubjectName, + generator, + now, + now.AddDays(1), + new byte[1]); + + using (cert2) + using (X509Certificate2 withPrivateKey2 = cert2.CopyWithPrivateKey(rsaCsp)) + using (RSA rsa2 = withPrivateKey2.GetRSAPrivateKey()) + { + signature = rsa2.SignData( + Array.Empty(), + hashAlgorithm, + RSASignaturePadding.Pkcs1); + + Assert.True( + rsaCsp.VerifyData( + Array.Empty(), + signature, + hashAlgorithm, + RSASignaturePadding.Pkcs1)); + } + } + + // Some certs have disposed, did they delete the key? + cspParameters.Flags = CspProviderFlags.UseExistingKey; + + using (RSACryptoServiceProvider stillPersistedKey = new RSACryptoServiceProvider(cspParameters)) + { + byte[] signature2 = stillPersistedKey.SignData( + Array.Empty(), + hashAlgorithm, + RSASignaturePadding.Pkcs1); + + Assert.Equal(signature, signature2); + } + } + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] + public static void AssociatePersistedKey_CNG_RSA() + { + const string KeyName = nameof(AssociatePersistedKey_CNG_RSA); + + CngKey cngKey = null; + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; + byte[] signature; + + try + { + CngKeyCreationParameters creationParameters = new CngKeyCreationParameters() + { + ExportPolicy = CngExportPolicies.None, + Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider, + KeyCreationOptions = CngKeyCreationOptions.OverwriteExistingKey, + }; + + cngKey = CngKey.Create(CngAlgorithm.Rsa, KeyName, creationParameters); + + using (RSACng rsaCng = new RSACng(cngKey)) + { + CertificateRequest request = new CertificateRequest( + $"CN={KeyName}", + rsaCng, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) + using (RSA rsa = cert.GetRSAPrivateKey()) + { + signature = rsa.SignData(Array.Empty(), hashAlgorithm, RSASignaturePadding.Pkcs1); + + Assert.True( + rsaCng.VerifyData(Array.Empty(), signature, hashAlgorithm, RSASignaturePadding.Pkcs1)); + } + } + + // Some certs have disposed, did they delete the key? + using (CngKey stillPersistedKey = CngKey.Open(KeyName, CngProvider.MicrosoftSoftwareKeyStorageProvider)) + using (RSACng rsaCng = new RSACng(stillPersistedKey)) + { + byte[] signature2 = rsaCng.SignData(Array.Empty(), hashAlgorithm, RSASignaturePadding.Pkcs1); + + Assert.Equal(signature, signature2); + } + } + finally + { + cngKey?.Delete(); + } + } + + [Fact] + public static void ThirdPartyProvider_RSA() + { + using (RSA rsaOther = new RSAOther()) + { + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; + + CertificateRequest request = new CertificateRequest( + $"CN={nameof(ThirdPartyProvider_RSA)}", + rsaOther, + hashAlgorithm); + + byte[] signature; + byte[] data = request.SubjectName.RawData; + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) + using (RSA rsa = cert.GetRSAPrivateKey()) + { + signature = rsa.SignData(data, hashAlgorithm, RSASignaturePadding.Pkcs1); + } + + Assert.True(rsaOther.VerifyData(data, signature, hashAlgorithm, RSASignaturePadding.Pkcs1)); + } + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData(PROV_DSS)] + [InlineData(PROV_DSS_DH)] + public static void AssociatePersistedKey_CAPI_DSA(int provType) + { + const string KeyName = nameof(AssociatePersistedKey_CAPI_DSA); + + CspParameters cspParameters = new CspParameters(provType) + { + KeyContainerName = KeyName, + Flags = CspProviderFlags.UseNonExportableKey, + }; + + using (DSACryptoServiceProvider dsaCsp = new DSACryptoServiceProvider(cspParameters)) + { + dsaCsp.PersistKeyInCsp = false; + + X509SignatureGenerator dsaGen = new DSAX509SignatureGenerator(dsaCsp); + + // Use SHA-1 because that's all DSACryptoServiceProvider understands. + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA1; + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}-{provType}"), + dsaGen.PublicKey, + hashAlgorithm); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, dsaGen, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 certWithPrivateKey = cert.CopyWithPrivateKey(dsaCsp)) + using (DSA dsa = certWithPrivateKey.GetDSAPrivateKey()) + { + byte[] signature = dsa.SignData(Array.Empty(), hashAlgorithm); + + Assert.True(dsaCsp.VerifyData(Array.Empty(), signature, hashAlgorithm)); + } + + // Some certs have disposed, did they delete the key? + cspParameters.Flags = CspProviderFlags.UseExistingKey; + + using (var stillPersistedKey = new DSACryptoServiceProvider(cspParameters)) + { + stillPersistedKey.SignData(Array.Empty(), hashAlgorithm); + } + } + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData(PROV_DSS)] + [InlineData(PROV_DSS_DH)] + public static void AssociatePersistedKey_CAPIviaCNG_DSA(int provType) + { + const string KeyName = nameof(AssociatePersistedKey_CAPIviaCNG_DSA); + + CspParameters cspParameters = new CspParameters(provType) + { + KeyContainerName = KeyName, + Flags = CspProviderFlags.UseNonExportableKey, + }; + + using (DSACryptoServiceProvider dsaCsp = new DSACryptoServiceProvider(cspParameters)) + { + dsaCsp.PersistKeyInCsp = false; + + X509SignatureGenerator dsaGen = new DSAX509SignatureGenerator(dsaCsp); + + // Use SHA-1 because that's all DSACryptoServiceProvider understands. + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA1; + byte[] signature; + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}-{provType}"), + dsaGen.PublicKey, + hashAlgorithm); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, dsaGen, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 certWithPrivateKey = cert.CopyWithPrivateKey(dsaCsp)) + using (DSA dsa = certWithPrivateKey.GetDSAPrivateKey()) + { + // `dsa` will be an DSACng wrapping the CAPI key + Assert.IsAssignableFrom(dsa); + + request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}-{provType}-again"), + dsaGen.PublicKey, + hashAlgorithm); + + using (X509Certificate2 cert2 = request.Create(request.SubjectName, dsaGen, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 cert2WithPrivateKey = cert2.CopyWithPrivateKey(dsa)) + using (DSA dsa2 = cert2WithPrivateKey.GetDSAPrivateKey()) + { + signature = dsa2.SignData(Array.Empty(), hashAlgorithm); + + Assert.True(dsaCsp.VerifyData(Array.Empty(), signature, hashAlgorithm)); + } + } + + // Some certs have disposed, did they delete the key? + cspParameters.Flags = CspProviderFlags.UseExistingKey; + + using (var stillPersistedKey = new DSACryptoServiceProvider(cspParameters)) + { + stillPersistedKey.SignData(Array.Empty(), hashAlgorithm); + } + } + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] + public static void AssociatePersistedKey_CNG_DSA() + { + const string KeyName = nameof(AssociatePersistedKey_CNG_DSA); + + CngKey cngKey = null; + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; + byte[] signature; + + try + { + CngKeyCreationParameters creationParameters = new CngKeyCreationParameters() + { + ExportPolicy = CngExportPolicies.None, + Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider, + KeyCreationOptions = CngKeyCreationOptions.OverwriteExistingKey, + Parameters = + { + new CngProperty("Length", BitConverter.GetBytes(1024), CngPropertyOptions.None), + } + }; + + cngKey = CngKey.Create(new CngAlgorithm("DSA"), KeyName, creationParameters); + + using (DSACng dsaCng = new DSACng(cngKey)) + { + X509SignatureGenerator dsaGen = new DSAX509SignatureGenerator(dsaCng); + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}"), + dsaGen.PublicKey, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, dsaGen, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 certWithPrivateKey = cert.CopyWithPrivateKey(dsaCng)) + using (DSA dsa = certWithPrivateKey.GetDSAPrivateKey()) + { + signature = dsa.SignData(Array.Empty(), hashAlgorithm); + + Assert.True(dsaCng.VerifyData(Array.Empty(), signature, hashAlgorithm)); + } + } + + // Some certs have disposed, did they delete the key? + using (CngKey stillPersistedKey = CngKey.Open(KeyName, CngProvider.MicrosoftSoftwareKeyStorageProvider)) + using (DSACng dsaCng = new DSACng(stillPersistedKey)) + { + dsaCng.SignData(Array.Empty(), hashAlgorithm); + } + } + finally + { + cngKey?.Delete(); + } + } + + [Fact] + public static void ThirdPartyProvider_DSA() + { + using (DSA dsaOther = new DSAOther()) + { + dsaOther.ImportParameters(TestData.GetDSA1024Params()); + + X509SignatureGenerator dsaGen = new DSAX509SignatureGenerator(dsaOther); + + // macOS DSA is limited to FIPS 186-3. + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA1; + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={nameof(ThirdPartyProvider_DSA)}"), + dsaGen.PublicKey, + hashAlgorithm); + + byte[] signature; + byte[] data = request.SubjectName.RawData; + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.Create(request.SubjectName, dsaGen, now, now.AddDays(1), new byte[1])) + using (X509Certificate2 certWithPrivateKey = cert.CopyWithPrivateKey(dsaOther)) + using (DSA dsa = certWithPrivateKey.GetDSAPrivateKey()) + { + signature = dsa.SignData(data, hashAlgorithm); + } + + Assert.True(dsaOther.VerifyData(data, signature, hashAlgorithm)); + } + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] + public static void AssociatePersistedKey_CNG_ECDsa() + { + const string KeyName = nameof(AssociatePersistedKey_CNG_ECDsa); + + CngKey cngKey = null; + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; + byte[] signature; + + try + { + CngKeyCreationParameters creationParameters = new CngKeyCreationParameters() + { + ExportPolicy = CngExportPolicies.None, + Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider, + KeyCreationOptions = CngKeyCreationOptions.OverwriteExistingKey, + }; + + cngKey = CngKey.Create(CngAlgorithm.ECDsaP384, KeyName, creationParameters); + + using (ECDsaCng ecdsaCng = new ECDsaCng(cngKey)) + { + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={KeyName}"), + ecdsaCng, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) + using (ECDsa ecdsa = cert.GetECDsaPrivateKey()) + { + signature = ecdsa.SignData(Array.Empty(), hashAlgorithm); + + Assert.True(ecdsaCng.VerifyData(Array.Empty(), signature, hashAlgorithm)); + } + } + + // Some certs have disposed, did they delete the key? + using (CngKey stillPersistedKey = CngKey.Open(KeyName, CngProvider.MicrosoftSoftwareKeyStorageProvider)) + using (ECDsaCng ecdsaCng = new ECDsaCng(stillPersistedKey)) + { + ecdsaCng.SignData(Array.Empty(), hashAlgorithm); + } + } + finally + { + cngKey?.Delete(); + } + } + + [Fact] + public static void ThirdPartyProvider_ECDsa() + { + using (ECDsaOther ecdsaOther = new ECDsaOther()) + { + HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName($"CN={nameof(ThirdPartyProvider_ECDsa)}"), + ecdsaOther, + hashAlgorithm); + + byte[] signature; + byte[] data = request.SubjectName.RawData; + + DateTimeOffset now = DateTimeOffset.UtcNow; + + using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) + using (ECDsa ecdsa = cert.GetECDsaPrivateKey()) + { + signature = ecdsa.SignData(data, hashAlgorithm); + } + + Assert.True(ecdsaOther.VerifyData(data, signature, hashAlgorithm)); + } + } + + private sealed class RSASha1Pkcs1SignatureGenerator : X509SignatureGenerator + { + private readonly X509SignatureGenerator _realRsaGenerator; + + internal RSASha1Pkcs1SignatureGenerator(RSA rsa) + { + _realRsaGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + } + + protected override PublicKey BuildPublicKey() => _realRsaGenerator.PublicKey; + + public override byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm) + { + if (hashAlgorithm == HashAlgorithmName.SHA1) + return "300D06092A864886F70D0101050500".HexToByteArray(); + + throw new InvalidOperationException(); + } + + public override byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) => + _realRsaGenerator.SignData(data, hashAlgorithm); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/RSAPkcs1X509SignatureGeneratorTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/RSAPkcs1X509SignatureGeneratorTests.cs new file mode 100644 index 000000000000..5fe946fa0dfd --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/RSAPkcs1X509SignatureGeneratorTests.cs @@ -0,0 +1,147 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class RSAPkcs1X509SignatureGeneratorTests + { + [Fact] + public static void RsaPkcsSignatureGeneratorCtor_Exceptions() + { + Assert.Throws( + "key", + () => X509SignatureGenerator.CreateForRSA(null, RSASignaturePadding.Pkcs1)); + } + + [Fact] + public static void PublicKeyEncoding() + { + using (RSA rsa = RSA.Create()) + { + rsa.ImportParameters(TestData.RsaBigExponentParams); + + X509SignatureGenerator signatureGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + PublicKey publicKey = signatureGenerator.PublicKey; + + // Irrespective of what the current key thinks, the PublicKey value we encode for RSA will always write + // DER-NULL parameters, by the guidance of RFC 3447: + // + // The object identifier rsaEncryption identifies RSA public and private + // keys as defined in Appendices A.1.1 and A.1.2. The parameters field + // associated with this OID in a value of type AlgorithmIdentifier shall + // have a value of type NULL. + Assert.Equal(new byte[] { 5, 0 }, publicKey.EncodedParameters.RawData); + + string expectedKeyHex = + // SEQUENCE + "3082010C" + + // INTEGER (modulus) + "0282010100" + TestData.RsaBigExponentParams.Modulus.ByteArrayToHex() + + // INTEGER (exponent) + "0205" + TestData.RsaBigExponentParams.Exponent.ByteArrayToHex(); + + Assert.Equal(expectedKeyHex, publicKey.EncodedKeyValue.RawData.ByteArrayToHex()); + + const string rsaEncryptionOid = "1.2.840.113549.1.1.1"; + Assert.Equal(rsaEncryptionOid, publicKey.Oid.Value); + Assert.Equal(rsaEncryptionOid, publicKey.EncodedParameters.Oid.Value); + Assert.Equal(rsaEncryptionOid, publicKey.EncodedKeyValue.Oid.Value); + + PublicKey publicKey2 = signatureGenerator.PublicKey; + Assert.Same(publicKey, publicKey2); + } + } + + [Theory] + [InlineData("SHA256")] + [InlineData("SHA384")] + [InlineData("SHA512")] + public static void SignatureAlgorithm_StableNotSame(string hashAlgorithmName) + { + using (RSA rsa = RSA.Create()) + { + RSAParameters parameters = TestData.RsaBigExponentParams; + rsa.ImportParameters(parameters); + + var signatureGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + + HashAlgorithmName hashAlgorithm = new HashAlgorithmName(hashAlgorithmName); + + byte[] sigAlg = signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + byte[] sigAlg2 = signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + + Assert.NotSame(sigAlg, sigAlg2); + Assert.Equal(sigAlg, sigAlg2); + } + } + + [Theory] + [InlineData("MD5")] + [InlineData("SHA1")] + [InlineData("Potato")] + public static void SignatureAlgorithm_NotSupported(string hashAlgorithmName) + { + using (RSA rsa = RSA.Create()) + { + RSAParameters parameters = TestData.RsaBigExponentParams; + rsa.ImportParameters(parameters); + + var signatureGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + + HashAlgorithmName hashAlgorithm = new HashAlgorithmName(hashAlgorithmName); + + Assert.Throws( + "hashAlgorithm", + () => signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm)); + } + } + + [Theory] + [InlineData("SHA256")] + [InlineData("SHA384")] + [InlineData("SHA512")] + public static void SignatureAlgorithm_Encoding(string hashAlgorithmName) + { + string expectedOid; + + switch (hashAlgorithmName) + { + case "MD5": + expectedOid = "06092A864886F70D010104"; + break; + case "SHA1": + expectedOid = "06092A864886F70D010105"; + break; + case "SHA256": + expectedOid = "06092A864886F70D01010B"; + break; + case "SHA384": + expectedOid = "06092A864886F70D01010C"; + break; + case "SHA512": + expectedOid = "06092A864886F70D01010D"; + break; + default: + throw new ArgumentOutOfRangeException(nameof(hashAlgorithmName)); + } + + string expectedHex = $"30{(expectedOid.Length / 2 + 2):X2}{expectedOid}0500"; + + using (RSA rsa = RSA.Create()) + { + RSAParameters parameters = TestData.RsaBigExponentParams; + rsa.ImportParameters(parameters); + + HashAlgorithmName hashAlgorithm = new HashAlgorithmName(hashAlgorithmName); + X509SignatureGenerator signatureGenerator = X509SignatureGenerator.CreateForRSA(rsa, RSASignaturePadding.Pkcs1); + byte[] sigAlg = signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + + Assert.Equal(expectedHex, sigAlg.ByteArrayToHex()); + } + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/SubjectAltNameBuilderTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/SubjectAltNameBuilderTests.cs new file mode 100644 index 000000000000..48583eb546b4 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/SubjectAltNameBuilderTests.cs @@ -0,0 +1,266 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Net; +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests.CertificateCreation +{ + public static class SubjectAlternativeNameBuilderTests + { + private const string SubjectAltNameOid = "2.5.29.17"; + + [Fact] + public static void ArgumentValidation() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + Assert.Throws("dnsName", () => builder.AddDnsName(null)); + Assert.Throws("dnsName", () => builder.AddDnsName(string.Empty)); + Assert.Throws("emailAddress", () => builder.AddEmailAddress(null)); + Assert.Throws("emailAddress", () => builder.AddEmailAddress(string.Empty)); + Assert.Throws("uri", () => builder.AddUri(null)); + Assert.Throws("ipAddress", () => builder.AddIpAddress(null)); + Assert.Throws("upn", () => builder.AddUserPrincipalName(null)); + Assert.Throws("upn", () => builder.AddUserPrincipalName(string.Empty)); + } + + [Fact] + public static void SingleValue_DnsName_Ascii() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + builder.AddDnsName("www.example.org"); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal("3011820F7777772E6578616D706C652E6F7267", extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_DnsName_Unicode() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + // [nihongo].example.org + builder.AddDnsName("\u65E5\u672C\u8A8E.example.org"); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal( + "301C821A786E2D2D7767763731616F3039652E6578616D706C652E6F7267", + extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_EmailAddress_Ascii() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + builder.AddEmailAddress("user@example.org"); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal("3012811075736572406578616D706C652E6F7267", extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_EmailAddress_Unicode() + { + // There's not a good example of what an IDNA-converted email address + // looks like, so this isn't easy to verify. For now let it be restricted to IA5. + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + // [nihongo]@[nihongo].example.org + Assert.Throws( + () => builder.AddEmailAddress("\u65E5\u672C\u8A8E@\u65E5\u672C\u8A8E.example.org")); + } + + [Fact] + public static void SingleValue_IPAddress_v4() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddIpAddress(IPAddress.Loopback); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal("300687047F000001", extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_IPAddress_v6() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddIpAddress(IPAddress.IPv6Loopback); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal("3012871000000000000000000000000000000001", extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_Uri_Ascii() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddUri(new Uri("http://www.example.org/")); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal( + "30198617687474703A2F2F7777772E6578616D706C652E6F72672F", + extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_Uri_UnicodeHost() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + Assert.Throws( + () => builder.AddUri(new Uri("http://\u65E5\u672C\u8A8E.example.org/"))); + } + + [Fact] + public static void SingleValue_Uri_UnicodePath() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddUri(new Uri("http://www.example.org/\u65E5\u672C\u8A8E")); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + const string expectedHex = + "30348632687474703A2F2F7777772E6578616D706C652E6F72672F2545362539" + + "37254135254536253943254143254538254141253845"; + + Assert.Equal( + expectedHex, + extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void SingleValue_Upn() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddUserPrincipalName("user@example.org"); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal( + "3022A020060A2B060104018237140203A0120C1075736572406578616D706C652E6F7267", + extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void MultiValue() + { + // This produces the same value as the "ComplexGetNameInfo" certificate/test suite. + // Subject Alternative Names: + // DNS Name=dns1.subject.example.org + // DNS Name=dns2.subject.example.org + // RFC822 Name=sanemail1@example.org + // RFC822 Name=sanemail2@example.org + // Other Name: + // Principal Name=subjectupn1@example.org + // Other Name: + // Principal Name=subjectupn2@example.org + // URL=http://uri1.subject.example.org/ + // URL=http://uri2.subject.example.org/ + + const string expectedHex = + "3081F88218646E73312E7375626A6563742E6578616D706C652E6F7267821864" + + "6E73322E7375626A6563742E6578616D706C652E6F7267811573616E656D6169" + + "6C31406578616D706C652E6F7267811573616E656D61696C32406578616D706C" + + "652E6F7267A027060A2B060104018237140203A0190C177375626A6563747570" + + "6E31406578616D706C652E6F7267A027060A2B060104018237140203A0190C17" + + "7375626A65637475706E32406578616D706C652E6F72678620687474703A2F2F" + + "757269312E7375626A6563742E6578616D706C652E6F72672F8620687474703A" + + "2F2F757269322E7375626A6563742E6578616D706C652E6F72672F"; + + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + builder.AddDnsName("dns1.subject.example.org"); + builder.AddDnsName("dns2.subject.example.org"); + builder.AddEmailAddress("sanemail1@example.org"); + builder.AddEmailAddress("sanemail2@example.org"); + builder.AddUserPrincipalName("subjectupn1@example.org"); + builder.AddUserPrincipalName("subjectupn2@example.org"); + builder.AddUri(new Uri("http://uri1.subject.example.org/")); + builder.AddUri(new Uri("http://uri2.subject.example.org/")); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + Assert.Equal( + expectedHex, + extension.RawData.ByteArrayToHex()); + } + + [Fact] + public static void MultipleBuilds() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddIpAddress(IPAddress.Loopback); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + X509Extension secondExtension = builder.Build(); + + Assert.NotSame(extension, secondExtension); + Assert.Equal(extension.Oid.Value, secondExtension.Oid.Value); + Assert.Equal(extension.Critical, secondExtension.Critical); + Assert.Equal(extension.RawData, secondExtension.RawData); + } + + [Fact] + public static void MultipleBuilds_WithModification() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddIpAddress(IPAddress.Loopback); + + X509Extension extension = builder.Build(); + Assert.Equal(SubjectAltNameOid, extension.Oid.Value); + + builder.AddIpAddress(IPAddress.IPv6Loopback); + X509Extension secondExtension = builder.Build(); + + Assert.NotSame(extension, secondExtension); + Assert.Equal(extension.Oid.Value, secondExtension.Oid.Value); + Assert.Equal(extension.Critical, secondExtension.Critical); + + Assert.True( + secondExtension.RawData.Length > extension.RawData.Length, + $"secondExtension.RawData.Length > extension.RawData.Length"); + } + + [Fact] + public static void CheckCritical() + { + SubjectAlternativeNameBuilder builder = new SubjectAlternativeNameBuilder(); + + builder.AddIpAddress(IPAddress.Loopback); + + X509Extension extension = builder.Build(); + X509Extension secondExtension = builder.Build(false); + X509Extension thirdExtension = builder.Build(true); + + Assert.False(extension.Critical, "extension.Critical"); + Assert.False(secondExtension.Critical, "secondExtension.Critical"); + Assert.True(thirdExtension.Critical, "thirdExtension.Critical"); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/DSAOther.cs b/src/System.Security.Cryptography.X509Certificates/tests/DSAOther.cs new file mode 100644 index 000000000000..58e5ea543ca3 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/DSAOther.cs @@ -0,0 +1,59 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; + +namespace System.Security.Cryptography.X509Certificates.Tests +{ + internal class DSAOther : DSA + { + private readonly DSA _impl; + + internal DSAOther() + { + _impl = DSA.Create(1024); + } + + public override byte[] CreateSignature(byte[] rgbHash) => _impl.CreateSignature(rgbHash); + public override void ImportParameters(DSAParameters parameters) => _impl.ImportParameters(parameters); + + public override DSAParameters ExportParameters(bool includePrivateParameters) => + _impl.ExportParameters(includePrivateParameters); + + public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) => + _impl.VerifySignature(rgbHash, rgbSignature); + + protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) + { + if (hashAlgorithm != HashAlgorithmName.SHA1) + throw new NotSupportedException(); + + using (HashAlgorithm alg = SHA1.Create()) + { + return alg.ComputeHash(data, offset, count); + } + } + + protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) + { + if (hashAlgorithm != HashAlgorithmName.SHA1) + throw new NotSupportedException(); + + using (HashAlgorithm alg = SHA1.Create()) + { + return alg.ComputeHash(data); + } + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + _impl.Dispose(); + } + + base.Dispose(disposing); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/ECDsaOther.cs b/src/System.Security.Cryptography.X509Certificates/tests/ECDsaOther.cs new file mode 100644 index 000000000000..72c080d6ffe8 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/ECDsaOther.cs @@ -0,0 +1,63 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; + +namespace System.Security.Cryptography.X509Certificates.Tests +{ + internal class ECDsaOther : ECDsa + { + private readonly ECDsa _impl; + + internal ECDsaOther() + { + _impl = ECDsa.Create(); + } + + public override KeySizes[] LegalKeySizes => _impl.LegalKeySizes; + + public override void GenerateKey(ECCurve curve) => _impl.GenerateKey(curve); + public override void ImportParameters(ECParameters parameters) => _impl.ImportParameters(parameters); + public override byte[] SignHash(byte[] hash) => _impl.SignHash(hash); + public override bool VerifyHash(byte[] hash, byte[] signature) => _impl.VerifyHash(hash, signature); + + public override ECParameters ExportExplicitParameters(bool includePrivateParameters) => + _impl.ExportExplicitParameters(includePrivateParameters); + + public override ECParameters ExportParameters(bool includePrivateParameters) => + _impl.ExportParameters(includePrivateParameters); + + public override int KeySize + { + get { return _impl.KeySize; } + set { _impl.KeySize = value; } + } + + protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) + { + using (HashAlgorithm alg = RSAOther.GetHashAlgorithm(hashAlgorithm)) + { + return alg.ComputeHash(data, offset, count); + } + } + + protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) + { + using (HashAlgorithm alg = RSAOther.GetHashAlgorithm(hashAlgorithm)) + { + return alg.ComputeHash(data); + } + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + _impl.Dispose(); + } + + base.Dispose(disposing); + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/RSAOther.cs b/src/System.Security.Cryptography.X509Certificates/tests/RSAOther.cs new file mode 100644 index 000000000000..361c84197004 --- /dev/null +++ b/src/System.Security.Cryptography.X509Certificates/tests/RSAOther.cs @@ -0,0 +1,98 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; + +namespace System.Security.Cryptography.X509Certificates.Tests +{ + internal class RSAOther : RSA + { + private readonly RSA _impl; + + internal RSAOther() + { + _impl = RSA.Create(); + } + + public override KeySizes[] LegalKeySizes => _impl.LegalKeySizes; + + public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) => _impl.Decrypt(data, padding); + public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) => _impl.Encrypt(data, padding); + public override RSAParameters ExportParameters(bool includePrivateParameters) => _impl.ExportParameters(includePrivateParameters); + public override void ImportParameters(RSAParameters parameters) => _impl.ImportParameters(parameters); + + public override byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => + _impl.SignData(data, offset, count, hashAlgorithm, padding); + + public override byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => + _impl.SignData(data, hashAlgorithm, padding); + + public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => + _impl.SignHash(hash, hashAlgorithm, padding); + + public override bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => + _impl.VerifyData(data, offset, count, signature, hashAlgorithm, padding); + + public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => + _impl.VerifyHash(hash, signature, hashAlgorithm, padding); + + protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) + { + using (HashAlgorithm alg = GetHashAlgorithm(hashAlgorithm)) + { + return alg.ComputeHash(data, offset, count); + } + } + + protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) + { + using (HashAlgorithm alg = GetHashAlgorithm(hashAlgorithm)) + { + return alg.ComputeHash(data); + } + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + _impl.Dispose(); + } + + base.Dispose(disposing); + } + + internal static HashAlgorithm GetHashAlgorithm(HashAlgorithmName hashAlgorithmName) + { + HashAlgorithm hasher; + + if (hashAlgorithmName == HashAlgorithmName.MD5) + { + hasher = MD5.Create(); + } + else if (hashAlgorithmName == HashAlgorithmName.SHA1) + { + hasher = SHA1.Create(); + } + else if (hashAlgorithmName == HashAlgorithmName.SHA256) + { + hasher = SHA256.Create(); + } + else if (hashAlgorithmName == HashAlgorithmName.SHA384) + { + hasher = SHA384.Create(); + } + else if (hashAlgorithmName == HashAlgorithmName.SHA512) + { + hasher = SHA512.Create(); + } + else + { + throw new NotSupportedException(); + } + + return hasher; + } + } +} diff --git a/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj b/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj index 13a3989ecfa0..fa489afb00a4 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj +++ b/src/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj @@ -14,6 +14,15 @@ + + + + + + + + + @@ -21,6 +30,8 @@ + + @@ -30,6 +41,7 @@ + @@ -76,4 +88,4 @@ - \ No newline at end of file + diff --git a/src/System.Security.Cryptography.X509Certificates/tests/TestData.cs b/src/System.Security.Cryptography.X509Certificates/tests/TestData.cs index 24d457e982be..25b55d437b9d 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/TestData.cs +++ b/src/System.Security.Cryptography.X509Certificates/tests/TestData.cs @@ -1470,5 +1470,107 @@ internal struct ECDsaCngKeyValues public byte[] QY; public byte[] D; } + + internal static readonly RSAParameters RsaBigExponentParams = new RSAParameters + { + Modulus = ( + "AF81C1CBD8203F624A539ED6608175372393A2837D4890E48A19DED369731156" + + "20968D6BE0D3DAA38AA777BE02EE0B6B93B724E8DCC12B632B4FA80BBC925BCE" + + "624F4CA7CC606306B39403E28C932D24DD546FFE4EF6A37F10770B2215EA8CBB" + + "5BF427E8C4D89B79EB338375100C5F83E55DE9B4466DDFBEEE42539AEF33EF18" + + "7B7760C3B1A1B2103C2D8144564A0C1039A09C85CF6B5974EB516FC8D6623C94" + + "AE3A5A0BB3B4C792957D432391566CF3E2A52AFB0C142B9E0681B8972671AF2B" + + "82DD390A39B939CF719568687E4990A63050CA7768DCD6B378842F18FDB1F6D9" + + "FF096BAF7BEB98DCF930D66FCFD503F58D41BFF46212E24E3AFC45EA42BD8847").HexToByteArray(), + + Exponent = new byte[] { 0x02, 0x00, 0x00, 0x04, 0x41 }, + + D = ( + "64AF9BA5262483DA92B53F13439FD0EF13012F879ABC03CB7C06F1209904F352" + + "C1F223519DC48BFAEEBB511B0D955F6167B50E034FEA2ABC590B4EA9FBF0C51F" + + "9FFEA16F7927AE681CBF7358452BCA29D58705E0CAA106013B09A6F5F5911498" + + "D2C4FD6915585488E5F3AD89836C93C8775AFAB4D13C2014266BE8EE6B8AA66C" + + "9E942D493466C8E3A370F8E6378CE95D637E03673670BE4BCACE5FCDADD238D9" + + "F32CA35DE845776AC4BF36118812328C493F91C25A9BD42672D0AFAFDE0AF7E6" + + "19078D48B485EF91933DDCFFB54587B8F512D223C81894E91784982F3C5C6587" + + "1351F4655AB023C4AD99B6B03A96F9046CE124A471E828F05F8DB3BC7CCCF2D1").HexToByteArray(), + + P = ( + "E43A3826A97204AE3CD8649A84DB4BBF0725C4B08F8C43840557A0CD04E313AF" + + "6D0460DDE69CDC508AD043D72514DA7A66BC918CD9624F485644B9DEEAB2BE0E" + + "112956D472CF0FD51F80FD33872D2DCC562A0588B012E8C90CE7D254B94792C6" + + "E7A02B3CCAA150E67A64377ACC49479AD5EB555493B2100CB0410956F7D73BF5").HexToByteArray(), + + Q = ( + "C4DD2D7ADD6CA50740D3973F40C4DEBDBAB51F7F5181ABAE726C32596A3EDD0A" + + "EE44DAADDD8A9B7A864C4FFDAE00C4CB1F10177BA01C0466F812D522610F8C45" + + "43F1C3EF579FA9E13AE8DA1A4A8DAE307861D2CEAC03560279B61B6514989883" + + "FE86C5C7420D312838FC2F70BED59B5229654201882664CEFA38B48A3723E9CB").HexToByteArray(), + + DP = ( + "09ECF151F5CDD2C9E6E52682364FA5B4ED094F622E4031BF46B851358A584DCC" + + "B5328B0BD9B63589183F491593D2A3ACAD14E0AACDA1F181B5C7D93C57ED26E6" + + "2C9FC26AF37E4A0644ECE82A7BA8AED88FF1D8E9C56CC66385CDB244EB3D57D1" + + "7E6AD420B19C9E2BEE18192B816265B74DA55FA3825F922D9D8E835B76BF3071").HexToByteArray(), + + DQ = ( + "89B33B695789174B88368C494639D4D3267224572A40B2FE61910384228E3DBD" + + "11EED9040CD03977E9E0D7FC8BFC4BF4A93283529FF1D96590B18F4EABEF0303" + + "794F293E88DC761B3E23AFECB19F29F8A4D2A9058B714CF3F4D10733F13EA72B" + + "BF1FBEC8D71E106D0CE2115F3AD2DE020325C3879A091C413CD6397F83B3CB89").HexToByteArray(), + + InverseQ = ( + "7C57ED74C9176FBA76C23183202515062C664D4D49FF3E037047A309DA10F159" + + "0CE01B7A1CD1A4326DC75883DFF93110AB065AAED140C9B98176A8810809ADEC" + + "75E86764A0951597EF467FA8FD509181CD2E491E43BE41084E5BE1B562EE76E9" + + "F92C9AB1E5AEAD9D291A6337E4DE85BDE67A0D72B4E55ADCF207F7A5A5225E15").HexToByteArray() + }; + + internal static readonly byte[] BigExponentPkcs10Bytes = ( + "30820311308201F902010030818A310B30090603550406130255533113301106" + + "03550408130A57617368696E67746F6E3110300E060355040713075265646D6F" + + "6E64311E301C060355040A13154D6963726F736F667420436F72706F72617469" + + "6F6E3120301E060355040B13172E4E4554204672616D65776F726B2028436F72" + + "6546582931123010060355040313096C6F63616C686F737430820124300D0609" + + "2A864886F70D010101050003820111003082010C0282010100AF81C1CBD8203F" + + "624A539ED6608175372393A2837D4890E48A19DED36973115620968D6BE0D3DA" + + "A38AA777BE02EE0B6B93B724E8DCC12B632B4FA80BBC925BCE624F4CA7CC6063" + + "06B39403E28C932D24DD546FFE4EF6A37F10770B2215EA8CBB5BF427E8C4D89B" + + "79EB338375100C5F83E55DE9B4466DDFBEEE42539AEF33EF187B7760C3B1A1B2" + + "103C2D8144564A0C1039A09C85CF6B5974EB516FC8D6623C94AE3A5A0BB3B4C7" + + "92957D432391566CF3E2A52AFB0C142B9E0681B8972671AF2B82DD390A39B939" + + "CF719568687E4990A63050CA7768DCD6B378842F18FDB1F6D9FF096BAF7BEB98" + + "DCF930D66FCFD503F58D41BFF46212E24E3AFC45EA42BD884702050200000441" + + "A03F303D06092A864886F70D01090E3130302E302C0603551D11042530238704" + + "7F00000187100000000000000000000000000000000182096C6F63616C686F73" + + "74300D06092A864886F70D01010B050003820101003BCAE7E02D3A828435110C" + + "8A65197FF1A027EC5ACA37EBE29B6E7093A4BDCA9BDA8E244DC05846AA9F186D" + + "2EBBDF6474BB09ECF5A3C11F3A7E56D9D489C3D4AE2DCF5D52ABFCDFED6D4623" + + "AF7C7D2E52A189BC4A0BFC5EB96EC158A96B292DF6E4ADCAE5233A7E1598444E" + + "23F732526B71172266E45706F90EFAB0945A75D446F0A6547C788DD81AD6F4D1" + + "E7FD0E8884083AF52003D9CD38B3A140F2E552CF3FBF0B4C771E5745C6DA6F26" + + "DCFD0FEB87B9FDD2F4724A09DE1FB4C55E439F43C6E37A866BA19494B210D294" + + "699B3C957C6DD22E9B63DBAE3B5AE62919F0EA3DF304C7DD9E0BBA0E7053605F" + + "D066A788426159BB937C58E5A110461DC9364CA7CA").HexToByteArray(); + + internal static DSAParameters GetDSA1024Params() + { + DSAParameters p = new DSAParameters(); + p.G = ( + "6BC366B66355545E098F1FE90E5469B567E09FA79D817F2B367B45DECD4301A59C81D6911F7691D370E15AC692C04BC11872" + + "C171A7FE654E963D7DDA575A9E98CE026FB7D3934A258608134A8EC5ED69A2AEDC89401B67ADDE427F17EDAEB72D7AF45D9A" + + "B1D59E1B13D4EFBD17C764330267DDE352C20E05B80DB3C109FE8B9C").HexToByteArray(); + p.P = ( + "C16D26C74D6C1627799C0918548E553FE58C7881DA484629CAF64311F4B27CFEF6BDB0F21206B0FFC4999A2FED53B43B9EE2" + + "910C68DA2C436A8018F4938F6472369F5647D005BCC96E22590CC15E3CD4EA0D132F5DA5AF6AAA0807B0CC4EF3404AF542F4" + + "546B37BDD6A47E641130837DB99397C845635D7DC36D0537E4A84B31").HexToByteArray(); + p.Q = "D83C0ECB73551E2FE30D51FCF4236C651883ADD7".HexToByteArray(); + p.X = "C02678007779E52E360682214BD47F8FAF42BC2D".HexToByteArray(); + p.Y = ( + "690BB37A9145E05D6E7B47C457898AAEDD72501C9D16E79B1AD75A872CF017AA90BBFB90F1B3B7F5C03C87E46E8725665526" + + "FD34157B26F596A1F0997F59F3E65EFC615A552D5E7569C5FFC4593D5A0299110E71C97E1221A5A03FE9A6935AEDD88EF0B3" + + "B2F79D3A99ED75F7B871E6EAF2680D96D574A5F4C13BACE3B4B44DE1").HexToByteArray(); + return p; + } } } From 21a37a98dd3ca5682416839eef2761efd7ebdc9f Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Tue, 18 Apr 2017 16:08:21 -0500 Subject: [PATCH 171/336] Enable MMF tests building on uapaot (#18410) * Enable MMF tests building on uapaot * Move AssertInheritability into windows only code * Add the new files to the Perf tests as well --- .../MemoryMappedFile.CreateFromFile.Tests.cs | 3 - .../tests/MemoryMappedFilesTestsBase.Unix.cs | 44 ++++++++++++ .../MemoryMappedFilesTestsBase.Windows.cs | 65 +++++++++++++++++ .../tests/MemoryMappedFilesTestsBase.cs | 69 +------------------ .../tests/Performance/Configurations.props | 9 +++ ...MemoryMappedFiles.Performance.Tests.csproj | 4 +- .../System.IO.MemoryMappedFiles.Tests.csproj | 4 +- 7 files changed, 125 insertions(+), 73 deletions(-) create mode 100644 src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs create mode 100644 src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs create mode 100644 src/System.IO.MemoryMappedFiles/tests/Performance/Configurations.props diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs index fb05e687790c..97881fbb1c76 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CreateFromFile.Tests.cs @@ -712,9 +712,6 @@ public void WriteToReadOnlyFile_CopyOnWrite_netfx() WriteToReadOnlyFile(MemoryMappedFileAccess.CopyOnWrite, succeeds: true); } - [DllImport("libc", SetLastError = true)] - private static extern int geteuid(); - /// /// Test to ensure that leaveOpen is appropriately respected, either leaving the FileStream open /// or closing it on disposal. diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs new file mode 100644 index 000000000000..3f0a18fc9690 --- /dev/null +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs @@ -0,0 +1,44 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Xunit; + +namespace System.IO.MemoryMappedFiles.Tests +{ + /// Base class from which all of the memory mapped files test classes derive. + public abstract partial class MemoryMappedFilesTestBase : FileCleanupTestBase + { + /// Gets the system's page size. + protected static Lazy s_pageSize = new Lazy(() => + { + int pageSize; + const int _SC_PAGESIZE_FreeBSD = 47; + const int _SC_PAGESIZE_Linux = 30; + const int _SC_PAGESIZE_NetBSD = 28; + const int _SC_PAGESIZE_OSX = 29; + pageSize = sysconf( + RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? _SC_PAGESIZE_OSX : + RuntimeInformation.IsOSPlatform(OSPlatform.Create("FREEBSD")) ? _SC_PAGESIZE_FreeBSD : + RuntimeInformation.IsOSPlatform(OSPlatform.Create("NETBSD")) ? _SC_PAGESIZE_NetBSD : + _SC_PAGESIZE_Linux); + Assert.InRange(pageSize, 1, Int32.MaxValue); + return pageSize; + }); + + [DllImport("libc", SetLastError = true)] + private static extern int sysconf(int name); + + [DllImport("libc", SetLastError = true)] + protected static extern int geteuid(); + + /// Asserts that the handle's inheritability matches the specified value. + protected static void AssertInheritability(SafeHandle handle, HandleInheritability inheritability) + { + //intentional noop + } + } +} diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs new file mode 100644 index 000000000000..fbe3e51149d4 --- /dev/null +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Xunit; + +namespace System.IO.MemoryMappedFiles.Tests +{ + /// Base class from which all of the memory mapped files test classes derive. + public abstract partial class MemoryMappedFilesTestBase : FileCleanupTestBase + { + /// Gets the system's page size. + protected static Lazy s_pageSize = new Lazy(() => + { + int pageSize; + SYSTEM_INFO info; + GetSystemInfo(out info); + pageSize = (int)info.dwPageSize; + Assert.InRange(pageSize, 1, Int32.MaxValue); + return pageSize; + }); + + [DllImport("kernel32.dll")] + private static extern bool GetHandleInformation(IntPtr hObject, out uint lpdwFlags); + + private const uint HANDLE_FLAG_INHERIT = 0x00000001; + + [DllImport("kernel32.dll")] + private static extern void GetSystemInfo(out SYSTEM_INFO input); + + [StructLayout(LayoutKind.Sequential)] + private struct SYSTEM_INFO + { + internal uint dwOemId; + internal uint dwPageSize; + internal IntPtr lpMinimumApplicationAddress; + internal IntPtr lpMaximumApplicationAddress; + internal IntPtr dwActiveProcessorMask; + internal uint dwNumberOfProcessors; + internal uint dwProcessorType; + internal uint dwAllocationGranularity; + internal short wProcessorLevel; + internal short wProcessorRevision; + } + + protected static int geteuid() + { + throw new PlatformNotSupportedException(); + } + + /// Asserts that the handle's inheritability matches the specified value. + protected static void AssertInheritability(SafeHandle handle, HandleInheritability inheritability) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + uint flags; + Assert.True(GetHandleInformation(handle.DangerousGetHandle(), out flags)); + Assert.Equal(inheritability == HandleInheritability.Inheritable, (flags & HANDLE_FLAG_INHERIT) != 0); + } + } + } +} diff --git a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.cs b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.cs index a015914a02db..34def238d081 100644 --- a/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.cs +++ b/src/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.cs @@ -10,7 +10,7 @@ namespace System.IO.MemoryMappedFiles.Tests { /// Base class from which all of the memory mapped files test classes derive. - public abstract class MemoryMappedFilesTestBase : FileCleanupTestBase + public abstract partial class MemoryMappedFilesTestBase : FileCleanupTestBase { /// Gets whether named maps are supported by the current platform. protected static bool MapNamesSupported { get { return RuntimeInformation.IsOSPlatform(OSPlatform.Windows); } } @@ -284,72 +284,5 @@ protected static bool IsReadable(MemoryMappedFileAccess access) return false; } } - - /// Gets the system's page size. - protected static Lazy s_pageSize = new Lazy(() => - { - int pageSize; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - SYSTEM_INFO info; - GetSystemInfo(out info); - pageSize = (int)info.dwPageSize; - } - else - { - const int _SC_PAGESIZE_FreeBSD = 47; - const int _SC_PAGESIZE_Linux = 30; - const int _SC_PAGESIZE_NetBSD = 28; - const int _SC_PAGESIZE_OSX = 29; - pageSize = sysconf( - RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? _SC_PAGESIZE_OSX : - RuntimeInformation.IsOSPlatform(OSPlatform.Create("FREEBSD")) ? _SC_PAGESIZE_FreeBSD : - RuntimeInformation.IsOSPlatform(OSPlatform.Create("NETBSD")) ? _SC_PAGESIZE_NetBSD : - _SC_PAGESIZE_Linux); - } - Assert.InRange(pageSize, 1, Int32.MaxValue); - return pageSize; - }); - - /// Asserts that the handle's inheritability matches the specified value. - protected static void AssertInheritability(SafeHandle handle, HandleInheritability inheritability) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - uint flags; - Assert.True(GetHandleInformation(handle.DangerousGetHandle(), out flags)); - Assert.Equal(inheritability == HandleInheritability.Inheritable, (flags & HANDLE_FLAG_INHERIT) != 0); - } - } - - #region Windows - [DllImport("kernel32.dll")] - private static extern bool GetHandleInformation(IntPtr hObject, out uint lpdwFlags); - - private const uint HANDLE_FLAG_INHERIT = 0x00000001; - - [DllImport("kernel32.dll")] - private static extern void GetSystemInfo(out SYSTEM_INFO input); - - [StructLayout(LayoutKind.Sequential)] - private struct SYSTEM_INFO - { - internal uint dwOemId; - internal uint dwPageSize; - internal IntPtr lpMinimumApplicationAddress; - internal IntPtr lpMaximumApplicationAddress; - internal IntPtr dwActiveProcessorMask; - internal uint dwNumberOfProcessors; - internal uint dwProcessorType; - internal uint dwAllocationGranularity; - internal short wProcessorLevel; - internal short wProcessorRevision; - } - #endregion - - #region Unix - [DllImport("libc", SetLastError = true)] - private static extern int sysconf(int name); - #endregion } } diff --git a/src/System.IO.MemoryMappedFiles/tests/Performance/Configurations.props b/src/System.IO.MemoryMappedFiles/tests/Performance/Configurations.props new file mode 100644 index 000000000000..cfc57211a43f --- /dev/null +++ b/src/System.IO.MemoryMappedFiles/tests/Performance/Configurations.props @@ -0,0 +1,9 @@ + + + + + netstandard-Unix; + netstandard-Windows_NT; + + + \ No newline at end of file diff --git a/src/System.IO.MemoryMappedFiles/tests/Performance/System.IO.MemoryMappedFiles.Performance.Tests.csproj b/src/System.IO.MemoryMappedFiles/tests/Performance/System.IO.MemoryMappedFiles.Performance.Tests.csproj index a6b12555f8a7..8f12b9c47c9f 100644 --- a/src/System.IO.MemoryMappedFiles/tests/Performance/System.IO.MemoryMappedFiles.Performance.Tests.csproj +++ b/src/System.IO.MemoryMappedFiles/tests/Performance/System.IO.MemoryMappedFiles.Performance.Tests.csproj @@ -13,6 +13,8 @@ + + Common\System\IO\FileCleanupTestBase.cs @@ -40,4 +42,4 @@ - \ No newline at end of file + diff --git a/src/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj b/src/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj index b58c723eada9..29e8451d057c 100644 --- a/src/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj +++ b/src/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj @@ -18,6 +18,8 @@ + + Common\System\IO\StringBuilderCache.cs @@ -42,4 +44,4 @@ - \ No newline at end of file + From de10647c8f3cb4190653bf243c515d3431689004 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Tue, 18 Apr 2017 17:04:54 -0400 Subject: [PATCH 172/336] Fix attribute handling of hidden directories ending with slashes We currently consider a file to be hidden if its name starts with a period. That applies to directories as well. But if the directory name in the FileSystemInfo ends with a '/', then the file name that comes back from GetFileName is empty, and it's actually the GetDirectoryName value we want to check for a period. --- .../src/System/IO/FileSystemInfo.Unix.cs | 10 +++++++++- .../tests/DirectoryInfo/GetSetAttributes.cs | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs index dfe55128cc87..e40fa613707c 100644 --- a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs +++ b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs @@ -49,7 +49,15 @@ FileAttributes IFileSystemObject.Attributes { attrs |= FileAttributes.ReparsePoint; } - if (Path.GetFileName(FullPath).StartsWith(".")) + + // If the filename starts with a period, it's hidden. Or if this is a directory ending in a slash, + // if the directory name starts with a period, it's hidden. + string fileName = Path.GetFileName(FullPath); + if (string.IsNullOrEmpty(fileName)) + { + fileName = Path.GetFileName(Path.GetDirectoryName(FullPath)); + } + if (!string.IsNullOrEmpty(fileName) && fileName[0] == '.') { attrs |= FileAttributes.Hidden; } diff --git a/src/System.IO.FileSystem/tests/DirectoryInfo/GetSetAttributes.cs b/src/System.IO.FileSystem/tests/DirectoryInfo/GetSetAttributes.cs index 07aa2ad60836..9910c3f1b360 100644 --- a/src/System.IO.FileSystem/tests/DirectoryInfo/GetSetAttributes.cs +++ b/src/System.IO.FileSystem/tests/DirectoryInfo/GetSetAttributes.cs @@ -58,6 +58,17 @@ public void UnixAttributeSetting(FileAttributes attr) Set(test.FullName, 0); } + [Theory] + [InlineData(false)] + [InlineData(true)] + [PlatformSpecific(TestPlatforms.AnyUnix)] + public void UnixDirectoryBeginningWithPeriodIsHidden(bool endsWithSlash) + { + string testDir = "." + GetTestFileName(); + Directory.CreateDirectory(Path.Combine(TestDirectory, testDir)); + Assert.True(0 != (new DirectoryInfo(Path.Combine(TestDirectory, testDir) + (endsWithSlash ? "/" : "")).Attributes & FileAttributes.Hidden)); + } + [Theory] [InlineData(FileAttributes.ReadOnly)] [InlineData(FileAttributes.Hidden)] From 9b679431e2b95e947e18fc76f8c0b58313b22b5b Mon Sep 17 00:00:00 2001 From: Ian Hays Date: Tue, 18 Apr 2017 14:22:49 -0700 Subject: [PATCH 173/336] Add ZipArchive test for full roundtrip ExternAttr --- .../tests/ZipArchive/zip_netcoreappTests.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs b/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs index 72a53ea0f2b5..51ea89e3efca 100644 --- a/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs +++ b/src/System.IO.Compression/tests/ZipArchive/zip_netcoreappTests.cs @@ -30,14 +30,25 @@ public static async Task Read_UnixFilePermissions(string zipName, uint expectedA [InlineData(int.MaxValue)] [InlineData(int.MinValue)] [InlineData(0)] + [InlineData((0x8000 + 0x01C0 + 0x0020 + 0x0010 + 0x0004) << 16)] public static async Task RoundTrips_UnixFilePermissions(int expectedAttr) { - using (ZipArchive archive = new ZipArchive(await StreamHelpers.CreateTempCopyStream(zfile("normal.zip")), ZipArchiveMode.Update)) + using (var stream = await StreamHelpers.CreateTempCopyStream(zfile("normal.zip"))) { - foreach (ZipArchiveEntry e in archive.Entries) + using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Update, true)) + { + foreach (ZipArchiveEntry e in archive.Entries) + { + e.ExternalAttributes = expectedAttr; + Assert.Equal(expectedAttr, e.ExternalAttributes); + } + } + using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read)) { - e.ExternalAttributes = expectedAttr; - Assert.Equal(expectedAttr, e.ExternalAttributes); + foreach (ZipArchiveEntry e in archive.Entries) + { + Assert.Equal(expectedAttr, e.ExternalAttributes); + } } } } From 1bc0a9bb9bddb0919768b9e35676cbd95c14f694 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Tue, 18 Apr 2017 14:38:43 -0700 Subject: [PATCH 174/336] disable all desktop System.Security.Cryptography.Primitives tests (verified no regression) --- .../tests/AsymmetricAlgorithm/Trivial.cs | 2 ++ .../tests/Configurations.props | 1 + .../tests/CryptographicException.cs | 2 ++ .../tests/HmacAlgorithmTest.cs | 6 ++++++ .../tests/KeyedHashAlgorithmTests.cs | 4 ++++ .../tests/SymmetricAlgorithm/Trivial.cs | 6 +++++- .../System.Security.Cryptography.Primitives.Tests.csproj | 1 + 7 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs index fa7b01541049..7f441f4306a3 100644 --- a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs @@ -42,6 +42,8 @@ public static void TestKeySize() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public static void ValidKeySizeUsesProperty() { using (AsymmetricAlgorithm aa = new DoesNotSetLegalKeySizesField()) diff --git a/src/System.Security.Cryptography.Primitives/tests/Configurations.props b/src/System.Security.Cryptography.Primitives/tests/Configurations.props index 8b803e0772f2..d60af0bf2c91 100644 --- a/src/System.Security.Cryptography.Primitives/tests/Configurations.props +++ b/src/System.Security.Cryptography.Primitives/tests/Configurations.props @@ -4,6 +4,7 @@ netcoreapp; netstandard; + netfx; \ No newline at end of file diff --git a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs index 0451aa45e4a2..ff9b11f8a84a 100644 --- a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs +++ b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs @@ -17,7 +17,9 @@ public static void Ctor() Assert.NotNull(new CryptographicException().Message); Assert.Equal(message, new CryptographicException(message).Message); Assert.Equal(message + " 12345", new CryptographicException(message + " {0}", "12345").Message); +#if !netfx Assert.Equal(5, new CryptographicException(5).HResult); +#endif Assert.Same(inner, new CryptographicException(message, inner).InnerException); Assert.Equal(message, new CryptographicException(message, inner).Message); } diff --git a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs index 67f3ae6c3817..fe07b915c6b1 100644 --- a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs +++ b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs @@ -9,6 +9,8 @@ namespace System.Security.Cryptography.Hashing.Tests public class HmacAlgorithmTest { [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public void SetNullAlgorithmName() { using (HMAC hmac = new TestHMAC()) @@ -35,6 +37,8 @@ public void SetUnknownAlgorithmName() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public void ResetAlgorithmName() { using (HMAC hmac = new TestHMAC()) @@ -67,6 +71,8 @@ public void ReassignAlgorithmName() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public void TrivialDerivationThrows() { using (HMAC hmac = new TestHMAC()) diff --git a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs index ebe2960ada17..552178652e0e 100644 --- a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs +++ b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs @@ -49,6 +49,8 @@ public void EnsureGetKeyCopies() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public void EnsureDisposeFreesKey() { byte[] key = new[] { (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05, }; @@ -64,6 +66,8 @@ public void EnsureDisposeFreesKey() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public void SetKeyNull() { using (var keyedHash = new TestKeyedHashAlgorithm()) diff --git a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs index 57344d6873bb..d9b921e4801f 100644 --- a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs @@ -113,6 +113,7 @@ public static void TestKey() } } +#if !netfx // Test overflow try { @@ -120,6 +121,7 @@ public static void TestKey() Assert.Throws(() => s.Key = hugeKey); } catch (OutOfMemoryException) { } // in case there isn't enough memory at test-time to allocate the large array +#endif } } @@ -281,6 +283,8 @@ public static void SetKeySize_Uses_LegalKeySizesProperty() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, + "Change needs to be ported to netfx")] public static void SetBlockSize_Uses_LegalBlockSizesProperty() { using (SymmetricAlgorithm s = new DoesNotSetKeySizesFields()) @@ -289,7 +293,7 @@ public static void SetBlockSize_Uses_LegalBlockSizesProperty() s.BlockSize = 8; } } - + private static byte[] GenerateRandom(int size) { byte[] data = new byte[size]; diff --git a/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj b/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj index 7152496bc07a..c534e3e5d2b5 100644 --- a/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj +++ b/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj @@ -5,6 +5,7 @@ {101EB757-55A4-4F48-841C-C088640B8F57} $(DefineConstants);netcoreapp + $(DefineConstants);netfx From 81c97d87ff3758b598c0f62816a4100b155d83e7 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Tue, 18 Apr 2017 17:08:54 -0500 Subject: [PATCH 175/336] Improve CI: disable randomly failing socket tests on unix --- .../FunctionalTests/DualModeSocketTest.cs | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs index d400ec222dd4..50bfb6a7702c 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs @@ -277,6 +277,7 @@ public void Socket_ConnectV4IPAddressListToV4Host_Throws() } [Theory] + [PlatformSpecific(TestPlatforms.Windows)] // Binds to a specific port on 'connectTo' which on Unix may already be in use [MemberData(nameof(DualMode_IPAddresses_ListenOn_DualMode_Throws_Data))] public void DualModeConnect_IPAddressListToHost_Throws(IPAddress[] connectTo, IPAddress listenOn, bool dualModeServer) { @@ -1955,8 +1956,8 @@ public void ReceiveMessageFromV6BoundToAnyV6_Success() ReceiveMessageFrom_Helper(IPAddress.IPv6Any, IPAddress.IPv6Loopback); } - [ConditionalFact(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsSubsystemForLinux))] // https://github.com/Microsoft/BashOnWindows/issues/987 - [PlatformSpecific(~TestPlatforms.OSX)] // ReceiveMessageFrom not supported on OSX + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // Binds to a specific port on 'connectTo' which on Unix may already be in use; ReceiveMessageFrom not supported on OSX public void ReceiveMessageFromV6BoundToSpecificV4_NotReceived() { Assert.Throws(() => @@ -1966,7 +1967,7 @@ public void ReceiveMessageFromV6BoundToSpecificV4_NotReceived() } [Fact] - [PlatformSpecific(~(TestPlatforms.Linux | TestPlatforms.OSX))] // Expected behavior is different on OSX and Linux + [PlatformSpecific(TestPlatforms.Windows)] // Binds to a specific port on 'connectTo' which on Unix may already be in use; ReceiveMessageFrom not supported on OSX public void ReceiveMessageFromV4BoundToSpecificV6_NotReceived() { Assert.Throws(() => @@ -1975,23 +1976,6 @@ public void ReceiveMessageFromV4BoundToSpecificV6_NotReceived() }); } - // NOTE: on Linux, the OS IP stack changes a dual-mode socket back to a - // normal IPv6 socket once the socket is bound to an IPv6-specific - // address. As a result, the argument validation checks in - // ReceiveFrom that check that the supplied endpoint is compatible - // with the socket's address family fail. We've decided that this is - // an acceptable difference due to the extra state that would otherwise - // be necessary to emulate the Winsock behavior. - [ConditionalFact(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsSubsystemForLinux))] // https://github.com/Microsoft/BashOnWindows/issues/987 - [PlatformSpecific(TestPlatforms.Linux)] // Read the comment above - public void ReceiveMessageFromV4BoundToSpecificV6_NotReceived_Linux() - { - Assert.Throws(() => - { - ReceiveMessageFrom_Helper(IPAddress.IPv6Loopback, IPAddress.Loopback, expectedToTimeout: true); - }); - } - [ConditionalFact(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsSubsystemForLinux))] // https://github.com/Microsoft/BashOnWindows/issues/987 [PlatformSpecific(~TestPlatforms.OSX)] // ReceiveMessageFrom not supported on OSX public void ReceiveMessageFromV6BoundToAnyV4_NotReceived() From 63d3e424973794ce191e117c3c50312eb1c01df4 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Tue, 18 Apr 2017 15:36:56 -0700 Subject: [PATCH 176/336] apply requested feedback --- .../tests/AsymmetricAlgorithm/Trivial.cs | 2 +- .../tests/CryptographicException.cs | 4 +++- .../tests/HmacAlgorithmTest.cs | 21 ++++++++++++------- .../tests/KeyedHashAlgorithmTests.cs | 2 +- .../tests/SymmetricAlgorithm/Trivial.cs | 9 +++++--- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs index 7f441f4306a3..3d1ff8f3b3e3 100644 --- a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs @@ -43,7 +43,7 @@ public static void TestKeySize() [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] + "Throws NRE on netfx")] public static void ValidKeySizeUsesProperty() { using (AsymmetricAlgorithm aa = new DoesNotSetLegalKeySizesField()) diff --git a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs index ff9b11f8a84a..4cf28c294472 100644 --- a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs +++ b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs @@ -17,7 +17,9 @@ public static void Ctor() Assert.NotNull(new CryptographicException().Message); Assert.Equal(message, new CryptographicException(message).Message); Assert.Equal(message + " 12345", new CryptographicException(message + " {0}", "12345").Message); -#if !netfx +#if netfx + Assert.Equal(unchecked((int)0x80070005), new CryptographicException(5).HResult); +#else Assert.Equal(5, new CryptographicException(5).HResult); #endif Assert.Same(inner, new CryptographicException(message, inner).InnerException); diff --git a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs index fe07b915c6b1..cc9d3ac28caf 100644 --- a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs +++ b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs @@ -9,14 +9,15 @@ namespace System.Security.Cryptography.Hashing.Tests public class HmacAlgorithmTest { [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] public void SetNullAlgorithmName() { using (HMAC hmac = new TestHMAC()) { - // Assert.NoThrows is implicit +#if netfx + Assert.Throws(() => hmac.HashName = null); +#else hmac.HashName = null; +#endif Assert.Null(hmac.HashName); } @@ -37,8 +38,6 @@ public void SetUnknownAlgorithmName() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] public void ResetAlgorithmName() { using (HMAC hmac = new TestHMAC()) @@ -47,9 +46,13 @@ public void ResetAlgorithmName() // On desktop builds this next line will succeed (modulo FIPS prohibitions on MD5). // On CoreFX it throws. +#if netfx + hmac.HashName = "MD5"; + Assert.Equal("MD5", hmac.HashName); +#else Assert.Throws(() => hmac.HashName = "MD5"); - Assert.Equal("SHA1", hmac.HashName); +#endif } } @@ -71,8 +74,6 @@ public void ReassignAlgorithmName() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] public void TrivialDerivationThrows() { using (HMAC hmac = new TestHMAC()) @@ -81,7 +82,11 @@ public void TrivialDerivationThrows() hmac.Key = Array.Empty(); byte[] ignored; +#if netfx + ignored = hmac.ComputeHash(Array.Empty()); +#else Assert.Throws(() => ignored = hmac.ComputeHash(Array.Empty())); +#endif } } diff --git a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs index 552178652e0e..1a8457c15fd2 100644 --- a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs +++ b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs @@ -50,7 +50,7 @@ public void EnsureGetKeyCopies() [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] + "Throws NRE on netfx")] public void EnsureDisposeFreesKey() { byte[] key = new[] { (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05, }; diff --git a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs index d9b921e4801f..8789766ad963 100644 --- a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs @@ -113,15 +113,18 @@ public static void TestKey() } } -#if !netfx // Test overflow try { byte[] hugeKey = new byte[536870917]; // value chosen so that when multiplied by 8 (bits) it overflows to the value 40 +#if netfx + // This change should be ported to netfx + s.Key = hugeKey; +#else Assert.Throws(() => s.Key = hugeKey); +#endif } catch (OutOfMemoryException) { } // in case there isn't enough memory at test-time to allocate the large array -#endif } } @@ -284,7 +287,7 @@ public static void SetKeySize_Uses_LegalKeySizesProperty() [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] + "Throws NRE on netfx")] public static void SetBlockSize_Uses_LegalBlockSizesProperty() { using (SymmetricAlgorithm s = new DoesNotSetKeySizesFields()) From 4b655ccadf97fe27d54315bcc2f50dca966b8ff4 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Tue, 18 Apr 2017 15:39:25 -0700 Subject: [PATCH 177/336] fix skip message --- .../tests/KeyedHashAlgorithmTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs index 1a8457c15fd2..bb840b2cb4a2 100644 --- a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs +++ b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs @@ -67,7 +67,7 @@ public void EnsureDisposeFreesKey() [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Change needs to be ported to netfx")] + "Throws NRE on netfx")] public void SetKeyNull() { using (var keyedHash = new TestKeyedHashAlgorithm()) From 244c583f85ef6f4bc6c8994b0a9672ae6b166b5c Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Tue, 18 Apr 2017 15:55:05 -0700 Subject: [PATCH 178/336] Workaround cycles in IsolatedStorage IsolatedStorage doesn't cross-compile for unix and uses Windows-specific libraries. These libraries have a dummy implementation that throw PlatformNotSupported on Unix. This dummy implementation was compiled against netstandard.dll. This is a problem since IsolatedStorage is part of the closure of netstandard.dll. We correctly catch these cases as a cycle. Workaround this by making netcoreapp-Unix-specific impls of these that compile against System.*, putting them lower in the stack. https://github.com/dotnet/corefx/issues/18578 --- .../src/Configurations.props | 1 + .../src/System.Security.AccessControl.csproj | 12 ++++++------ .../src/Configurations.props | 1 + .../src/System.Security.Principal.Windows.csproj | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/System.Security.AccessControl/src/Configurations.props b/src/System.Security.AccessControl/src/Configurations.props index 8aab837191d0..7a565a5243f7 100644 --- a/src/System.Security.AccessControl/src/Configurations.props +++ b/src/System.Security.AccessControl/src/Configurations.props @@ -4,6 +4,7 @@ netfx-Windows_NT; netcoreapp-Windows_NT; + netcoreapp-Unix; netstandard; uap-Windows_NT; diff --git a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj index 3e513acc0f0f..e0b4c74f7412 100644 --- a/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj +++ b/src/System.Security.AccessControl/src/System.Security.AccessControl.csproj @@ -5,7 +5,7 @@ System.Security.AccessControl true true - true + true {D27FFA1F-B446-4D24-B60A-1F88385CDB6D} @@ -118,16 +118,16 @@ Common\Interop\Interop.DuplicateTokenEx_SafeTokenHandle.cs - + + + + - + - - - diff --git a/src/System.Security.Principal.Windows/src/Configurations.props b/src/System.Security.Principal.Windows/src/Configurations.props index a002afec7ab1..be3142ff2439 100644 --- a/src/System.Security.Principal.Windows/src/Configurations.props +++ b/src/System.Security.Principal.Windows/src/Configurations.props @@ -4,6 +4,7 @@ uap-Windows_NT; netcoreapp-Windows_NT; + netcoreapp-Unix; netstandard; netfx-Windows_NT; diff --git a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj index becad2c37063..8552d614cd54 100644 --- a/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj +++ b/src/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj @@ -7,7 +7,7 @@ true true None - true + true From 4d1d6ce5f68930b7b4c876e90ee4abdfbbf54cc4 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 03:01:17 +0100 Subject: [PATCH 179/336] Remove unreachable code from EmitUnary. All cases calling from EmitExpression are dealt with, so this is unreachable. Throwing UnhandledUnary suggests the case can arrive when it cannot. --- .../System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs index fe7be411c12b..e4fa53c54657 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs @@ -252,8 +252,6 @@ private void EmitUnaryOperator(ExpressionType op, Type operandType, Type resultT EmitConstantOne(resultType); _ilg.Emit(OpCodes.Sub); break; - default: - throw Error.UnhandledUnary(op, nameof(op)); } EmitConvertArithmeticResult(op, resultType); From 18ba38094b661f4c16b63c6a07cf53fd09f7df51 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 03:13:46 +0100 Subject: [PATCH 180/336] Remove dead check from EmitBinaryMethod. A method-based binary operator will be constructed in GetMethodBasedBinaryOperator. If the type is lifted then it must either have the return type lifted (which means IsLiftedToNull will be true) or have that return type be bool. Hence in the path for IsLifted but !IsLiftedToNull the test (mc.Type != typeof(bool) can never pass. Remove it. --- .../Linq/Expressions/Compiler/LambdaCompiler.Binary.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs index e417a83a6cc8..164f710a63d6 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs @@ -104,6 +104,7 @@ private void EmitBinaryMethod(BinaryExpression b, CompilationFlags flags) } else { + Debug.Assert(mc.Type == typeof(bool)); switch (b.NodeType) { case ExpressionType.Equal: @@ -112,10 +113,6 @@ private void EmitBinaryMethod(BinaryExpression b, CompilationFlags flags) case ExpressionType.LessThanOrEqual: case ExpressionType.GreaterThan: case ExpressionType.GreaterThanOrEqual: - if (mc.Type != typeof(bool)) - { - throw Error.ArgumentMustBeBoolean(nameof(b)); - } resultType = typeof(bool); break; default: From 2311372490d599f0d0622f4c160d677d093f5814 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 03:23:03 +0100 Subject: [PATCH 181/336] Remove dead code from EmitBinaryMethod. Only those types tested for in the non IsLiftedToNull path have a liftedToNull argument to their factory allowing this to not be true. Remove the path for other types. --- .../Compiler/LambdaCompiler.Binary.cs | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs index 164f710a63d6..e948a26a4602 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs @@ -105,20 +105,14 @@ private void EmitBinaryMethod(BinaryExpression b, CompilationFlags flags) else { Debug.Assert(mc.Type == typeof(bool)); - switch (b.NodeType) - { - case ExpressionType.Equal: - case ExpressionType.NotEqual: - case ExpressionType.LessThan: - case ExpressionType.LessThanOrEqual: - case ExpressionType.GreaterThan: - case ExpressionType.GreaterThanOrEqual: - resultType = typeof(bool); - break; - default: - resultType = mc.Type.GetNullableType(); - break; - } + Debug.Assert(b.NodeType == ExpressionType.Equal + || b.NodeType == ExpressionType.NotEqual + || b.NodeType == ExpressionType.LessThan + || b.NodeType == ExpressionType.LessThanOrEqual + || b.NodeType == ExpressionType.GreaterThan + || b.NodeType == ExpressionType.GreaterThanOrEqual); + + resultType = typeof(bool); } var variables = new ParameterExpression[] { p1, p2 }; var arguments = new Expression[] { b.Left, b.Right }; From e9b59d8707895b225164192cf3cfe4dce2389a3b Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 03:34:53 +0100 Subject: [PATCH 182/336] Remove ValidateLift Only caller has just created two two-item arrays to pass to this, so counts cannot be mismatched. Types are confirmed as reference assignable as this method insists in GetMethodBasedBinaryOperator, so this should be an assertion rathe than a check. Do that assertion in EmitBinaryMethod and remove ValidateLift. --- .../Compiler/LambdaCompiler.Binary.cs | 8 ++++---- .../Compiler/LambdaCompiler.Expressions.cs | 18 ------------------ 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs index e948a26a4602..18440659327e 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs @@ -114,10 +114,10 @@ private void EmitBinaryMethod(BinaryExpression b, CompilationFlags flags) resultType = typeof(bool); } - var variables = new ParameterExpression[] { p1, p2 }; - var arguments = new Expression[] { b.Left, b.Right }; - ValidateLift(variables, arguments); - EmitLift(b.NodeType, resultType, mc, variables, arguments); + + Debug.Assert(TypeUtils.AreReferenceAssignable(p1.Type, b.Left.Type.GetNonNullableType())); + Debug.Assert(TypeUtils.AreReferenceAssignable(p2.Type, b.Right.Type.GetNonNullableType())); + EmitLift(b.NodeType, resultType, mc, new[] {p1, p2}, new[] {b.Left, b.Right}); } else { diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs index 958678e9c4c9..b9338deb6049 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs @@ -1117,24 +1117,6 @@ private static Type GetMemberType(MemberInfo member) #region Expression helpers - internal static void ValidateLift(IReadOnlyList variables, IReadOnlyList arguments) - { - Debug.Assert(variables != null); - Debug.Assert(arguments != null); - - if (variables.Count != arguments.Count) - { - throw Error.IncorrectNumberOfIndexes(); - } - for (int i = 0, n = variables.Count; i < n; i++) - { - if (!TypeUtils.AreReferenceAssignable(variables[i].Type, arguments[i].Type.GetNonNullableType())) - { - throw Error.ArgumentTypesMustMatch(); - } - } - } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] private void EmitLift(ExpressionType nodeType, Type resultType, MethodCallExpression mc, ParameterExpression[] paramList, Expression[] argList) { From 5a75a6164fc12e6dcb113787b85c89329b3310f6 Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Tue, 18 Apr 2017 16:19:14 -0700 Subject: [PATCH 183/336] Remove active issue --- .../tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs index 4b4e50dd6221..141822953b6a 100644 --- a/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs +++ b/src/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/MoveDirectoryTests.cs @@ -79,8 +79,6 @@ public void MoveDirectory_DoesNotExist() } [Theory MemberData(nameof(ValidStores))] - // Unix doesn't throw for this, which it should- there is a bug in Directory.Move - [ActiveIssue(12396, TestPlatforms.AnyUnix)] public void MoveDirectory_MoveOver(PresetScopes scope) { TestHelper.WipeStores(); From 3acca7ce8107fc77cda05b0a92f1c025c2118f07 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 03:49:43 +0100 Subject: [PATCH 184/336] Remove lambda compilation path from EmitInvocationExpression In the case where the path could be followed, EmitInlinedInvoke will have already been used. --- .../Expressions/Compiler/LambdaCompiler.Expressions.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs index b9338deb6049..a31b2125b4b4 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs @@ -181,12 +181,7 @@ private void EmitInvocationExpression(Expression expr, CompilationFlags flags) } expr = node.Expression; - if (typeof(LambdaExpression).IsAssignableFrom(expr.Type)) - { - // if the invoke target is a lambda expression tree, first compile it into a delegate - expr = Expression.Call(expr, expr.Type.GetMethod("Compile", Array.Empty())); - } - + Debug.Assert(!typeof(LambdaExpression).IsAssignableFrom(expr.Type)); EmitMethodCall(expr, expr.Type.GetInvokeMethod(), node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitExpressionStart); } From 381bcf9d29f4f4c83cb8440ebf2b6cc98b85b8a0 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 04:12:30 +0100 Subject: [PATCH 185/336] Remove EmitExtensionExpression ExtensionsExpressions are always reduced in StackSpiller before this. (Or if they can't be reduced, that would have thrown). --- src/System.Linq.Expressions/src/Resources/Strings.resx | 3 --- .../Expressions/Compiler/LambdaCompiler.Expressions.cs | 6 ------ .../Linq/Expressions/Compiler/LambdaCompiler.Generated.cs | 3 --- .../src/System/Linq/Expressions/Error.cs | 8 +------- .../src/System/Linq/Expressions/Strings.cs | 5 ----- 5 files changed, 1 insertion(+), 24 deletions(-) diff --git a/src/System.Linq.Expressions/src/Resources/Strings.resx b/src/System.Linq.Expressions/src/Resources/Strings.resx index 77280e52293b..68ae4db79c71 100644 --- a/src/System.Linq.Expressions/src/Resources/Strings.resx +++ b/src/System.Linq.Expressions/src/Resources/Strings.resx @@ -427,9 +427,6 @@ Cannot jump to non-local label '{0}' with a value. Only jumps to labels defined in outer blocks can pass values. - - Extension should have been reduced. - CompileToMethod cannot compile constant '{0}' because it is a non-trivial value, such as a live object. Instead, create an expression tree that can construct this value. diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs index a31b2125b4b4..30d028c8909d 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs @@ -921,12 +921,6 @@ private void EmitDebugInfoExpression(Expression expr) return; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "expr")] - private static void EmitExtensionExpression(Expression expr) - { - throw Error.ExtensionNotReduced(); - } - #region ListInit, MemberInit private void EmitListInitExpression(Expression expr) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs index 38d178b0cbc2..12dac60b8153 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs @@ -144,9 +144,6 @@ private void EmitExpression(Expression node, CompilationFlags flags) case ExpressionType.Default: EmitDefaultExpression(node); break; - case ExpressionType.Extension: - EmitExtensionExpression(node); - break; case ExpressionType.Goto: EmitGotoExpression(node, flags); break; diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs index 37cf84f69ca2..411cf7fc2cca 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs @@ -1076,13 +1076,7 @@ internal static Exception NonLocalJumpWithValue(object p0) { return new InvalidOperationException(Strings.NonLocalJumpWithValue(p0)); } - /// - /// InvalidOperationException with message like "Extension should have been reduced." - /// - internal static Exception ExtensionNotReduced() - { - return new InvalidOperationException(Strings.ExtensionNotReduced); - } + #if FEATURE_COMPILE_TO_METHODBUILDER /// /// InvalidOperationException with message like "CompileToMethod cannot compile constant '{0}' because it is a non-trivial value, such as a live object. Instead, create an expression tree that can construct this value." diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs index 99aa38689c84..4a24dda690e6 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs @@ -694,11 +694,6 @@ internal static class Strings /// internal static string NonLocalJumpWithValue(object p0) => SR.Format(SR.NonLocalJumpWithValue, p0); - /// - /// A string like "Extension should have been reduced." - /// - internal static string ExtensionNotReduced => SR.ExtensionNotReduced; - #if FEATURE_COMPILE_TO_METHODBUILDER /// /// A string like "CompileToMethod cannot compile constant '{0}' because it is a non-trivial value, such as a live object. Instead, create an expression tree that can construct this value." From aed389ee1f486590470ade328bada1706d10a9c0 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 04:40:51 +0100 Subject: [PATCH 186/336] Remove UnknownLiftType error. Cannot happen as per IsLiftedToNull logic in GetMethodBasedBinaryOperator. --- .../src/Resources/Strings.resx | 3 --- .../Compiler/LambdaCompiler.Expressions.cs | 17 ++++++----------- .../src/System/Linq/Expressions/Error.cs | 7 ------- .../src/System/Linq/Expressions/Strings.cs | 5 ----- 4 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/System.Linq.Expressions/src/Resources/Strings.resx b/src/System.Linq.Expressions/src/Resources/Strings.resx index 68ae4db79c71..66bac3c7c7bc 100644 --- a/src/System.Linq.Expressions/src/Resources/Strings.resx +++ b/src/System.Linq.Expressions/src/Resources/Strings.resx @@ -436,9 +436,6 @@ Invalid lvalue for assignment: {0}. - - unknown lift type: '{0}'. - variable '{0}' of type '{1}' referenced from scope '{2}', but it is not defined diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs index 30d028c8909d..48d987cb94db 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Expressions.cs @@ -1179,17 +1179,12 @@ private void EmitLift(ExpressionType nodeType, Type resultType, MethodCallExpres } else { - switch (nodeType) - { - case ExpressionType.LessThan: - case ExpressionType.LessThanOrEqual: - case ExpressionType.GreaterThan: - case ExpressionType.GreaterThanOrEqual: - _ilg.Emit(OpCodes.Ldc_I4_0); - break; - default: - throw Error.UnknownLiftType(nodeType); - } + Debug.Assert(nodeType == ExpressionType.LessThan + || nodeType == ExpressionType.LessThanOrEqual + || nodeType == ExpressionType.GreaterThan + || nodeType == ExpressionType.GreaterThanOrEqual); + + _ilg.Emit(OpCodes.Ldc_I4_0); } _ilg.MarkLabel(exit); FreeLocal(anyNull); diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs index 411cf7fc2cca..e5823dcbdba2 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs @@ -1107,13 +1107,6 @@ internal static Exception InvalidLvalue(ExpressionType p0) { return new InvalidOperationException(Strings.InvalidLvalue(p0)); } - /// - /// InvalidOperationException with message like "unknown lift type: '{0}'." - /// - internal static Exception UnknownLiftType(object p0) - { - return new InvalidOperationException(Strings.UnknownLiftType(p0)); - } /// /// InvalidOperationException with message like "variable '{0}' of type '{1}' referenced from scope '{2}', but it is not defined" diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs index 4a24dda690e6..f7dc10ba1f6c 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs @@ -716,11 +716,6 @@ internal static class Strings /// internal static string InvalidLvalue(object p0) => SR.Format(SR.InvalidLvalue, p0); - /// - /// A string like "unknown lift type: '{0}'." - /// - internal static string UnknownLiftType(object p0) => SR.Format(SR.UnknownLiftType, p0); - /// /// A string like "variable '{0}' of type '{1}' referenced from scope '{2}', but it is not defined" /// From cc2e97fdd71d4cbcb9e6532f3e2a1103c2f2ac8c Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 04:53:18 +0100 Subject: [PATCH 187/336] Remove type check within EmitQuote. Since type is always a type derived from LambdaExpression, it can never be Expression, so the optimisation of leaving out the cast is never valid. --- .../Linq/Expressions/Compiler/LambdaCompiler.Unary.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs index e4fa53c54657..0dc84b6a8daf 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs @@ -32,10 +32,8 @@ private void EmitQuote(UnaryExpression quote) _scope.EmitGet(_scope.NearestHoistedLocals.SelfVariable); _ilg.Emit(OpCodes.Call, RuntimeOps_Quote); - if (quote.Type != typeof(Expression)) - { - _ilg.Emit(OpCodes.Castclass, quote.Type); - } + Debug.Assert(typeof(LambdaExpression).IsAssignableFrom(quote.Type)); + _ilg.Emit(OpCodes.Castclass, quote.Type); } } From 5dfabc6fcaa05b5bd78af6f59e754680abc2bd41 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 05:20:24 +0100 Subject: [PATCH 188/336] Remove paths in AddressOf(BinaryExpression node, Type type) for non-int index Such a case is forbidden in Expression.ArrayIndex factory. --- .../Compiler/LambdaCompiler.Address.cs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Address.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Address.cs index 0f687900da65..7fed12c307db 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Address.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Address.cs @@ -72,20 +72,7 @@ private void AddressOf(BinaryExpression node, Type type) { EmitExpression(node.Left); EmitExpression(node.Right); - Type rightType = node.Right.Type; - if (rightType.IsNullableType()) - { - LocalBuilder loc = GetLocal(rightType); - _ilg.Emit(OpCodes.Stloc, loc); - _ilg.Emit(OpCodes.Ldloca, loc); - _ilg.EmitGetValue(rightType); - FreeLocal(loc); - } - Type indexType = rightType.GetNonNullableType(); - if (indexType != typeof(int)) - { - _ilg.EmitConvertToType(indexType, typeof(int), isChecked: true, locals: this); - } + Debug.Assert(node.Right.Type == typeof(int)); _ilg.Emit(OpCodes.Ldelema, node.Type); } else From a81a5725c072796de97d0747eff0c15b23a3d82b Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Mon, 17 Apr 2017 23:34:49 +0100 Subject: [PATCH 189/336] Remove some ContractUtils.Unreachable Where clearly true, and not needed as part of expression (i.e. it's not expected that a value be returned otherwise) --- .../Expressions/Compiler/LambdaCompiler.Binary.cs | 6 ------ .../Expressions/Compiler/LambdaCompiler.Generated.cs | 3 --- .../Linq/Expressions/Compiler/LambdaCompiler.Unary.cs | 11 ++--------- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs index 18440659327e..22b9558be02c 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Binary.cs @@ -266,8 +266,6 @@ private void EmitUnliftedBinaryOp(ExpressionType op, Type leftType, Type rightTy _ilg.Emit(leftType.IsUnsigned() ? OpCodes.Shr_Un : OpCodes.Shr); // Guaranteed to fit within result type: no conversion return; - default: - throw ContractUtils.Unreachable; } EmitConvertArithmeticResult(op, leftType); @@ -378,10 +376,6 @@ private void EmitLiftedBinaryOp(ExpressionType op, Type leftType, Type rightType EmitLiftedRelational(op, leftType); } break; - case ExpressionType.AndAlso: - case ExpressionType.OrElse: - default: - throw ContractUtils.Unreachable; } } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs index 12dac60b8153..a95d8861e871 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Generated.cs @@ -165,9 +165,6 @@ private void EmitExpression(Expression node, CompilationFlags flags) case ExpressionType.Try: EmitTryExpression(node); break; - - default: - throw ContractUtils.Unreachable; } if (emitStart) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs index 0dc84b6a8daf..4cd90422d847 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Unary.cs @@ -260,12 +260,6 @@ private void EmitConstantOne(Type type) { switch (type.GetTypeCode()) { - case TypeCode.UInt16: - case TypeCode.UInt32: - case TypeCode.Int16: - case TypeCode.Int32: - _ilg.Emit(OpCodes.Ldc_I4_1); - break; case TypeCode.Int64: case TypeCode.UInt64: _ilg.Emit(OpCodes.Ldc_I4_1); @@ -278,9 +272,8 @@ private void EmitConstantOne(Type type) _ilg.Emit(OpCodes.Ldc_R8, 1.0d); break; default: - // we only have to worry about arithmetic types, see - // TypeUtils.IsArithmetic - throw ContractUtils.Unreachable; + _ilg.Emit(OpCodes.Ldc_I4_1); + break; } } From 77485547946102028f975fe3f786ad33fabadf95 Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Tue, 18 Apr 2017 18:57:14 +0100 Subject: [PATCH 190/336] Remove dead path from EmitCastToType If both from and to types are valuetypes then either the conversion will be handled elsewhere, or the conversion would have been rejected in a factory, so the branch for this case is dead. Remove and refactor branching within the method. --- .../src/Resources/Strings.resx | 3 --- .../src/System/Linq/Expressions/Compiler/ILGen.cs | 13 +++---------- .../src/System/Linq/Expressions/Error.cs | 7 ------- .../src/System/Linq/Expressions/Strings.cs | 5 ----- 4 files changed, 3 insertions(+), 25 deletions(-) diff --git a/src/System.Linq.Expressions/src/Resources/Strings.resx b/src/System.Linq.Expressions/src/Resources/Strings.resx index 66bac3c7c7bc..e4131b638381 100644 --- a/src/System.Linq.Expressions/src/Resources/Strings.resx +++ b/src/System.Linq.Expressions/src/Resources/Strings.resx @@ -352,9 +352,6 @@ Type '{0}' is not IEnumerable - - Cannot cast from type '{0}' to type '{1} - Unhandled binary: {0} diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/ILGen.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/ILGen.cs index 048c0502f148..394d990ea96c 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/ILGen.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/ILGen.cs @@ -679,25 +679,18 @@ internal static void EmitConvertToType(this ILGenerator il, Type typeFrom, Type private static void EmitCastToType(this ILGenerator il, Type typeFrom, Type typeTo) { - if (!typeFrom.IsValueType && typeTo.IsValueType) - { - il.Emit(OpCodes.Unbox_Any, typeTo); - } - else if (typeFrom.IsValueType && !typeTo.IsValueType) + if (typeFrom.IsValueType) { + Debug.Assert(!typeTo.IsValueType); il.Emit(OpCodes.Box, typeFrom); if (typeTo != typeof(object)) { il.Emit(OpCodes.Castclass, typeTo); } } - else if (!typeFrom.IsValueType && !typeTo.IsValueType) - { - il.Emit(OpCodes.Castclass, typeTo); - } else { - throw Error.InvalidCast(typeFrom, typeTo); + il.Emit(typeTo.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass, typeTo); } } diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs index e5823dcbdba2..447c560eff66 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Error.cs @@ -900,13 +900,6 @@ internal static Exception TypeNotIEnumerable(object p0, string paramName) return new ArgumentException(Strings.TypeNotIEnumerable(p0), paramName); } - /// - /// InvalidOperationException with message like "Cannot cast from type '{0}' to type '{1}" - /// - internal static Exception InvalidCast(object p0, object p1) - { - return new InvalidOperationException(Strings.InvalidCast(p0, p1)); - } /// /// ArgumentException with message like "Unhandled binary: {0}" /// diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs index f7dc10ba1f6c..2dbe0a0583d7 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Strings.cs @@ -569,11 +569,6 @@ internal static class Strings /// internal static string TypeNotIEnumerable(object p0) => SR.Format(SR.TypeNotIEnumerable, p0); - /// - /// A string like "Cannot cast from type '{0}' to type '{1}" - /// - internal static string InvalidCast(object p0, object p1) => SR.Format(SR.InvalidCast, p0, p1); - /// /// A string like "Unhandled binary: {0}" /// From 250fafd8c5a1e9a23fa86920c46d9e5d87ef7bda Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Tue, 18 Apr 2017 19:12:00 +0100 Subject: [PATCH 191/336] Remove LambdaCompiler.ToString() Never called and of minimal debugging value. --- .../src/System/Linq/Expressions/Compiler/LambdaCompiler.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.cs index 4d34a37835bf..911ce73c8d35 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.cs @@ -154,12 +154,7 @@ private void InitializeMethod() AddReturnLabel(_lambda); _boundConstants.EmitCacheConstants(this); } - - public override string ToString() - { - return _method.ToString(); - } - + internal ILGenerator IL => _ilg; internal IParameterProvider Parameters => _lambda; From 32e262f48442d5fd9cdce4bae7b103dbd364faf6 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 19 Apr 2017 01:41:49 +0200 Subject: [PATCH 192/336] ApiCompatBaseline netfx updated (#18585) * ApiCompatBaseline netfx updated * fixed typo in ignore --- src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt | 7 ++++--- src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt | 4 +--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt index 2575eae4e569..fdff0cb912d0 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt @@ -3303,7 +3303,7 @@ MembersMustExist : Member 'System.Security.Cryptography.CspKeyContainerInfo.Cryp MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.IntPtr)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters..ctor(System.Int32, System.String, System.String, System.Security.AccessControl.CryptoKeySecurity, System.Security.SecureString)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract +MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Object, System.Object, System.Reflection.MethodInfo, System.Object, System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException..ctor(System.String, System.Reflection.AssemblyName, System.Security.PermissionSet, System.Security.PermissionSet, System.Reflection.MethodInfo, System.Security.Permissions.SecurityAction, System.Object, System.Security.IPermission, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.Action.get()' does not exist in the implementation but it does exist in the contract. @@ -3311,8 +3311,9 @@ MembersMustExist : Member 'System.Security.SecurityException.Action.set(System.S MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.FirstPermissionThatFailed.set(System.Security.IPermission)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.SecurityException.Zone.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract.mbersMustExist : Member 'System.Threading.Thread.CurrentContext.get()' does not exist in the implementation but it does exist in the contract -MembersMustExist : Member 'System.String System.Resources.ResourceManager.BaseNameField' does not exist in the implementation but it does exist in the contract.e +MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Threading.Thread.CurrentContext.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.String System.Resources.ResourceManager.BaseNameField' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)' does not exist in the implementation but it does exist in the contract. diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index f39804c9b9db..e8393a306258 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -6,8 +6,6 @@ ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.Applic ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: -MembersMustExist : Member 'System.Security.SecurityException.Zone.set(System.Security.SecurityZone)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.CspParameters.CryptoKeySecurity.set(System.Security.AccessControl.CryptoKeySecurity)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. @@ -95,4 +93,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 85 +Total Issues: 83 \ No newline at end of file From 2d28970f1b8d15c3d98ae1b5e811d79580330490 Mon Sep 17 00:00:00 2001 From: Eric Mellino Date: Tue, 18 Apr 2017 17:29:25 -0700 Subject: [PATCH 193/336] Remove the alpine-specific workaround in dir.props. This distro is not supported officially. --- dir.props | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dir.props b/dir.props index 8dc3270d56c9..8f1ab27f47fe 100644 --- a/dir.props +++ b/dir.props @@ -150,11 +150,6 @@ - - - false - - From e370ff7f718286e18897134a7062a1456fdc9e5b Mon Sep 17 00:00:00 2001 From: Jon Hanna Date: Wed, 19 Apr 2017 01:30:18 +0100 Subject: [PATCH 194/336] Use hashtable path if S.L.Expressions Switch method is string.Equals (#18531) The string.Equals(string, string) method has the same behaviour as the default equality operator, so the optimised path taken for that default equality operator is just as applicable, so use it. --- .../Common/CachedReflectionInfo.cs | 5 ++++ .../Compiler/LambdaCompiler.Statements.cs | 8 +----- .../tests/Switch/SwitchTests.cs | 28 +++++++++++++++++++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs index 2e4ce68404c9..0652d2ed3dd9 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Common/CachedReflectionInfo.cs @@ -89,6 +89,11 @@ public static FieldInfo DateTime_MinValue s_String_op_Equality_String_String ?? (s_String_op_Equality_String_String = typeof(string).GetMethod("op_Equality", new[] { typeof(string), typeof(string) })); + private static MethodInfo s_String_Equals_String_String; + public static MethodInfo String_Equals_String_String => + s_String_Equals_String_String ?? + (s_String_Equals_String_String = typeof(string).GetMethod("Equals", new[] { typeof(string), typeof(string) })); + private static MethodInfo s_DictionaryOfStringInt32_Add_String_Int32; public static MethodInfo DictionaryOfStringInt32_Add_String_Int32 => s_DictionaryOfStringInt32_Add_String_Int32 ?? diff --git a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Statements.cs b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Statements.cs index 825c6b868cfe..9e26af083ff9 100644 --- a/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Statements.cs +++ b/src/System.Linq.Expressions/src/System/Linq/Expressions/Compiler/LambdaCompiler.Statements.cs @@ -633,13 +633,7 @@ private void EmitSwitchBucket(SwitchInfo info, List bucket) private bool TryEmitHashtableSwitch(SwitchExpression node, CompilationFlags flags) { // If we have a comparison other than string equality, bail - MethodInfo equality = String_op_Equality_String_String; - if (equality != null && !equality.IsStatic) - { - equality = null; - } - - if (node.Comparison != equality) + if (node.Comparison != String_op_Equality_String_String && node.Comparison != String_Equals_String_String) { return false; } diff --git a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs index 4d730c3070ad..5d59d9faf745 100644 --- a/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs +++ b/src/System.Linq.Expressions/tests/Switch/SwitchTests.cs @@ -833,6 +833,34 @@ public void SwitchOnString(bool useInterpreter) } } + + [Theory, ClassData(typeof(CompilationTypes))] + public void SwitchOnStringEqualsMethod(bool useInterpreter) + { + var values = new string[] { "foobar", "foo", "bar", "baz", "qux", "quux", "corge", "grault", "garply", "waldo", "fred", "plugh", "xyzzy", "thud", null }; + + for (var i = 1; i <= values.Length; i++) + { + SwitchCase[] cases = values.Take(i).Select((s, j) => Expression.SwitchCase(Expression.Constant(j), Expression.Constant(values[j], typeof(string)))).ToArray(); + ParameterExpression value = Expression.Parameter(typeof(string)); + Expression> e = Expression.Lambda>(Expression.Switch(value, Expression.Constant(-1), typeof(string).GetMethod("Equals", new[] { typeof(string), typeof(string) }), cases), value); + Func f = e.Compile(useInterpreter); + + int k = 0; + foreach (var str in values.Take(i)) + { + Assert.Equal(k, f(str)); + k++; + } + + foreach (var str in values.Skip(i).Concat(new[] { "whatever", "FOO" })) + { + Assert.Equal(-1, f(str)); + k++; + } + } + } + [Fact] public void ToStringTest() { From b3e5f366b8d06539844cc2a94b233e2f953d8926 Mon Sep 17 00:00:00 2001 From: v-yanbgu Date: Tue, 18 Apr 2017 17:58:30 -0700 Subject: [PATCH 195/336] Add two DSC test cases. (#18375) * Add two DSC test cases. * Update modification. --- .../tests/DataContractSerializer.cs | 35 ++++++++++++ .../tests/MyResolver.cs | 57 +++++++++++++++++++ .../tests/SerializationTypes.cs | 57 +++++++++++++++++++ 3 files changed, 149 insertions(+) diff --git a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index d344139b513a..be6219caaec4 100644 --- a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -2775,6 +2775,41 @@ public static void DCS_TypeWithDelegate() Assert.Equal(value.IntProperty, actual.IntProperty); } + [Fact] + public static void DCS_ResolveNameReturnsEmptyNamespace() + { + EmptyNsContainer instance = new EmptyNsContainer(new EmptyNSAddress()); + var settings = new DataContractSerializerSettings() { MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; + string baseline1 = @"P1
downing street
"; + EmptyNsContainer result = SerializeAndDeserialize(instance, baseline1, settings); + Assert.True(result.address == null, "Address not null"); + + settings = new DataContractSerializerSettings() { DataContractResolver = new EmptyNamespaceResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; + result = SerializeAndDeserialize(instance, baseline1, settings); + Assert.True(result.address == null, "Address not null"); + + instance = new EmptyNsContainer(new UknownEmptyNSAddress()); + string baseline2 = @"P1
downing street
"; + result = SerializeAndDeserialize(instance, baseline2, settings); + Assert.True(result.address == null, "Address not null"); + } + + [Fact] + public static void DCS_ResolveDatacontractBaseType() + { + Customer customerInstance = new PreferredCustomerProxy(); + Type customerBaseType = customerInstance.GetType().BaseType; + var settings = new DataContractSerializerSettings() { DataContractResolver = new ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = true }; + string baseline1 = @""; + object result = SerializeAndDeserialize(customerInstance, baseline1, settings); + Assert.Equal(customerBaseType, result.GetType()); + + settings = new DataContractSerializerSettings() { DataContractResolver = new ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; + string baseline2 = @""; + result = SerializeAndDeserialize(customerInstance, baseline2, settings); + Assert.Equal(customerBaseType, result.GetType()); + } + private static T SerializeAndDeserialize(T value, string baseline, DataContractSerializerSettings settings = null, Func serializerFactory = null, bool skipStringCompare = false) { DataContractSerializer dcs; diff --git a/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs b/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs index dcf969f8ac7e..4267d688096e 100644 --- a/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs +++ b/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs @@ -24,3 +24,60 @@ public override bool TryResolveType(Type type, Type declaredType, DataContractRe return knownTypeResolver.TryResolveType(type, declaredType, null, out typeName, out typeNamespace); } } + +public class EmptyNamespaceResolver : DataContractResolver +{ + public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + XmlDictionary dic = new XmlDictionary(); + if (dataContractType == typeof(EmptyNsContainer)) + { + typeName = dic.Add("EmptyNsContainer"); + typeNamespace = dic.Add("MyNamespace"); + return true; + } + else if (dataContractType == typeof(UknownEmptyNSAddress)) + { + typeName = dic.Add("AddressFoo"); + typeNamespace = dic.Add(""); + return true; + } + else + { + return knownTypeResolver.TryResolveType(dataContractType, declaredType, null, out typeName, out typeNamespace); + } + } + + public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) + { + if (typeNamespace == "MyNamespace") + { + switch (typeName) + { + case "EmptyNsContainer": + return typeof(EmptyNsContainer); + } + } + else if (typeName.Equals("AddressFoo")) + { + return typeof(UknownEmptyNSAddress); + } + + return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); + } +} + +[Serializable] +public class ProxyDataContractResolver : DataContractResolver +{ + public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) + { + return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); + } + + public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + Type actualDataContractType = dataContractType.Name.EndsWith("Proxy") ? dataContractType.BaseType : dataContractType; + return knownTypeResolver.TryResolveType(actualDataContractType, declaredType, null, out typeName, out typeNamespace); + } +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 15a5ee83b021..abaf1b33bc1d 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -4378,3 +4378,60 @@ public class Person public string LastName { get; set; } } } + +[DataContract] +[KnownType(typeof(EmptyNSAddress))] +public class EmptyNsContainer +{ + [DataMember] + public object address; + + [DataMember] + public string Name; + + public EmptyNsContainer(EmptyNSAddress obj) + { + address = obj; + Name = "P1"; + } +} + +[DataContract(Namespace = "")] +public class UknownEmptyNSAddress : EmptyNSAddress +{ + public UknownEmptyNSAddress() + { + } +} + +[DataContract(Namespace = "")] +public class EmptyNSAddress +{ + [DataMember] + public string street; + + public EmptyNSAddress() + { + street = "downing street"; + } +} + +[DataContract(IsReference = true)] +[KnownType(typeof(PreferredCustomer))] +public class Customer +{ + [DataMember] + public string Name { get; set; } +} + +[DataContract(IsReference = true)] +public class PreferredCustomer : Customer +{ + [DataMember] + public string VipInfo { get; set; } +} + +[DataContract(IsReference = true)] +public class PreferredCustomerProxy : PreferredCustomer +{ +} From bf846ec302fa2b491508b43a2b2007f5701959b3 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Tue, 18 Apr 2017 18:15:37 -0700 Subject: [PATCH 196/336] Update CoreClr, ProjectNTfs, ProjectNTfsTestILC to preview1-25219-01, beta-25218-02, beta-25218-02, respectively --- dependencies.props | 14 +++++++------- external/test-runtime/optional.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dependencies.props b/dependencies.props index e38055c71a74..0de67e4b6082 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,10 +10,10 @@ --> ee8cf8d1c5908ea7f63f0a769439456ff14672eb - ee8cf8d1c5908ea7f63f0a769439456ff14672eb + 86c8c3ac7f5599b1c5739460f092f831c23f1947 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - 4ddbf159025d0c1f43f7e8132d514e4949b5f531 - 4ddbf159025d0c1f43f7e8132d514e4949b5f531 + 86c8c3ac7f5599b1c5739460f092f831c23f1947 + 86c8c3ac7f5599b1c5739460f092f831c23f1947 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 4ddbf159025d0c1f43f7e8132d514e4949b5f531 @@ -21,11 +21,11 @@ preview1-25218-03 - preview1-25218-03 + preview1-25219-01 beta-25016-01 - beta-25218-01 - beta-25218-01 - 1.0.0-beta-25218-01 + beta-25218-02 + beta-25218-02 + 1.0.0-beta-25218-02 2.0.0-preview1-25218-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index 4fe64b72e4d3..fc90f9bb383c 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25218-01" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25218-02" } } } From 86a7d1977bf929ff342f8614239a067ea366e384 Mon Sep 17 00:00:00 2001 From: Tarek Mahmoud Sayed Date: Tue, 18 Apr 2017 18:25:01 -0700 Subject: [PATCH 197/336] Enable String.Replace disabled tests (#18587) * Enable String.Replace disabled tests * Fix typo --- .../tests/System/StringTests.netcoreapp.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs index 146a466e0c17..dcc4d13fdb53 100644 --- a/src/System.Runtime/tests/System/StringTests.netcoreapp.cs +++ b/src/System.Runtime/tests/System/StringTests.netcoreapp.cs @@ -152,14 +152,12 @@ public static IEnumerable Replace_StringComparison_TestData() yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.Ordinal, "abc" }; yield return new object[] { "abc", "abc", "def", StringComparison.OrdinalIgnoreCase, "def" }; - // [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] - //yield return new object[] { "abc", "ABC", "def", StringComparison.OrdinalIgnoreCase, "def" }; + yield return new object[] { "abc", "ABC", "def", StringComparison.OrdinalIgnoreCase, "def" }; yield return new object[] { "abc", "abc", "", StringComparison.OrdinalIgnoreCase, "" }; yield return new object[] { "abc", "b", "LONG", StringComparison.OrdinalIgnoreCase, "aLONGc" }; yield return new object[] { "abc", "b", "d", StringComparison.OrdinalIgnoreCase, "adc" }; yield return new object[] { "abc", "b", null, StringComparison.OrdinalIgnoreCase, "ac" }; - // [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] - //yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.OrdinalIgnoreCase, "abc" }; + yield return new object[] { "abc", "abc" + SoftHyphen, "def", StringComparison.OrdinalIgnoreCase, "abc" }; yield return new object[] { "abc", "abc", "def", StringComparison.InvariantCulture, "def" }; yield return new object[] { "abc", "ABC", "def", StringComparison.InvariantCulture, "abc" }; @@ -257,15 +255,14 @@ public void Replace_StringComparisonCulture_ReturnsExpected(string original, str } [Fact] - public void Replace_StringComparsion_NullOldValue_ThrowsArgumentException() + public void Replace_StringComparison_NullOldValue_ThrowsArgumentException() { Assert.Throws("oldValue", () => "abc".Replace(null, "def", StringComparison.CurrentCulture)); Assert.Throws("oldValue", () => "abc".Replace(null, "def", true, CultureInfo.CurrentCulture)); } [Fact] - [ActiveIssue("https://github.com/dotnet/coreclr/pull/11001")] - public void Replace_StringComparsion_EmptyOldValue_ThrowsArgumentException() + public void Replace_StringComparison_EmptyOldValue_ThrowsArgumentException() { Assert.Throws("oldValue", () => "abc".Replace("", "def", StringComparison.CurrentCulture)); Assert.Throws("oldValue", () => "abc".Replace("", "def", true, CultureInfo.CurrentCulture)); From 453a9922f236d5f211e12bed2ee0624999701c16 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Tue, 18 Apr 2017 18:27:46 -0700 Subject: [PATCH 198/336] Make System.Runtime.Tests.dll run to completion on .Net Native (#18586) Something about those Array.CreateInstance() is causing this test to fail-fast (sometimes in a completely unrelated test long after the array tests have done.) This smells like a heap corruption :-( This is likely to take time to investigate and it is hampering investigation of other issues in this large test so I'm opening an issue for this https://github.com/dotnet/corefx/issues/18584 and mass-disabling those tests on Uap AOT. --- src/System.Runtime/tests/ArrayTests.cs | 7 +++++++ src/System.Runtime/tests/System/ArrayTests.cs | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/System.Runtime/tests/ArrayTests.cs b/src/System.Runtime/tests/ArrayTests.cs index 0157ffaf82dd..53a37a915dd9 100644 --- a/src/System.Runtime/tests/ArrayTests.cs +++ b/src/System.Runtime/tests/ArrayTests.cs @@ -123,6 +123,7 @@ public static void CopyTo_Long(Array source, Array destination, long index, Arra } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_Int_Int() { int[,] intArray2 = (int[,])Array.CreateInstance(typeof(int), 1, 2); @@ -132,6 +133,7 @@ public static void CreateInstance_Type_Int_Int() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_Int_Invalid() { AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0)); // Element type is null @@ -144,6 +146,7 @@ public static void CreateInstance_Type_Int_Invalid() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_Int_Int_Invalid() { AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0, 1)); // Element type is null @@ -156,6 +159,7 @@ public static void CreateInstance_Type_Int_Int_Invalid() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_Int_Int_Int() { int[,,] intArray3 = (int[,,])Array.CreateInstance(typeof(int), 1, 2, 3); @@ -165,6 +169,7 @@ public static void CreateInstance_Type_Int_Int_Int() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_Int_Int_Int_Invalid() { AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0, 1, 2)); // Element type is null @@ -177,6 +182,7 @@ public static void CreateInstance_Type_Int_Int_Int_Invalid() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_IntArray() { string[] stringArray = (string[])Array.CreateInstance(typeof(string), new int[] { 10 }); @@ -206,6 +212,7 @@ public static void CreateInstance_Type_IntArray() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_IntArray_IntArray() { int[] intArray1 = (int[])Array.CreateInstance(typeof(int), new int[] { 5 }, new int[] { 0 }); diff --git a/src/System.Runtime/tests/System/ArrayTests.cs b/src/System.Runtime/tests/System/ArrayTests.cs index 8526d79cc8dc..d4cba990c104 100644 --- a/src/System.Runtime/tests/System/ArrayTests.cs +++ b/src/System.Runtime/tests/System/ArrayTests.cs @@ -1346,6 +1346,7 @@ public static unsafe IEnumerable CreateInstance_TestData() [Theory] [MemberData(nameof(CreateInstance_TestData))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance(Type elementType, object repeatedValue) { CreateInstance(elementType, new int[] { 10 }, new int[1], repeatedValue); @@ -1359,6 +1360,7 @@ public static void CreateInstance(Type elementType, object repeatedValue) [InlineData(typeof(int), new int[] { 1, 2, 3 }, new int[] { 0, 0, 0 }, default(int))] [InlineData(typeof(int), new int[] { 1, 2, 3, 4 }, new int[] { 0, 0, 0, 0 }, default(int))] [InlineData(typeof(int), new int[] { 7, 8, 9 }, new int[] { 1, 2, 3 }, default(int))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance(Type elementType, int[] lengths, int[] lowerBounds, object repeatedValue) { if (lowerBounds.All(lowerBound => lowerBound == 0)) @@ -1379,6 +1381,7 @@ public static void CreateInstance(Type elementType, int[] lengths, int[] lowerBo } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_NullElementType_ThrowsArgumentNullException() { AssertExtensions.Throws("elementType", () => Array.CreateInstance(null, 0)); @@ -1397,6 +1400,7 @@ public static IEnumerable CreateInstance_NotSupportedType_TestData() [Theory] [MemberData(nameof(CreateInstance_NotSupportedType_TestData))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_NotSupportedType_ThrowsNotSupportedException(Type elementType) { Assert.Throws(() => Array.CreateInstance(elementType, 0)); @@ -1405,6 +1409,7 @@ public static void CreateInstance_NotSupportedType_ThrowsNotSupportedException(T } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException() { AssertExtensions.Throws("length", () => Array.CreateInstance(typeof(int), -1)); @@ -1413,12 +1418,14 @@ public static void CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeExcepti } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_LengthsNull_ThrowsArgumentNullException() { AssertExtensions.Throws("lengths", () => Array.CreateInstance(typeof(int), null, new int[1])); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_LengthsEmpty_ThrowsArgumentException() { Assert.Throws(null, () => Array.CreateInstance(typeof(int), new int[0])); @@ -1426,6 +1433,7 @@ public static void CreateInstance_LengthsEmpty_ThrowsArgumentException() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_LowerBoundNull_ThrowsArgumentNullException() { AssertExtensions.Throws("lowerBounds", () => Array.CreateInstance(typeof(int), new int[] { 1 }, null)); @@ -1434,12 +1442,14 @@ public static void CreateInstance_LowerBoundNull_ThrowsArgumentNullException() [Theory] [InlineData(0)] [InlineData(2)] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_LengthsAndLowerBoundsHaveDifferentLengths_ThrowsArgumentException(int length) { Assert.Throws(null, () => Array.CreateInstance(typeof(int), new int[1], new int[length])); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Linked to spurious fail-fast on UapAot: https://github.com/dotnet/corefx/issues/18584")] public static void CreateInstance_Type_LengthsPlusLowerBoundOverflows_ThrowsArgumentOutOfRangeException() { Assert.Throws(null, () => Array.CreateInstance(typeof(int), new int[] { int.MaxValue }, new int[] { 2 })); From ca654ded9922c4d5f9b2526dc78f34b126e02b3c Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Tue, 18 Apr 2017 20:29:56 -0500 Subject: [PATCH 199/336] Change Assert to Throw when X509 file permission issues on unix (#18577) --- .../Pal.Unix/DirectoryBasedStoreProvider.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs index a1d2f9ca73b4..edf19bbdffcc 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Unix/DirectoryBasedStoreProvider.cs @@ -379,9 +379,20 @@ private static void EnsureFilePermissions(FileStream stream, uint userId) new IOException(error.GetErrorMessage(), error.RawErrno)); } - Debug.Assert(Interop.Sys.FStat(stream.SafeFileHandle, out stat) == 0); - Debug.Assert((stat.Mode & (int)requiredPermissions) == (int)requiredPermissions); - Debug.Assert((stat.Mode & (int)forbiddenPermissions) == 0); + // Verify the chmod applied. + if (Interop.Sys.FStat(stream.SafeFileHandle, out stat) != 0) + { + Interop.ErrorInfo error = Interop.Sys.GetLastErrorInfo(); + throw new CryptographicException( + SR.Cryptography_FileStatusError, + new IOException(error.GetErrorMessage(), error.RawErrno)); + } + + if ((stat.Mode & (int)requiredPermissions) != (int)requiredPermissions || + (stat.Mode & (int)forbiddenPermissions) != 0) + { + throw new CryptographicException(SR.Format(SR.Cryptography_InvalidFilePermissions, stream.Name)); + } } } } From 166e73faa842fc8d8c46737c0b7b68293af5e1dd Mon Sep 17 00:00:00 2001 From: Ahson Ahmed Khan Date: Tue, 18 Apr 2017 19:34:33 -0700 Subject: [PATCH 200/336] Dont run the test for 32-bit process. (#18563) --- src/System.Memory/tests/Span/CopyTo.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/System.Memory/tests/Span/CopyTo.cs b/src/System.Memory/tests/Span/CopyTo.cs index 8330bea04128..d547232f3840 100644 --- a/src/System.Memory/tests/Span/CopyTo.cs +++ b/src/System.Memory/tests/Span/CopyTo.cs @@ -204,6 +204,12 @@ public static void CopyToCovariantArray() [InlineData((4L * 1024L * 1024L * 1024L) + 256)] public static void CopyToLargeSizeTest(long bufferSize) { + // If this test is run in a 32-bit process, the large allocation will fail. + if (Unsafe.SizeOf() != sizeof(long)) + { + return; + } + int GuidCount = (int)(bufferSize / Unsafe.SizeOf()); bool allocatedFirst = false; bool allocatedSecond = false; From d92abce8e008c91ea278cc514426b2c65ebf7ce8 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Wed, 19 Apr 2017 09:38:29 +0700 Subject: [PATCH 201/336] Fixes for ProcessStartInfo.Environment --- .../src/System.Diagnostics.Process.csproj | 1 + .../Specialized/DictionaryWrapper.cs | 98 ++++++++++++++++ .../Specialized/StringDictionaryWrapper.cs | 33 ++++-- .../src/System/Diagnostics/Process.Windows.cs | 4 +- .../System/Diagnostics/ProcessStartInfo.cs | 8 +- .../tests/ProcessStartInfoTests.cs | 109 +++++------------- .../tests/ProcessTests.cs | 8 +- 7 files changed, 162 insertions(+), 99 deletions(-) create mode 100644 src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs diff --git a/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj b/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj index 10182086248e..6f8317fb90d9 100644 --- a/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj +++ b/src/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj @@ -26,6 +26,7 @@ + diff --git a/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs b/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs new file mode 100644 index 000000000000..ea309c1ace2c --- /dev/null +++ b/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs @@ -0,0 +1,98 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; + +namespace System.Collections.Specialized +{ + [Serializable] + internal sealed class DictionaryWrapper : IDictionary, IDictionary + { + private readonly Dictionary _contents; + + public DictionaryWrapper(Dictionary contents) + { + _contents = contents; + } + + public string this[string key] + { + get => _contents[key]; + set => _contents[key] = value; + } + + public object this[object key] + { + get => this[(string)key]; + set => this[(string)key] = (string)value; + } + + public ICollection Keys => _contents.Keys; + public ICollection Values => _contents.Values; + + ICollection IDictionary.Keys => _contents.Keys; + ICollection IDictionary.Values => _contents.Values; + + public int Count => _contents.Count; + + public bool IsReadOnly => ((IDictionary)_contents).IsReadOnly; + public bool IsSynchronized => ((IDictionary)_contents).IsSynchronized; + public bool IsFixedSize => ((IDictionary)_contents).IsFixedSize; + public object SyncRoot => ((IDictionary)_contents).SyncRoot; + + public void Add(string key, string value) + { + // If the key already exists, overwrite it. + if (ContainsKey(key)) + { + this[key] = value; + } + else + { + _contents.Add(key, value); + } + } + + public void Add(KeyValuePair item) => Add(item.Key, item.Value); + + public void Add(object key, object value) => Add((string)key, (string)value); + + public void Clear() => _contents.Clear(); + + public bool Contains(KeyValuePair item) + { + return _contents.ContainsKey(item.Key) && _contents[item.Key] == item.Value; + } + + public bool Contains(object key) => ContainsKey((string)key); + public bool ContainsKey(string key) => _contents.ContainsKey(key); + public bool ContainsValue(string value) => _contents.ContainsValue(value); + + public void CopyTo(KeyValuePair[] array, int arrayIndex) + { + ((IDictionary)_contents).CopyTo(array, arrayIndex); + } + + public void CopyTo(Array array, int index) => ((IDictionary)_contents).CopyTo(array, index); + + public bool Remove(string key) => _contents.Remove(key); + public void Remove(object key) => Remove((string)key); + + public bool Remove(KeyValuePair item) + { + if (!Contains(item)) + { + return false; + } + + return Remove(item.Key); + } + + public bool TryGetValue(string key, out string value) => _contents.TryGetValue(key, out value); + + public IEnumerator> GetEnumerator() => _contents.GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() => _contents.GetEnumerator(); + IDictionaryEnumerator IDictionary.GetEnumerator() => _contents.GetEnumerator(); + } +} \ No newline at end of file diff --git a/src/System.Diagnostics.Process/src/System/Collections/Specialized/StringDictionaryWrapper.cs b/src/System.Diagnostics.Process/src/System/Collections/Specialized/StringDictionaryWrapper.cs index 5d4e81f539e7..e89dcdf931e6 100644 --- a/src/System.Diagnostics.Process/src/System/Collections/Specialized/StringDictionaryWrapper.cs +++ b/src/System.Diagnostics.Process/src/System/Collections/Specialized/StringDictionaryWrapper.cs @@ -12,9 +12,9 @@ namespace System.Collections.Specialized [Serializable] internal sealed class StringDictionaryWrapper : StringDictionary { - private readonly Dictionary _contents; + private readonly DictionaryWrapper _contents; - public StringDictionaryWrapper(Dictionary contents) + public StringDictionaryWrapper(DictionaryWrapper contents) { _contents = contents; } @@ -27,15 +27,22 @@ public override string this[string key] public override int Count => _contents.Count; - public override ICollection Keys => _contents.Keys; - - public override ICollection Values => _contents.Values; + public override ICollection Keys => ((IDictionary)_contents).Keys; + public override ICollection Values => ((IDictionary)_contents).Values; public override bool IsSynchronized => false; - public override object SyncRoot => ((ICollection)_contents).SyncRoot; - - public override void Add(string key, string value) => _contents.Add(key, value); + public override object SyncRoot => _contents.SyncRoot; + + public override void Add(string key, string value) + { + if (_contents.ContainsKey(key)) + { + throw new ArgumentException(); + } + + _contents.Add(key, value); + } public override void Clear() => _contents.Clear(); @@ -43,9 +50,15 @@ public override string this[string key] public override bool ContainsValue(string value) => _contents.ContainsValue(value); - public override void CopyTo(Array array, int index) => ((ICollection)_contents).CopyTo(array, index); + public override void CopyTo(Array array, int index) => _contents.CopyTo(array, index); - public override IEnumerator GetEnumerator() => _contents.GetEnumerator(); + public override IEnumerator GetEnumerator() + { + foreach (KeyValuePair keyValuePair in _contents) + { + yield return new DictionaryEntry(keyValuePair.Key, keyValuePair.Value); + } + } public override void Remove(string key) => _contents.Remove(key); } diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs index 7e1ade179d92..39d87e337e37 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs @@ -648,7 +648,7 @@ private bool StartCore(ProcessStartInfo startInfo) if (startInfo._environmentVariables != null) { creationFlags |= Interop.Advapi32.StartupInfoOptions.CREATE_UNICODE_ENVIRONMENT; - byte[] environmentBytes = EnvironmentVariablesToByteArray(startInfo._environmentVariables); + byte[] environmentBytes = EnvironmentVariablesToByteArray(startInfo.Environment); environmentHandle = GCHandle.Alloc(environmentBytes, GCHandleType.Pinned); environmentPtr = environmentHandle.AddrOfPinnedObject(); } @@ -1044,7 +1044,7 @@ private void CreatePipe(out SafeFileHandle parentHandle, out SafeFileHandle chil } } - private static byte[] EnvironmentVariablesToByteArray(Dictionary sd) + private static byte[] EnvironmentVariablesToByteArray(IDictionary sd) { // get the keys string[] keys = new string[sd.Count]; diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs index 035dc7c95e94..ba505cf4cd14 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs @@ -23,7 +23,7 @@ public sealed partial class ProcessStartInfo private string _verb; private ProcessWindowStyle _windowStyle; - internal Dictionary _environmentVariables; + internal DictionaryWrapper _environmentVariables; /// /// Default constructor. At least the @@ -62,7 +62,7 @@ public string Arguments public bool CreateNoWindow { get; set; } - public StringDictionary EnvironmentVariables => new StringDictionaryWrapper(Environment as Dictionary); + public StringDictionary EnvironmentVariables => new StringDictionaryWrapper(Environment as DictionaryWrapper); public IDictionary Environment { @@ -73,9 +73,9 @@ public IDictionary Environment IDictionary envVars = System.Environment.GetEnvironmentVariables(); #pragma warning disable 0429 // CaseSensitiveEnvironmentVaribles is constant but varies depending on if we build for Unix or Windows - _environmentVariables = new Dictionary( + _environmentVariables = new DictionaryWrapper(new Dictionary( envVars.Count, - CaseSensitiveEnvironmentVariables ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase); + CaseSensitiveEnvironmentVariables ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase)); #pragma warning restore 0429 // Manual use of IDictionaryEnumerator instead of foreach to avoid DictionaryEntry box allocations. diff --git a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs index f970763a46b9..992e1ea0020f 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs @@ -43,18 +43,8 @@ public void TestEnvironmentProperty() environment.Remove("NewKey"); Assert.Equal(countItems + 1, environment.Count); - // The full .NET framework represents Environment with StringDictionary. On .NET Core we use - // use Dictionary, because we need to have case sensitive behaviour on Unix. - // The full .NET Framework uses CaseSensitiveStringDictionary, but we can't have an - // equivalent as we don't have access to the internal state of StringDictionary in .NET Core. - if (PlatformDetection.IsFullFramework) - { - environment.Add("NewKey2", "NewValue2"); - } - else - { - Assert.Throws(null, () => environment.Add("NewKey2", "NewValue2")); - } + environment.Add("NewKey2", "NewValue2Overriden"); + Assert.Equal("NewValue2Overriden", environment["NewKey2"]); //Clear environment.Clear(); @@ -71,7 +61,7 @@ public void TestEnvironmentProperty() //Iterating string result = null; int index = 0; - foreach (string e1 in environment.Values) + foreach (string e1 in environment.Values.OrderBy(p => p)) { index++; result += e1; @@ -81,7 +71,7 @@ public void TestEnvironmentProperty() result = null; index = 0; - foreach (string e1 in environment.Keys) + foreach (string e1 in environment.Keys.OrderBy(p => p)) { index++; result += e1; @@ -91,7 +81,7 @@ public void TestEnvironmentProperty() result = null; index = 0; - foreach (KeyValuePair e1 in environment) + foreach (KeyValuePair e1 in environment.OrderBy(p => p.Key)) { index++; result += e1.Key; @@ -138,17 +128,8 @@ public void TestEnvironmentProperty() //Exception not thrown with invalid key Assert.Throws(() => environment.Add(null, "NewValue2")); - // .NET Core uses a Dictionary, but the full .NET Framework uses - // StringDictionary. These collections have different behaviour for Add where - // the key already exists. - if (PlatformDetection.IsFullFramework) - { - environment.Add("NewKey2", "NewValue2"); - } - else - { - Assert.Throws(null, () => environment.Add("NewKey2", "NewValue2")); - } + environment.Add("NewKey2", "NewValue2OverridenAgain"); + Assert.Equal("NewValue2OverridenAgain", environment["NewKey2"]); //Remove Item environment.Remove("NewKey98"); @@ -160,20 +141,21 @@ public void TestEnvironmentProperty() //"Exception not thrown with null key" Assert.Throws(() => environment["1bB"]); - Assert.True(environment.Contains(new KeyValuePair("NewKey2", "NewValue2"))); - Assert.Equal(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), environment.Contains(new KeyValuePair("NEWKeY2", "NewValue2"))); + Assert.True(environment.Contains(new KeyValuePair("NewKey2", "NewValue2OverridenAgain"))); + Assert.Equal(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), environment.Contains(new KeyValuePair("NEWKeY2", "NewValue2OverridenAgain"))); - Assert.False(environment.Contains(new KeyValuePair("NewKey2", "newvalue2"))); - Assert.False(environment.Contains(new KeyValuePair("newkey2", "newvalue2"))); + Assert.False(environment.Contains(new KeyValuePair("NewKey2", "newvalue2overridenagain"))); + Assert.False(environment.Contains(new KeyValuePair("newkey2", "newvalue2overridenagain"))); //Use KeyValuePair Enumerator + string[] results = new string[2]; var x = environment.GetEnumerator(); x.MoveNext(); - var y1 = x.Current; - Assert.Equal("NewKey NewValue", y1.Key + " " + y1.Value); + results[0] = x.Current.Key + " " + x.Current.Value; x.MoveNext(); - y1 = x.Current; - Assert.Equal("NewKey2 NewValue2", y1.Key + " " + y1.Value); + results[1] = x.Current.Key + " " + x.Current.Value; + + Assert.Equal(new string[] { "NewKey NewValue", "NewKey2 NewValue2OverridenAgain" }, results.OrderBy(s => s)); //IsReadonly Assert.False(environment.IsReadOnly); @@ -182,7 +164,7 @@ public void TestEnvironmentProperty() environment.Add(new KeyValuePair("NewKey4", "NewValue4")); - //CopyTo + //CopyTo - the order is undefined. KeyValuePair[] kvpa = new KeyValuePair[10]; environment.CopyTo(kvpa, 0); @@ -191,7 +173,12 @@ public void TestEnvironmentProperty() Assert.Equal("NewKey2", kvpaOrdered[2].Key); environment.CopyTo(kvpa, 6); - Assert.Equal("NewKey", kvpa[6].Key); + Assert.Equal(default(KeyValuePair), kvpa[5]); + Assert.StartsWith("NewKey", kvpa[6].Key); + Assert.NotEqual(kvpa[6].Key, kvpa[7].Key); + Assert.StartsWith("NewKey", kvpa[7].Key); + Assert.NotEqual(kvpa[7].Key, kvpa[8].Key); + Assert.StartsWith("NewKey", kvpa[8].Key); //Exception not thrown with null key Assert.Throws(() => { environment.CopyTo(kvpa, -1); }); @@ -481,58 +468,22 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() Assert.Equal(2, psi.EnvironmentVariables.Count); Assert.Equal(psi.Environment.Count, psi.EnvironmentVariables.Count); - Assert.Throws(() => { psi.EnvironmentVariables.Add("NewKey2", "NewValue2"); }); + Assert.Throws(null, () => psi.EnvironmentVariables.Add("NewKey2", "NewValue2")); psi.EnvironmentVariables.Add("NewKey3", "NewValue3"); - // .NET Core uses a Dictionary, but the full .NET Framework uses - // StringDictionary. These collections have different behaviour for Add where - // the key already exists. - if (PlatformDetection.IsFullFramework) - { - psi.Environment.Add("NewKey3", "NewValue3"); - } - else - { - Assert.Throws(() => psi.Environment.Add("NewKey3", "NewValue3")); - } + psi.Environment.Add("NewKey3", "NewValue3Overriden"); + Assert.Equal("NewValue3Overriden", psi.Environment["NewKey3"]); psi.EnvironmentVariables.Clear(); Assert.Equal(0, psi.Environment.Count); psi.EnvironmentVariables.Add("NewKey", "NewValue"); psi.EnvironmentVariables.Add("NewKey2", "NewValue2"); - string environmentResultKey = ""; - string environmentResultValue = ""; - foreach (var entry in psi.Environment) - { - environmentResultKey += entry.Key; - environmentResultValue += entry.Value; - } - - Assert.Equal("NewKeyNewKey2", environmentResultKey); - Assert.Equal("NewValueNewValue2", environmentResultValue); - - string envVarResultKey = ""; - string envVarResultValue = ""; - - // .NET Core uses a Dictionary, but the full .NET Framework uses - // StringDictionary. These collections return different types from GetEnumerator. - foreach (var entry in psi.EnvironmentVariables) - { - if (PlatformDetection.IsFullFramework) - { - envVarResultKey += ((DictionaryEntry)entry).Key; - envVarResultValue += ((DictionaryEntry)entry).Value; - } - else - { - envVarResultKey += ((KeyValuePair)entry).Key; - envVarResultValue += ((KeyValuePair)entry).Value; - } - } - Assert.Equal(environmentResultKey, envVarResultKey); - Assert.Equal(environmentResultValue, envVarResultValue); + // Environment and EnvironmentVariables should be equal, but have different enumeration types. + IEnumerable> allEnvironment = psi.Environment.OrderBy(k => k.Key); + IEnumerable allDictionary = psi.EnvironmentVariables.Cast().OrderBy(k => k.Key); + Assert.Equal(allEnvironment.Select(k => new DictionaryEntry(k.Key, k.Value)), allDictionary); psi.EnvironmentVariables.Add("NewKey3", "NewValue3"); KeyValuePair[] kvpa = new KeyValuePair[5]; diff --git a/src/System.Diagnostics.Process/tests/ProcessTests.cs b/src/System.Diagnostics.Process/tests/ProcessTests.cs index d388be4b29b4..c8d3590b5ca9 100644 --- a/src/System.Diagnostics.Process/tests/ProcessTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessTests.cs @@ -934,8 +934,8 @@ public void StartInfo_SetOnRunningProcess_ThrowsInvalidOperationException() Process process = CreateProcessLong(); process.Start(); - // .NET Core fixes a bug where Process.StartInfo for a running process would - // return information about the current process, not the running process. + // .NET Core fixes a bug where Process.StartInfo for a unrelated process would + // return information about the current process, not the unrelated process. // See https://github.com/dotnet/corefx/issues/1100. if (PlatformDetection.IsFullFramework) { @@ -971,8 +971,8 @@ public void StartInfo_GetOnRunningProcess_ThrowsInvalidOperationException() { Process process = Process.GetCurrentProcess(); - // .NET Core fixes a bug where Process.StartInfo for a running process would - // return information about the current process, not the running process. + // .NET Core fixes a bug where Process.StartInfo for an unrelated process would + // return information about the current process, not the unrelated process. // See https://github.com/dotnet/corefx/issues/1100. if (PlatformDetection.IsFullFramework) { From f6de80e4689a99635ca6040cf77258e6f40ccec5 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Wed, 19 Apr 2017 10:06:14 +0700 Subject: [PATCH 202/336] Fix IPAddress parsing tests for netfx --- .../tests/FunctionalTests/IPAddressParsing.cs | 46 +++++++++++++------ ...tem.Net.Primitives.Functional.Tests.csproj | 3 ++ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs index 550e9ef79889..8832207b87e0 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs +++ b/src/System.Net.Primitives/tests/FunctionalTests/IPAddressParsing.cs @@ -74,8 +74,6 @@ public void ParseIPv4_ValidAddress_Success(string address, string expected) [InlineData("127.0.0.1 ")] // trailing whitespace [InlineData(" 127.0.0.1 ")] // leading and trailing whitespace [InlineData("192.168.0.0/16")] // with subnet - [InlineData("192.168.0.0:80")] // with port - [InlineData("192.168.0.1:80")] // with port [InlineData("157.3B191B")] // Hex without 0x [InlineData("1.1.1.0x")] // Empty trailing hex segment [InlineData("0000X9D.0x3B.0X19.0x1B")] // Leading zeros on hex @@ -105,13 +103,15 @@ public void ParseIPv4_ValidAddress_Success(string address, string expected) [InlineData("12.1.abc.5")] // text in section public void ParseIPv4_InvalidAddress_Failure(string address) { - FormatException fe = Assert.Throws(() => IPAddress.Parse(address)); - SocketException se = Assert.IsType(fe.InnerException); - Assert.NotEmpty(se.Message); + ParseInvalidAddress(address, hasInnerSocketException: !PlatformDetection.IsFullFramework); + } - IPAddress result = IPAddress.Loopback; - Assert.False(IPAddress.TryParse(address, out result)); - Assert.Null(result); + [Theory] + [InlineData("192.168.0.0:80")] // with port + [InlineData("192.168.0.1:80")] // with port + public void ParseIPv4_InvalidAddress_ThrowsFormatExceptionWithInnerException(string address) + { + ParseInvalidAddress(address, hasInnerSocketException: true); } [Theory] @@ -297,7 +297,6 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData("Fe08::1]")] // trailing bracket [InlineData("Fe08::1]]")] // two trailing brackets [InlineData("[Fe08::1]]")] // one leading and two trailing brackets - [InlineData("[1]")] // incomplete [InlineData(":1")] // leading single colon [InlineData("1:")] // trailing single colon [InlineData(" ::1")] // leading whitespace @@ -308,22 +307,41 @@ public void ParseIPv6_ValidAddress_RoundtripMatchesExpected(string address, stri [InlineData("1:1\u67081:1:1")] // invalid char [InlineData("FE08::260.168.0.1")] // out of range [InlineData("::192.168.0.0x0")] // hex failure - [InlineData("[192.168.0.1]")] // raw v4 [InlineData("G::")] // invalid hex [InlineData("FFFFF::")] // invalid value [InlineData(":%12")] // colon scope - [InlineData("%12")] // just scope [InlineData("::%1a")] // alphanumeric scope [InlineData("[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/")] // errneous ending slash after ignored port [InlineData("::1234%0x12")] // invalid scope ID + public void ParseIPv6_InvalidAddress_ThrowsFormatException(string invalidAddress) + { + ParseInvalidAddress(invalidAddress, hasInnerSocketException: true); + } + + [Theory] [InlineData("")] // empty [InlineData(" ")] // whitespace [InlineData(" ")] // whitespace - public void ParseIPv6_InvalidAddress_ThrowsFormatException(string invalidAddress) + [InlineData("%12")] // just scope + [InlineData("[192.168.0.1]")] // raw v4 + [InlineData("[1]")] // incomplete + public void ParseIPv6_InvalidAddress_ThrowsFormatExceptionWithNoInnerExceptionInNetfx(string invalidAddress) + { + ParseInvalidAddress(invalidAddress, hasInnerSocketException: !PlatformDetection.IsFullFramework); + } + + private static void ParseInvalidAddress(string invalidAddress, bool hasInnerSocketException) { FormatException fe = Assert.Throws(() => IPAddress.Parse(invalidAddress)); - SocketException se = Assert.IsType(fe.InnerException); - Assert.NotEmpty(se.Message); + if (hasInnerSocketException) + { + SocketException se = Assert.IsType(fe.InnerException); + Assert.NotEmpty(se.Message); + } + else + { + Assert.Null(fe.InnerException); + } IPAddress result = IPAddress.Loopback; Assert.False(IPAddress.TryParse(invalidAddress, out result)); diff --git a/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj b/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj index bd3e393e601c..3f55111b5db4 100644 --- a/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj +++ b/src/System.Net.Primitives/tests/FunctionalTests/System.Net.Primitives.Functional.Tests.csproj @@ -31,6 +31,9 @@ Common\System\AssertExtensions.cs + + Common\System\PlatformDetection.cs + Common\System\Diagnostics\Tracing\TestEventListener.cs From 26c06ed4adc956b60d2896e71e0e0b0d7fcb396d Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Tue, 18 Apr 2017 20:17:19 -0700 Subject: [PATCH 203/336] Update ProjectNTfs, ProjectNTfsTestILC to beta-25219-00, beta-25219-00, respectively --- dependencies.props | 10 +++++----- external/test-runtime/optional.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.props b/dependencies.props index 0de67e4b6082..2a0b0cca94d5 100644 --- a/dependencies.props +++ b/dependencies.props @@ -12,8 +12,8 @@ ee8cf8d1c5908ea7f63f0a769439456ff14672eb 86c8c3ac7f5599b1c5739460f092f831c23f1947 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - 86c8c3ac7f5599b1c5739460f092f831c23f1947 - 86c8c3ac7f5599b1c5739460f092f831c23f1947 + 37660101ab061128da926a2bfa7743e360c53aa6 + 37660101ab061128da926a2bfa7743e360c53aa6 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 4ddbf159025d0c1f43f7e8132d514e4949b5f531 @@ -23,9 +23,9 @@ preview1-25218-03 preview1-25219-01 beta-25016-01 - beta-25218-02 - beta-25218-02 - 1.0.0-beta-25218-02 + beta-25219-00 + beta-25219-00 + 1.0.0-beta-25219-00 2.0.0-preview1-25218-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index fc90f9bb383c..f4cfb86b7e91 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25218-02" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25219-00" } } } From b372d61e29969efaceca924fe7b699edb8cf359a Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Wed, 19 Apr 2017 10:49:22 +0700 Subject: [PATCH 204/336] Get System.ComponentModel.Annotations tests passing with netfx (#17874) * Fix RangeAttribute validation regression from netfx Fixed by using the code from referencesource. The RangeAttribute tests now all pass with `msbuild /T:BuildAndTest /P:TargetGroup=netfx` * Fix netfx for tests with new features and .net core bug fixes * Nerf PhoneAttributes tests for netfx This is almost certainly a .NET core bug caused by https://github.com/dotnet/corefx/pull/4319 * Address PR feedback * Fix names of test skips on netfx --- .../DataAnnotations/RangeAttribute.cs | 12 ++--- .../tests/CustomValidationAttributeTests.cs | 24 ++++++++- .../tests/DataTypeAttributeTests.cs | 26 +++++---- .../tests/MaxLengthAttributeTests.cs | 52 +++++++++++++++--- .../tests/MinLengthAttributeTests.cs | 53 +++++++++++++++---- .../tests/PhoneAttributeTests.cs | 20 ++++--- .../tests/RangeAttributeTests.cs | 28 +++++++--- ...em.ComponentModel.Annotations.Tests.csproj | 3 ++ 8 files changed, 170 insertions(+), 48 deletions(-) diff --git a/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs b/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs index 57b30f9606fe..1d9f9c0c368d 100644 --- a/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs +++ b/src/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/RangeAttribute.cs @@ -197,13 +197,11 @@ private void SetupConversion() comparableType.FullName)); } - Func conversion = - value => - (value != null && value.GetType() == type) - ? value - : Convert.ChangeType(value, type, CultureInfo.CurrentCulture); - var min = (IComparable)conversion(minimum); - var max = (IComparable)conversion(maximum); + TypeConverter converter = TypeDescriptor.GetConverter(type); + IComparable min = (IComparable)converter.ConvertFromString((string)minimum); + IComparable max = (IComparable)converter.ConvertFromString((string)maximum); + + Func conversion = value => (value != null && value.GetType() == type) ? value : converter.ConvertFrom(value); Initialize(min, max, conversion); } } diff --git a/src/System.ComponentModel.Annotations/tests/CustomValidationAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/CustomValidationAttributeTests.cs index 46610a103cd1..53dcb49abd13 100644 --- a/src/System.ComponentModel.Annotations/tests/CustomValidationAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/CustomValidationAttributeTests.cs @@ -77,7 +77,17 @@ public static void Constructor(Type validatorType, string method) public static void RequiresValidationContext_Get_ReturnsExpected(string method, bool expected) { CustomValidationAttribute attribute = GetAttribute(method); - Assert.Equal(expected, attribute.RequiresValidationContext); + + // The full .NET Framework has a bug where CustomValidationAttribute doesn't + // validate the context. See https://github.com/dotnet/corefx/issues/18360. + if (PlatformDetection.IsFullFramework) + { + Assert.False(attribute.RequiresValidationContext); + } + else + { + Assert.Equal(expected, attribute.RequiresValidationContext); + } } public static IEnumerable BadlyFormed_TestData() @@ -96,13 +106,23 @@ public static IEnumerable BadlyFormed_TestData() } [Theory] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core fixes a bug where CustomValidationAttribute doesn't validate the context. See https://github.com/dotnet/corefx/issues/18360")] [MemberData(nameof(BadlyFormed_TestData))] - public static void RequiresValidationContext_BadlyFormed_ThrowsInvalidOperationException(Type validatorType, string method) + public static void RequiresValidationContext_BadlyFormed_NetCore_ThrowsInvalidOperationException(Type validatorType, string method) { CustomValidationAttribute attribute = new CustomValidationAttribute(validatorType, method); Assert.Throws(() => attribute.RequiresValidationContext); } + [Theory] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The full .NET Framework has a bug where CustomValidationAttribute doesn't validate the context. See https://github.com/dotnet/corefx/issues/18360")] + [MemberData(nameof(BadlyFormed_TestData))] + public static void RequiresValidationContext_BadlyFormed_NetFx_DoesNotThrow(Type validatorType, string method) + { + CustomValidationAttribute attribute = new CustomValidationAttribute(validatorType, method); + Assert.False(attribute.RequiresValidationContext); + } + [Theory] [MemberData(nameof(BadlyFormed_TestData))] public static void Validate_BadlyFormed_ThrowsInvalidOperationException(Type validatorType, string method) diff --git a/src/System.ComponentModel.Annotations/tests/DataTypeAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/DataTypeAttributeTests.cs index 3aa385bebdb0..83c58558976d 100644 --- a/src/System.ComponentModel.Annotations/tests/DataTypeAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/DataTypeAttributeTests.cs @@ -65,25 +65,33 @@ public static void GetDataTypeName_InvalidDataType_ThrowsIndexOutOfRangeExceptio Assert.Throws(() => attribute.GetDataTypeName()); } + public static IEnumerable Ctor_String_TestData() + { + yield return new object[] { "CustomValue", true }; + yield return new object[] { "", false }; + yield return new object[] { null, false }; + + // .NET Core fixed a bug where whitespace strings were allowed as CustomDataType. + // See https://github.com/dotnet/corefx/issues/4465. + yield return new object[] { " ", PlatformDetection.IsFullFramework }; + } + [Theory] - [InlineData("CustomValue")] - [InlineData("")] - [InlineData(" ")] - [InlineData(null)] - public static void Ctor_String(string customDataType) + [MemberData(nameof(Ctor_String_TestData))] + public static void Ctor_String(string customDataType, bool valid) { DataTypeAttribute attribute = new DataTypeAttribute(customDataType); Assert.Equal(DataType.Custom, attribute.DataType); Assert.Equal(customDataType, attribute.CustomDataType); - if (string.IsNullOrWhiteSpace(customDataType)) + if (valid) { - Assert.Throws(() => attribute.GetDataTypeName()); - Assert.Throws(() => attribute.Validate(new object(), s_testValidationContext)); + Assert.Equal(customDataType, attribute.GetDataTypeName()); } else { - Assert.Equal(customDataType, attribute.GetDataTypeName()); + Assert.Throws(() => attribute.GetDataTypeName()); + Assert.Throws(() => attribute.Validate(new object(), s_testValidationContext)); } } diff --git a/src/System.ComponentModel.Annotations/tests/MaxLengthAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/MaxLengthAttributeTests.cs index e56e70851616..58c294b98e21 100644 --- a/src/System.ComponentModel.Annotations/tests/MaxLengthAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/MaxLengthAttributeTests.cs @@ -20,27 +20,35 @@ protected override IEnumerable ValidValues() yield return new TestCase(new MaxLengthAttribute(-1), new int[20]); yield return new TestCase(new MaxLengthAttribute(15), new string[14]); yield return new TestCase(new MaxLengthAttribute(16), new string[16]); - yield return new TestCase(new MaxLengthAttribute(-1), new Collection(new int[20])); - yield return new TestCase(new MaxLengthAttribute(15), new Collection(new string[14])); - yield return new TestCase(new MaxLengthAttribute(16), new Collection(new string[16])); - yield return new TestCase(new MaxLengthAttribute(-1), new List(new int[20])); - yield return new TestCase(new MaxLengthAttribute(15), new List(new string[14])); - yield return new TestCase(new MaxLengthAttribute(16), new List(new string[16])); yield return new TestCase(new MaxLengthAttribute(16), new int[4, 4]); yield return new TestCase(new MaxLengthAttribute(16), new string[3, 4]); } + protected static IEnumerable ValidValues_ICollection() + { + yield return new object[] { new MaxLengthAttribute(-1), new Collection(new int[20]) }; + yield return new object[] { new MaxLengthAttribute(15), new Collection(new string[14]) }; + yield return new object[] { new MaxLengthAttribute(16), new Collection(new string[16]) }; + yield return new object[] { new MaxLengthAttribute(-1), new List(new int[20]) }; + yield return new object[] { new MaxLengthAttribute(15), new List(new string[14]) }; + yield return new object[] { new MaxLengthAttribute(16), new List(new string[16]) }; + } + protected override IEnumerable InvalidValues() { yield return new TestCase(new MaxLengthAttribute(12), "OverMaxLength"); yield return new TestCase(new MaxLengthAttribute(12), new byte[13]); - yield return new TestCase(new MaxLengthAttribute(12), new Collection(new byte[13])); - yield return new TestCase(new MaxLengthAttribute(12), new List(new byte[13])); yield return new TestCase(new MaxLengthAttribute(12), new int[4, 4]); } + protected static IEnumerable InvalidValues_ICollection() + { + yield return new object[] { new MaxLengthAttribute(12), new Collection(new byte[13]) }; + yield return new object[] { new MaxLengthAttribute(12), new List(new byte[13]) }; + } + [Fact] public static void Ctor() { @@ -57,6 +65,34 @@ public static void Ctor_Int(int length) Assert.Equal(length, new MaxLengthAttribute(length).Length); } + [Theory] + [MemberData(nameof(ValidValues_ICollection))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "MaxLengthAttribute in the .NET Framework doesn't support ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetCore_Valid(MaxLengthAttribute attribute, object value) + { + attribute.Validate(value, new ValidationContext(new object())); + Assert.True(attribute.IsValid(value)); + } + + [Theory] + [MemberData(nameof(InvalidValues_ICollection))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "MaxLengthAttribute in the .NET Framework doesn't support ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetCore_Invalid(MaxLengthAttribute attribute, object value) + { + Assert.Throws(() => attribute.Validate(value, new ValidationContext(new object()))); + Assert.False(attribute.IsValid(value)); + } + + [Theory] + [MemberData(nameof(ValidValues_ICollection))] + [MemberData(nameof(InvalidValues_ICollection))] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "MaxLengthAttribute in the .NET Core supports ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetFx_ThrowsInvalidCastException(MaxLengthAttribute attribute, object value) + { + Assert.Throws(() => attribute.Validate(value, new ValidationContext(new object()))); + Assert.Throws(() => attribute.IsValid(value)); + } + [Theory] [InlineData(0)] [InlineData(-10)] diff --git a/src/System.ComponentModel.Annotations/tests/MinLengthAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/MinLengthAttributeTests.cs index 6844491c8394..5f9fafe76be8 100644 --- a/src/System.ComponentModel.Annotations/tests/MinLengthAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/MinLengthAttributeTests.cs @@ -20,26 +20,33 @@ protected override IEnumerable ValidValues() yield return new TestCase(new MinLengthAttribute(0), new int[0]); yield return new TestCase(new MinLengthAttribute(12), new int[14]); yield return new TestCase(new MinLengthAttribute(16), new string[16]); + } - yield return new TestCase(new MinLengthAttribute(0), new Collection(new int[0])); - yield return new TestCase(new MinLengthAttribute(12), new Collection(new int[14])); - yield return new TestCase(new MinLengthAttribute(16), new Collection(new string[16])); + protected static IEnumerable ValidValues_ICollection() + { + yield return new object[] { new MinLengthAttribute(0), new Collection(new int[0]) }; + yield return new object[] { new MinLengthAttribute(12), new Collection(new int[14]) }; + yield return new object[] { new MinLengthAttribute(16), new Collection(new string[16]) }; - yield return new TestCase(new MinLengthAttribute(0), new List(new int[0])); - yield return new TestCase(new MinLengthAttribute(12), new List(new int[14])); - yield return new TestCase(new MinLengthAttribute(16), new List(new string[16])); + yield return new object[] { new MinLengthAttribute(0), new List(new int[0]) }; + yield return new object[] { new MinLengthAttribute(12), new List(new int[14]) }; + yield return new object[] { new MinLengthAttribute(16), new List(new string[16]) }; } protected override IEnumerable InvalidValues() { yield return new TestCase(new MinLengthAttribute(15), "UnderMinLength"); yield return new TestCase(new MinLengthAttribute(15), new byte[14]); - yield return new TestCase(new MinLengthAttribute(15), new Collection(new byte[14])); - yield return new TestCase(new MinLengthAttribute(15), new List(new byte[14])); yield return new TestCase(new MinLengthAttribute(12), new int[3, 3]); } - + + protected static IEnumerable InvalidValues_ICollection() + { + yield return new object[] { new MinLengthAttribute(15), new Collection(new byte[14]) }; + yield return new object[] { new MinLengthAttribute(15), new List(new byte[14]) }; + } + [Theory] [InlineData(10)] [InlineData(0)] @@ -49,6 +56,34 @@ public static void Ctor(int length) Assert.Equal(length, new MinLengthAttribute(length).Length); } + [Theory] + [MemberData(nameof(ValidValues_ICollection))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "MinLengthAttribute in the .NET Framework doesn't support ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetCore_Valid(MinLengthAttribute attribute, object value) + { + attribute.Validate(value, new ValidationContext(new object())); + Assert.True(attribute.IsValid(value)); + } + + [Theory] + [MemberData(nameof(InvalidValues_ICollection))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "MinLengthAttribute in the .NET Framework doesn't support ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetCore_Invalid(MinLengthAttribute attribute, object value) + { + Assert.Throws(() => attribute.Validate(value, new ValidationContext(new object()))); + Assert.False(attribute.IsValid(value)); + } + + [Theory] + [MemberData(nameof(ValidValues_ICollection))] + [MemberData(nameof(InvalidValues_ICollection))] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "MinLengthAttribute in .NET Core supports ICollection.Count. See https://github.com/dotnet/corefx/issues/18361")] + public void Validate_ICollection_NetFx_ThrowsInvalidCastException(MinLengthAttribute attribute, object value) + { + Assert.Throws(() => attribute.Validate(value, new ValidationContext(new object()))); + Assert.Throws(() => attribute.IsValid(value)); + } + [Fact] public static void GetValidationResult_InvalidLength_ThrowsInvalidOperationException() { diff --git a/src/System.ComponentModel.Annotations/tests/PhoneAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/PhoneAttributeTests.cs index 304076a5bb9a..22348ea368c6 100644 --- a/src/System.ComponentModel.Annotations/tests/PhoneAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/PhoneAttributeTests.cs @@ -24,12 +24,6 @@ protected override IEnumerable ValidValues() yield return new TestCase(new PhoneAttribute(), "425-555-1212 ext.123"); yield return new TestCase(new PhoneAttribute(), "425-555-1212 ext. 123"); yield return new TestCase(new PhoneAttribute(), "1"); - yield return new TestCase(new PhoneAttribute(), "+4+2+5+-+5+5+5+-+1+2++1+2++"); - yield return new TestCase(new PhoneAttribute(), "425-555-1212 "); - yield return new TestCase(new PhoneAttribute(), " \r \n 1 \t "); - yield return new TestCase(new PhoneAttribute(), "1-.()"); - yield return new TestCase(new PhoneAttribute(), "(425555-1212"); - yield return new TestCase(new PhoneAttribute(), ")425555-1212"); } protected override IEnumerable InvalidValues() @@ -46,6 +40,20 @@ protected override IEnumerable InvalidValues() yield return new TestCase(new PhoneAttribute(), "425-555-1212 ext. xyz"); yield return new TestCase(new PhoneAttribute(), "-.()"); yield return new TestCase(new PhoneAttribute(), "ext.123 1"); + + // Certain invalid phone numbers are reported as valid with .NET core. + // The full .NET framework considers them invalid. This is likely a bug + // in .NET core. Seee https://github.com/dotnet/corefx/issues/17873. + // [ActiveIssue(17873)] + if (PlatformDetection.IsFullFramework) + { + yield return new TestCase(new PhoneAttribute(), "+4+2+5+-+5+5+5+-+1+2++1+2++"); + yield return new TestCase(new PhoneAttribute(), "425-555-1212 "); + yield return new TestCase(new PhoneAttribute(), " \r \n 1 \t "); + yield return new TestCase(new PhoneAttribute(), "1-.()"); + yield return new TestCase(new PhoneAttribute(), "(425555-1212"); + yield return new TestCase(new PhoneAttribute(), ")425555-1212"); + } } [Fact] diff --git a/src/System.ComponentModel.Annotations/tests/RangeAttributeTests.cs b/src/System.ComponentModel.Annotations/tests/RangeAttributeTests.cs index f2f9a9d3753f..243d8aeb173f 100644 --- a/src/System.ComponentModel.Annotations/tests/RangeAttributeTests.cs +++ b/src/System.ComponentModel.Annotations/tests/RangeAttributeTests.cs @@ -71,7 +71,6 @@ protected override IEnumerable InvalidValues() yield return new TestCase(stringIntRange, "0"); yield return new TestCase(stringIntRange, 4); yield return new TestCase(stringIntRange, "4"); - yield return new TestCase(stringIntRange, "abc"); yield return new TestCase(stringIntRange, new object()); // Implements IConvertible (throws NotSupportedException - is caught) yield return new TestCase(stringIntRange, new IConvertibleImplementor() { IntThrow = new NotSupportedException() }); @@ -81,12 +80,21 @@ protected override IEnumerable InvalidValues() yield return new TestCase(stringDoubleRange, (0.9999999).ToString()); yield return new TestCase(stringDoubleRange, 3.0000001); yield return new TestCase(stringDoubleRange, (3.0000001).ToString()); - yield return new TestCase(stringDoubleRange, "abc"); yield return new TestCase(stringDoubleRange, new object()); // Implements IConvertible (throws NotSupportedException - is caught) yield return new TestCase(stringDoubleRange, new IConvertibleImplementor() { DoubleThrow = new NotSupportedException() }); } + [Theory] + [InlineData(typeof(int), "1", "3")] + [InlineData(typeof(double), "1", "3")] + public static void Validate_CantConvertValueToTargetType_ThrowsException(Type type, string minimum, string maximum) + { + var attribute = new RangeAttribute(type, minimum, maximum); + Assert.Throws(() => attribute.Validate("abc", new ValidationContext(new object()))); + Assert.Throws(() => attribute.IsValid("abc")); + } + [Fact] public static void Ctor_Int_Int() { @@ -152,15 +160,21 @@ public static void Validate_MinimumOrMaximumNull_ThrowsInvalidOperationException RangeAttribute attribute = new RangeAttribute(typeof(int), minimum, maximum); Assert.Throws(() => attribute.Validate("Any", new ValidationContext(new object()))); } - [Theory] - [InlineData(typeof(DateTime), "Cannot Convert", "2014-03-19")] - [InlineData(typeof(DateTime), "2014-03-19", "Cannot Convert")] [InlineData(typeof(int), "Cannot Convert", "3")] [InlineData(typeof(int), "1", "Cannot Convert")] [InlineData(typeof(double), "Cannot Convert", "3")] [InlineData(typeof(double), "1", "Cannot Convert")] - public static void Validate_MinimumOrMaximumCantBeConvertedToType_ThrowsFormatException(Type type, string minimum, string maximum) + public static void Validate_MinimumOrMaximumCantBeConvertedToIntegralType_ThrowsException(Type type, string minimum, string maximum) + { + RangeAttribute attribute = new RangeAttribute(type, minimum, maximum); + Assert.Throws(() => attribute.Validate("Any", new ValidationContext(new object()))); + } + + [Theory] + [InlineData(typeof(DateTime), "Cannot Convert", "2014-03-19")] + [InlineData(typeof(DateTime), "2014-03-19", "Cannot Convert")] + public static void Validate_MinimumOrMaximumCantBeConvertedToDateTime_ThrowsFormatException(Type type, string minimum, string maximum) { RangeAttribute attribute = new RangeAttribute(type, minimum, maximum); Assert.Throws(() => attribute.Validate("Any", new ValidationContext(new object()))); @@ -188,7 +202,7 @@ public static void Validate_DoubleConversionOverflows_ThrowsOverflowException(do public static void Validate_IConvertibleThrowsCustomException_IsNotCaught() { RangeAttribute attribute = new RangeAttribute(typeof(int), "1", "1"); - Assert.Throws(() => attribute.Validate(new IConvertibleImplementor() { IntThrow = new ArithmeticException() }, new ValidationContext(new object()))); + Assert.Throws(() => attribute.Validate(new IConvertibleImplementor() { IntThrow = new ArithmeticException() }, new ValidationContext(new object()))); } } } diff --git a/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj b/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj index a06566c50679..cdc81889bc10 100644 --- a/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj +++ b/src/System.ComponentModel.Annotations/tests/System.ComponentModel.Annotations.Tests.csproj @@ -40,6 +40,9 @@ + + Common\System\PlatformDetection.cs + Common\System\AssertExtensions.cs From 03213410cd8047f848153b0bf8d87f6ae88fe110 Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Tue, 18 Apr 2017 21:07:48 -0700 Subject: [PATCH 205/336] Make System.Data more mono-friendly (#18525) * Make System.Data MONO-friendly * Remove System.Data.Common.ReadOnlyCollection, Move TdsParser static ctor to a separate file (in order to ignore it in mono) --- .../src/System/Data/Common/FieldNameLookup.cs | 2 +- .../src/System.Data.Common.csproj | 1 + .../Data/Common/DbConnectionOptions.Mono.cs | 28 +++ .../System/Data/Common/DbConnectionOptions.cs | 2 +- .../Data/Common/DbConnectionStringBuilder.cs | 3 +- .../DbConnectionStringBuilderDescriptor.cs | 82 ++++++++ .../Data/Common/DbConnectionStringCommon.cs | 180 ------------------ .../src/System.Data.SqlClient.csproj | 1 + .../Data/Common/DbConnectionStringCommon.cs | 1 + .../System/Data/SqlClient/SNI/SNITcpHandle.cs | 2 +- .../SqlClient/TdsParser.RegisterEncoding.cs | 20 ++ .../src/System/Data/SqlClient/TdsParser.cs | 9 - 12 files changed, 138 insertions(+), 193 deletions(-) create mode 100644 src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.Mono.cs create mode 100644 src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilderDescriptor.cs create mode 100644 src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.RegisterEncoding.cs diff --git a/src/Common/src/System/Data/Common/FieldNameLookup.cs b/src/Common/src/System/Data/Common/FieldNameLookup.cs index c4d7d892a219..eff3f869304c 100644 --- a/src/Common/src/System/Data/Common/FieldNameLookup.cs +++ b/src/Common/src/System/Data/Common/FieldNameLookup.cs @@ -26,7 +26,7 @@ public FieldNameLookup(System.Collections.ObjectModel.ReadOnlyCollection _defaultLocaleID = defaultLocaleID; } - public FieldNameLookup(DbDataReader reader, int defaultLocaleID) : base(reader) + public FieldNameLookup(IDataReader reader, int defaultLocaleID) : base(reader) { _defaultLocaleID = defaultLocaleID; } diff --git a/src/System.Data.Common/src/System.Data.Common.csproj b/src/System.Data.Common/src/System.Data.Common.csproj index d8dd33cd8b9f..b7a71c47280f 100644 --- a/src/System.Data.Common/src/System.Data.Common.csproj +++ b/src/System.Data.Common/src/System.Data.Common.csproj @@ -179,6 +179,7 @@ + diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.Mono.cs b/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.Mono.cs new file mode 100644 index 000000000000..4f0a63f760fb --- /dev/null +++ b/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.Mono.cs @@ -0,0 +1,28 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections; +using System.Collections.Generic; + +namespace System.Data.Common +{ + internal partial class DbConnectionOptions + { + protected DbConnectionOptions(string connectionString, Dictionary synonyms) + : this (connectionString, new Hashtable(synonyms), false) + { + } + + internal bool TryGetParsetableValue(string key, out string value) + { + if (_parsetable.ContainsKey(key)) + { + value = (string)_parsetable[key]; + return true; + } + value = null; + return false; + } + } +} \ No newline at end of file diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.cs b/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.cs index c87c87f52233..edf4a2497df4 100644 --- a/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.cs +++ b/src/System.Data.Common/src/System/Data/Common/DbConnectionOptions.cs @@ -10,7 +10,7 @@ namespace System.Data.Common { - internal class DbConnectionOptions + internal partial class DbConnectionOptions { // instances of this class are intended to be immutable, i.e readonly // used by pooling classes so it is easier to verify correctness diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilder.cs b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilder.cs index aebb13884a57..a2ca62b1daf7 100644 --- a/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilder.cs +++ b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilder.cs @@ -4,6 +4,7 @@ using System.Collections; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Globalization; @@ -237,7 +238,7 @@ public virtual ICollection Values values[i] = this[keylist.Current]; Debug.Assert(null != values[i], "null value " + keylist.Current); } - return new System.Data.Common.ReadOnlyCollection(values); + return new ReadOnlyCollection(values); } } diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilderDescriptor.cs b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilderDescriptor.cs new file mode 100644 index 000000000000..049eed77a227 --- /dev/null +++ b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringBuilderDescriptor.cs @@ -0,0 +1,82 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.ComponentModel; + +namespace System.Data.Common +{ + internal class DbConnectionStringBuilderDescriptor : PropertyDescriptor + { + internal DbConnectionStringBuilderDescriptor(string propertyName, Type componentType, Type propertyType, bool isReadOnly, Attribute[] attributes) : base(propertyName, attributes) + { + ComponentType = componentType; + PropertyType = propertyType; + IsReadOnly = isReadOnly; + } + + internal bool RefreshOnChange { get; set; } + public override Type ComponentType { get; } + public override bool IsReadOnly { get; } + public override Type PropertyType { get; } + + public override bool CanResetValue(object component) + { + DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); + return ((null != builder) && builder.ShouldSerialize(DisplayName)); + } + + public override object GetValue(object component) + { + DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); + if (null != builder) + { + object value; + if (builder.TryGetValue(DisplayName, out value)) + { + return value; + } + } + return null; + } + + public override void ResetValue(object component) + { + DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); + if (null != builder) + { + builder.Remove(DisplayName); + + if (RefreshOnChange) + { + builder.ClearPropertyDescriptors(); + } + } + } + + public override void SetValue(object component, object value) + { + DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); + if (null != builder) + { + // via the editor, empty string does a defacto Reset + if ((typeof(string) == PropertyType) && string.Empty.Equals(value)) + { + value = null; + } + builder[DisplayName] = value; + + if (RefreshOnChange) + { + builder.ClearPropertyDescriptors(); + } + } + } + + public override bool ShouldSerializeValue(object component) + { + DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); + return ((null != builder) && builder.ShouldSerialize(DisplayName)); + } + } +} diff --git a/src/System.Data.Common/src/System/Data/Common/DbConnectionStringCommon.cs b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringCommon.cs index 4f37df43f6a2..47d0383f977e 100644 --- a/src/System.Data.Common/src/System/Data/Common/DbConnectionStringCommon.cs +++ b/src/System.Data.Common/src/System/Data/Common/DbConnectionStringCommon.cs @@ -4,191 +4,11 @@ using System.Collections; using System.Collections.Generic; -using System.ComponentModel; using System.Diagnostics; using System.Globalization; namespace System.Data.Common { - internal class DbConnectionStringBuilderDescriptor : PropertyDescriptor - { - internal DbConnectionStringBuilderDescriptor(string propertyName, Type componentType, Type propertyType, bool isReadOnly, Attribute[] attributes) : base(propertyName, attributes) - { - ComponentType = componentType; - PropertyType = propertyType; - IsReadOnly = isReadOnly; - } - - internal bool RefreshOnChange { get; set; } - public override Type ComponentType { get; } - public override bool IsReadOnly { get; } - public override Type PropertyType { get; } - - public override bool CanResetValue(object component) - { - DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); - return ((null != builder) && builder.ShouldSerialize(DisplayName)); - } - - public override object GetValue(object component) - { - DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); - if (null != builder) - { - object value; - if (builder.TryGetValue(DisplayName, out value)) - { - return value; - } - } - return null; - } - - public override void ResetValue(object component) - { - DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); - if (null != builder) - { - builder.Remove(DisplayName); - - if (RefreshOnChange) - { - builder.ClearPropertyDescriptors(); - } - } - } - - public override void SetValue(object component, object value) - { - DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); - if (null != builder) - { - // via the editor, empty string does a defacto Reset - if ((typeof(string) == PropertyType) && string.Empty.Equals(value)) - { - value = null; - } - builder[DisplayName] = value; - - if (RefreshOnChange) - { - builder.ClearPropertyDescriptors(); - } - } - } - - public override bool ShouldSerializeValue(object component) - { - DbConnectionStringBuilder builder = (component as DbConnectionStringBuilder); - return ((null != builder) && builder.ShouldSerialize(DisplayName)); - } - } - - [Serializable] - internal sealed class ReadOnlyCollection : ICollection, ICollection - { - private T[] _items; - - internal ReadOnlyCollection(T[] items) - { - _items = items; -#if DEBUG - for (int i = 0; i < items.Length; ++i) - { - Debug.Assert(null != items[i], "null item"); - } -#endif - } - - public void CopyTo(T[] array, int arrayIndex) - { - Array.Copy(_items, 0, array, arrayIndex, _items.Length); - } - - void ICollection.CopyTo(Array array, int arrayIndex) - { - Array.Copy(_items, 0, array, arrayIndex, _items.Length); - } - - - IEnumerator IEnumerable.GetEnumerator() - { - return new Enumerator(_items); - } - - public IEnumerator GetEnumerator() - { - return new Enumerator(_items); - } - - bool ICollection.IsSynchronized - { - get { return false; } - } - - object ICollection.SyncRoot - { - get { return _items; } - } - - bool ICollection.IsReadOnly - { - get { return true; } - } - - void ICollection.Add(T value) - { - throw new NotSupportedException(); - } - - void ICollection.Clear() - { - throw new NotSupportedException(); - } - - bool ICollection.Contains(T value) - { - return Array.IndexOf(_items, value) >= 0; - } - - bool ICollection.Remove(T value) - { - throw new NotSupportedException(); - } - - public int Count - { - get { return _items.Length; } - } - - [Serializable] - internal struct Enumerator : IEnumerator, IEnumerator - { - // based on List.Enumerator - private K[] _items; - private int _index; - - internal Enumerator(K[] items) - { - _items = items; - _index = -1; - } - - public void Dispose() { } - - public bool MoveNext() => (++_index < _items.Length); - - public K Current => _items[_index]; - - object IEnumerator.Current => _items[_index]; - - void IEnumerator.Reset() - { - _index = -1; - } - } - } - internal static class DbConnectionStringBuilderUtil { internal static bool ConvertToBoolean(object value) diff --git a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj index faeafed050ee..357055479f6c 100644 --- a/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj +++ b/src/System.Data.SqlClient/src/System.Data.SqlClient.csproj @@ -135,6 +135,7 @@ + diff --git a/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionStringCommon.cs b/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionStringCommon.cs index 3f791b96eccd..d5562f46f7e5 100644 --- a/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionStringCommon.cs +++ b/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionStringCommon.cs @@ -297,6 +297,7 @@ internal static class DbConnectionStringKeywords internal const string DataSource = "Data Source"; internal const string IntegratedSecurity = "Integrated Security"; internal const string Password = "Password"; + internal const string Driver = "Driver"; internal const string PersistSecurityInfo = "Persist Security Info"; internal const string UserID = "User ID"; diff --git a/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs b/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs index c68f0e401a5c..0048933f4f35 100644 --- a/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs +++ b/src/System.Data.SqlClient/src/System/Data/SqlClient/SNI/SNITcpHandle.cs @@ -110,7 +110,7 @@ public SNITCPHandle(string serverName, int port, long timerExpire, object callba try { - TimeSpan ts; + TimeSpan ts = default(TimeSpan); // In case the Timeout is Infinite, we will receive the max value of Int64 as the tick count // The infinite Timeout is a function of ConnectionString Timeout=0 diff --git a/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.RegisterEncoding.cs b/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.RegisterEncoding.cs new file mode 100644 index 000000000000..cfdc8ce3cc9b --- /dev/null +++ b/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.RegisterEncoding.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Text; + +namespace System.Data.SqlClient +{ + internal sealed partial class TdsParser + { + static TdsParser() + { + // For CoreCLR, we need to register the ANSI Code Page encoding provider before attempting to get an Encoding from a CodePage + // For a default installation of SqlServer the encoding exchanged during Login is 1252. This encoding is not loaded by default + // See Remarks at https://msdn.microsoft.com/en-us/library/system.text.encodingprovider(v=vs.110).aspx + // SqlClient needs to register the encoding providers to make sure that even basic scenarios work with Sql Server. + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + } + } +} \ No newline at end of file diff --git a/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs b/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs index a632c0d0eaf9..ecba744ed54d 100644 --- a/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs +++ b/src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs @@ -34,15 +34,6 @@ internal struct SNIErrorDetails // and surfacing objects to the user. internal sealed partial class TdsParser { - static TdsParser() - { - // For CoreCLR, we need to register the ANSI Code Page encoding provider before attempting to get an Encoding from a CodePage - // For a default installation of SqlServer the encoding exchanged during Login is 1252. This encoding is not loaded by default - // See Remarks at https://msdn.microsoft.com/en-us/library/system.text.encodingprovider(v=vs.110).aspx - // SqlClient needs to register the encoding providers to make sure that even basic scenarios work with Sql Server. - Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); - } - // Default state object for parser internal TdsParserStateObject _physicalStateObj = null; // Default stateObj and connection for Dbnetlib and non-MARS SNI. From fb74c60aa5c70ad38303986b71d994127c03deb8 Mon Sep 17 00:00:00 2001 From: Matt Galbraith Date: Tue, 18 Apr 2017 22:40:42 -0700 Subject: [PATCH 206/336] Remove usage of 'SilverlightExtension' AssemblyKey Temporarily until Microbuild knows the key, to unblock official build. --- src/System.Json/src/System.Json.csproj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/System.Json/src/System.Json.csproj b/src/System.Json/src/System.Json.csproj index 4f12ea9374e1..0d1a12940a63 100644 --- a/src/System.Json/src/System.Json.csproj +++ b/src/System.Json/src/System.Json.csproj @@ -6,7 +6,9 @@ - SilverlightExtension + @@ -33,4 +35,4 @@ - \ No newline at end of file + From 70e1f494e0d47f440bdb6a1bf871859af9fa10dc Mon Sep 17 00:00:00 2001 From: JimboWei Date: Wed, 19 Apr 2017 13:50:38 +0800 Subject: [PATCH 207/336] Add two desktop test cases and some reference files for DataContractSerializer test (#18259) * Add test case and reference files for DataContractSerializer * Format and remove useless code for new DataContractSerializer cases * Set expected value to test baseline and remove repeat code to similar scenarios for DataContractSerializer test * Update the code and remove unnecessary code in these cases * Rename the namespace to SerializationTestTypes and format the code --- .../tests/DataContractSerializer.cs | 74 ++- .../tests/MyResolver.cs | 57 -- ...ialization.Xml.ReflectionOnly.Tests.csproj | 5 + .../ComparisonHelper.cs | 579 ++++++++++++++++++ .../SerializationTestTypes/DCRSampleType.cs | 296 +++++++++ .../SerializationTestTypes/DCRTypeLibrary.cs | 30 + .../DataContractResolverLibrary.cs | 89 +++ .../SerializationTestTypes/Primitives.cs | 83 +++ .../tests/SerializationTypes.cs | 57 -- ...tem.Runtime.Serialization.Xml.Tests.csproj | 5 + 10 files changed, 1150 insertions(+), 125 deletions(-) create mode 100644 src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/ComparisonHelper.cs create mode 100644 src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRSampleType.cs create mode 100644 src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRTypeLibrary.cs create mode 100644 src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DataContractResolverLibrary.cs create mode 100644 src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/Primitives.cs diff --git a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index be6219caaec4..3719eeb8c085 100644 --- a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -2775,21 +2775,23 @@ public static void DCS_TypeWithDelegate() Assert.Equal(value.IntProperty, actual.IntProperty); } + #region DesktopTest + [Fact] public static void DCS_ResolveNameReturnsEmptyNamespace() { - EmptyNsContainer instance = new EmptyNsContainer(new EmptyNSAddress()); + SerializationTestTypes.EmptyNsContainer instance = new SerializationTestTypes.EmptyNsContainer(new SerializationTestTypes.EmptyNSAddress()); var settings = new DataContractSerializerSettings() { MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; - string baseline1 = @"P1
downing street
"; - EmptyNsContainer result = SerializeAndDeserialize(instance, baseline1, settings); + string baseline1 = @"P1
downing street
"; + var result = SerializeAndDeserialize(instance, baseline1, settings); Assert.True(result.address == null, "Address not null"); - settings = new DataContractSerializerSettings() { DataContractResolver = new EmptyNamespaceResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; + settings = new DataContractSerializerSettings() { DataContractResolver = new SerializationTestTypes.EmptyNamespaceResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; result = SerializeAndDeserialize(instance, baseline1, settings); Assert.True(result.address == null, "Address not null"); - instance = new EmptyNsContainer(new UknownEmptyNSAddress()); - string baseline2 = @"P1
downing street
"; + instance = new SerializationTestTypes.EmptyNsContainer(new SerializationTestTypes.UknownEmptyNSAddress()); + string baseline2 = @"P1
downing street
"; result = SerializeAndDeserialize(instance, baseline2, settings); Assert.True(result.address == null, "Address not null"); } @@ -2797,19 +2799,69 @@ public static void DCS_ResolveNameReturnsEmptyNamespace() [Fact] public static void DCS_ResolveDatacontractBaseType() { - Customer customerInstance = new PreferredCustomerProxy(); + SerializationTestTypes.Customer customerInstance = new SerializationTestTypes.PreferredCustomerProxy(); Type customerBaseType = customerInstance.GetType().BaseType; - var settings = new DataContractSerializerSettings() { DataContractResolver = new ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = true }; - string baseline1 = @""; + var settings = new DataContractSerializerSettings() { DataContractResolver = new SerializationTestTypes.ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = true }; + string baseline1 = @""; object result = SerializeAndDeserialize(customerInstance, baseline1, settings); Assert.Equal(customerBaseType, result.GetType()); - settings = new DataContractSerializerSettings() { DataContractResolver = new ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; - string baseline2 = @""; + settings = new DataContractSerializerSettings() { DataContractResolver = new SerializationTestTypes.ProxyDataContractResolver(), MaxItemsInObjectGraph = int.MaxValue, IgnoreExtensionDataObject = false, PreserveObjectReferences = false }; + string baseline2 = @""; result = SerializeAndDeserialize(customerInstance, baseline2, settings); Assert.Equal(customerBaseType, result.GetType()); } + /// + /// Roundtrips a Datacontract type which contains Primitive types assigned to member of type object. + /// Resolver is plugged in and resolves the primitive types. Verify resolver called during ser and deser + /// + [Fact] + public static void DCS_BasicRoundTripResolvePrimitiveTypes() + { + var dataContractSerializerSettings = new DataContractSerializerSettings() + { + DataContractResolver = new SerializationTestTypes.PrimitiveTypeResolver(), + IgnoreExtensionDataObject = false, + KnownTypes = null, + MaxItemsInObjectGraph = int.MaxValue, + PreserveObjectReferences = false + }; + + string baseline = @"<_data i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com"">false25506553579228162514264337593543950335-19999-12-31T23:59:59.9999999-792281625142643375935439503354bc848b1-a541-40bf-8aa9-dd6ccb6d0e5610004.94065645841247E-3241.7976931348623157E+308-1.7976931348623157E+3089999-12-31T23:59:59.9999999Z0NaN

-INF

INF01.401298E-45-3.40282347E+38P10675199DT2H48M5.4775807S3.40282347E+38http://www.microsoft.com/NaN-INFINFb:WCF02147483647-214748364809223372036854775807-92233720368547758080127-128032767-32768abc06553500429496729500184467440737095516150AQIDBA==<_data2 i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com"">false25506553579228162514264337593543950335-19999-12-31T23:59:59.9999999-792281625142643375935439503354bc848b1-a541-40bf-8aa9-dd6ccb6d0e5610004.94065645841247E-3241.7976931348623157E+308-1.7976931348623157E+3089999-12-31T23:59:59.9999999Z0NaN

-INF

INF01.401298E-45-3.40282347E+38P10675199DT2H48M5.4775807S3.40282347E+38http://www.microsoft.com/NaN-INFINFb:WCF02147483647-214748364809223372036854775807-92233720368547758080127-128032767-32768abc06553500429496729500184467440737095516150AQIDBA==
"; + var value = new SerializationTestTypes.ObjectContainer(new SerializationTestTypes.PrimitiveContainer()); + + var actual = SerializeAndDeserialize(value, baseline, dataContractSerializerSettings); + // Throw Exception when verification failed + SerializationTestTypes.ComparisonHelper.CompareRecursively(value, actual); + } + + /// + /// Roundtrip Datacontract types which contains members of type enum and struct. + /// Some enums are resolved by Resolver and others by the KT attribute. + /// Enum and struct members are of base enum type and ValueTyperespecitively + /// + [Fact] + public static void DCS_BasicRoundTripResolveEnumStructTypes() + { + var dataContractSerializerSettings = new DataContractSerializerSettings() + { + DataContractResolver = new SerializationTestTypes.PrimitiveTypeResolver(), + IgnoreExtensionDataObject = false, + KnownTypes = null, + MaxItemsInObjectGraph = int.MaxValue, + PreserveObjectReferences = false + }; + + string baseline = @"<_data i:type=""a:EnumStructContainer"" xmlns:a=""http://www.default.com"">redblackblueAutumnSpring1000<_data2 i:type=""a:EnumStructContainer"" xmlns:a=""http://www.default.com"">redblackblueAutumnSpring1000"; + var value = new SerializationTestTypes.ObjectContainer(new SerializationTestTypes.EnumStructContainer()); + + var actual = SerializeAndDeserialize(value, baseline, dataContractSerializerSettings); + SerializationTestTypes.ComparisonHelper.CompareRecursively(value, actual); + } + + #endregion + private static T SerializeAndDeserialize(T value, string baseline, DataContractSerializerSettings settings = null, Func serializerFactory = null, bool skipStringCompare = false) { DataContractSerializer dcs; diff --git a/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs b/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs index 4267d688096e..dcf969f8ac7e 100644 --- a/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs +++ b/src/System.Runtime.Serialization.Xml/tests/MyResolver.cs @@ -24,60 +24,3 @@ public override bool TryResolveType(Type type, Type declaredType, DataContractRe return knownTypeResolver.TryResolveType(type, declaredType, null, out typeName, out typeNamespace); } } - -public class EmptyNamespaceResolver : DataContractResolver -{ - public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) - { - XmlDictionary dic = new XmlDictionary(); - if (dataContractType == typeof(EmptyNsContainer)) - { - typeName = dic.Add("EmptyNsContainer"); - typeNamespace = dic.Add("MyNamespace"); - return true; - } - else if (dataContractType == typeof(UknownEmptyNSAddress)) - { - typeName = dic.Add("AddressFoo"); - typeNamespace = dic.Add(""); - return true; - } - else - { - return knownTypeResolver.TryResolveType(dataContractType, declaredType, null, out typeName, out typeNamespace); - } - } - - public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) - { - if (typeNamespace == "MyNamespace") - { - switch (typeName) - { - case "EmptyNsContainer": - return typeof(EmptyNsContainer); - } - } - else if (typeName.Equals("AddressFoo")) - { - return typeof(UknownEmptyNSAddress); - } - - return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); - } -} - -[Serializable] -public class ProxyDataContractResolver : DataContractResolver -{ - public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) - { - return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); - } - - public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) - { - Type actualDataContractType = dataContractType.Name.EndsWith("Proxy") ? dataContractType.BaseType : dataContractType; - return knownTypeResolver.TryResolveType(actualDataContractType, declaredType, null, out typeName, out typeNamespace); - } -} diff --git a/src/System.Runtime.Serialization.Xml/tests/ReflectionOnly/System.Runtime.Serialization.Xml.ReflectionOnly.Tests.csproj b/src/System.Runtime.Serialization.Xml/tests/ReflectionOnly/System.Runtime.Serialization.Xml.ReflectionOnly.Tests.csproj index 5b5e701af3f5..42234000bfdb 100644 --- a/src/System.Runtime.Serialization.Xml/tests/ReflectionOnly/System.Runtime.Serialization.Xml.ReflectionOnly.Tests.csproj +++ b/src/System.Runtime.Serialization.Xml/tests/ReflectionOnly/System.Runtime.Serialization.Xml.ReflectionOnly.Tests.csproj @@ -24,6 +24,11 @@ + + + + + CommonTest\System\PlatformDetection.cs diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/ComparisonHelper.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/ComparisonHelper.cs new file mode 100644 index 000000000000..92ef79fdd89b --- /dev/null +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/ComparisonHelper.cs @@ -0,0 +1,579 @@ +using System; +using System.Collections; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.Serialization; +using System.Xml; +using System.Xml.Serialization; + +namespace SerializationTestTypes +{ + public enum ComparisionType + { + DCS, + POCO + } + + #region ComparisionType passed as parameter + + /// + /// A type which does not have DataContract,MessageContract,Serializable,does not implements ISerializable or does not implement IXmlSerializable is considered a POCO type + /// While comparing POCO types, Non-public, readonly fields, ReadOnly/ WriteOnly properties and Non-public properties are ignored + /// + public static class ComparisonHelper + { + private const string LogMessage = "Comparing Type = {0} & Value = {1} with Type {2} & Value = {3}"; + + public static void CompareRecursively(object originalData, object deserializedData, bool approxComparisonForFloatingPointAnd64BitValues = false) + { + ComparisionType cmpType = ComparisionType.DCS; + SerializationMechanism att = ComparisonHelper.GetSerializationMechanism(originalData); + if (att.Equals(SerializationMechanism.POCO)) + { + cmpType = ComparisionType.POCO; + } + ComparisonHelper.CompareData(originalData, deserializedData, att, cmpType); + } + + private static SerializationMechanism GetSerializationMechanism(object data) + { + if (data == null) return SerializationMechanism.POCO; + SerializationMechanism att = SerializationMechanism.POCO; + + bool hasDataContractAttribute = data.GetType().GetCustomAttributes(typeof(DataContractAttribute), false).Length > 0; + bool hasSerializableAttribute = data.GetType().IsSerializable; + bool hasISerializable = typeof(ISerializable).IsAssignableFrom(data.GetType()); + bool hasIXmlSerializable = typeof(IXmlSerializable).IsAssignableFrom(data.GetType()); + + if ( + (!hasDataContractAttribute) && + (!hasISerializable) && + (!hasIXmlSerializable) && + (!hasSerializableAttribute) + ) + { + att = SerializationMechanism.POCO; + } + else + { + if (hasDataContractAttribute || hasIXmlSerializable) + { + att = SerializationMechanism.DataContractAttribute; + } + //CollectionDataContract is handled as part of DataContract containerTypeAttribute + if (data.GetType().GetCustomAttributes(typeof(CollectionDataContractAttribute), false).Length > 0) + { + hasDataContractAttribute = true; + } + + //ISerializable interface is handled as part of Serializable containerTypeAttribute + //since if a type implements ISerializable it must be marked with [Serializable] attribute + if (data.GetType().GetInterface("ISerializable") != null) + { + hasSerializableAttribute = true; + } + + if (hasDataContractAttribute && hasISerializable) + { + att = SerializationMechanism.DataContractAttribute; + } + else if (hasDataContractAttribute == true && hasISerializable == false) + { + att = SerializationMechanism.DataContractAttribute; + } + else if (hasDataContractAttribute == false && (hasISerializable == true || hasSerializableAttribute == true)) + { + att = SerializationMechanism.SerializableAttribute; + } + } + + return att; + } + + /// + /// Throws an exception if mismatch is found + /// + /// + /// + private static void CompareData(object originalData, object deserializedData, SerializationMechanism containerTypeAttribute, ComparisionType cmpType) + { + if (originalData == null) // both are null, comparison succeeded + { + return; + } + + if (originalData.GetType().Name.Equals(typeof(System.Runtime.Serialization.ExtensionDataObject).Name)) + { + return; + } + + //Fail if only one of the objects is null + if ((null == originalData) != (null == deserializedData)) + { + String message = String.Format("Comparision failed: Original data is {0}, deserialized data is {1}", + originalData == null ? "null" : "not null", deserializedData == null ? "null" : "not null"); + + if (originalData != null) + { + message += String.Format("Contents of Original data are {0}", originalData.ToString()); + } + if (deserializedData != null) + { + message += String.Format("Contents of Deserialized data are {0}", deserializedData.ToString()); + } + throw new Exception(message); + } + + if (originalData is IObjectReference) + { + //All IObjectReference types implement Equals method which compares the object returned by GetRealObject method + bool result = originalData.Equals(deserializedData); + if (!result) + { + throw new Exception("Comparision failed for type " + originalData.GetType().Name); + } + return; + } + + //Return false if the type of the object is not same + Type originalDataType = originalData.GetType(); + Type deserializedDataType = deserializedData.GetType(); + + if (!originalDataType.Equals(deserializedDataType)) + { + throw new Exception(String.Format("Comparision failed : Original type {0} not same as deserialized type {1}", originalDataType.ToString(), deserializedDataType.ToString())); + } + + object[] dataContractAttributes = originalDataType.GetCustomAttributes(typeof(DataContractAttribute), false); + if (dataContractAttributes != null && dataContractAttributes.Length > 0) + { + DataContractAttribute dataContractAttribute = (DataContractAttribute)dataContractAttributes[0]; + if (dataContractAttribute.IsReference) + { + return; + } + } + + MethodInfo equalsMethod = originalDataType.GetMethod("Equals", new Type[] { typeof(object) }); + + #region "new object()" + if (originalDataType == typeof(object)) + { + return; // deserializedDataType == object as well; objects should be the same + } + #endregion + + #region String type + else if (originalDataType.Equals(typeof(System.String))) + { + if (!originalData.Equals(deserializedData)) + { + throw new Exception(String.Format("Comparision failed: Original string data {0} is not same as deserialized string data {1}", originalData, deserializedData)); + } + } + #endregion + + #region XML types + else if (originalDataType.Equals(typeof(XmlElement)) || + originalDataType.Equals(typeof(XmlNode))) + { + string originalDataXml = ((XmlNode)originalData).InnerXml; + string deserializedDataXml = ((XmlNode)deserializedData).InnerXml; + Trace.WriteLine(String.Format(LogMessage, originalDataType, originalDataXml, deserializedDataType, deserializedDataXml)); + if (!originalDataXml.Equals(deserializedDataXml)) + { + throw new Exception(String.Format("Comparision failed: Original XML data ({0}) is not the same as the deserialized XML data ({1})", + originalDataXml, deserializedDataXml)); + } + } + #endregion + + #region Special types + else if (originalDataType == typeof(DBNull)) + { + // only 1 possible value, DBNull.Value + if ((((DBNull)originalData) == DBNull.Value) != (((DBNull)deserializedData) == DBNull.Value)) + { + throw new Exception(String.Format("Different instances of DBNull: original={0}, deserialized={1}", originalData, deserializedData)); + } + } + else if (originalDataType.Equals(typeof(DateTime))) + { + if (!(((DateTime)originalData).ToUniversalTime().Equals(((DateTime)deserializedData).ToUniversalTime()))) + { + throw new Exception(String.Format("Comparision failed: Original Datetime ticks {0} is not same as deserialized Datetime ticks {1}", ((DateTime)originalData).Ticks.ToString(), ((DateTime)deserializedData).Ticks.ToString())); + } + } + else if ( + (originalDataType.Equals(typeof(TimeSpan))) + || (originalDataType.Equals(typeof(Uri))) + || (originalDataType.Equals(typeof(XmlQualifiedName))) + || (originalDataType.Equals(typeof(Guid))) + || (originalDataType.Equals(typeof(Decimal))) + || (originalDataType.Equals(typeof(DateTimeOffset))) + ) + { + if (!originalData.Equals(deserializedData)) + { + throw new Exception(String.Format("Comparision failed : Original type data {0} is not same as deserialized type data {1}", originalData.ToString(), deserializedData.ToString())); + } + } + + #endregion + + #region Value Types + + else if (originalDataType.IsValueType) + { + //Value types can be Primitive types, Structs, Enums, Bool, User Defined Structs + + #region Primitive Types + //Numeric types, bool + if (originalDataType.IsPrimitive) + { + bool different = !originalData.Equals(deserializedData); + if (different) + { + throw new Exception(String.Format("Comparision failed: Original primitive data {0} is not same as deserialized primitive data {1}", originalData.ToString(), deserializedData.ToString())); + } + } + #endregion + + #region Enum type + else if (originalDataType.IsEnum) + { + SerializationMechanism enumAttribute = GetSerializationMechanism(originalData); + + //Verify member is marked with EnumMember attribute and compare the value with the Value property of the enum + if (enumAttribute.Equals(SerializationMechanism.DataContractAttribute)) + { + if (ComparisonHelper.IsMemberMarkedWithEnumMember(originalData, cmpType)) + { + //Verify this will work for all scenarios + if (!originalData.ToString().Equals(deserializedData.ToString())) + { + throw new Exception(String.Format("Comparision failed: Original enum data {0} is not same as deserialized enum data {1}", originalData.ToString(), deserializedData.ToString())); + } + } + } + } + #endregion + + //If not a Primitive and Enum, it has to be a struct + #region User defined structs + else + { + #region Compare Fields + ComparisonHelper.CompareFields(originalData, deserializedData, containerTypeAttribute, cmpType); + #endregion + + #region Compare properties + ComparisonHelper.CompareProperties(originalData, deserializedData, containerTypeAttribute, cmpType); + #endregion + + } + #endregion + } + #endregion + + #region Types which know how to compare themselves + else if (equalsMethod.DeclaringType == originalData.GetType()) + { + // the type knows how to compare itself, we'll use it + if (!originalData.Equals(deserializedData)) + { + throw new Exception(String.Format("Comparision failed: Original type data {0} is not same as deserialized type data {1}", originalData.ToString(), deserializedData.ToString())); + } + } + #endregion + + #region IDictionary and IDictionary + //Compares generic as well as non-generic dictionary types + //Hashtables + else if (originalData is IDictionary) + { + if (deserializedData is IDictionary) + { + IDictionaryEnumerator originalDataEnum = ((IDictionary)originalData).GetEnumerator(); + IDictionaryEnumerator deserializedDataEnum = ((IDictionary)deserializedData).GetEnumerator(); + while (originalDataEnum.MoveNext()) + { + deserializedDataEnum.MoveNext(); + DictionaryEntry originalEntry = originalDataEnum.Entry; + DictionaryEntry deserializedEntry = deserializedDataEnum.Entry; + //Compare the keys and then the values + CompareData(originalEntry.Key, deserializedEntry.Key, containerTypeAttribute, cmpType); + CompareData(originalEntry.Value, deserializedEntry.Value, containerTypeAttribute, cmpType); + } + } + else + { + throw new Exception(String.Format("Comparision failed: Original IDictionary type {0} and deserialized IDictionary type {1} are not of same", originalDataType.GetType().ToString(), deserializedDataType.GetType().ToString())); + } + } + #endregion + + #region IEnumerable,IList,ICollection,IEnumerable,IList,ICollection + //Array,Lists,Queues,Stacks etc + else if (originalData is IEnumerable) + { + IEnumerator originalDataEnumerator = ((IEnumerable)originalData).GetEnumerator(); + IEnumerator deserializedDataEnumerator = ((IEnumerable)deserializedData).GetEnumerator(); + if (null != originalDataEnumerator && null != deserializedDataEnumerator) + { + while (originalDataEnumerator.MoveNext()) + { + deserializedDataEnumerator.MoveNext(); + CompareData(originalDataEnumerator.Current, deserializedDataEnumerator.Current, containerTypeAttribute, cmpType); + } + } + else + { + throw new Exception(String.Format("Comparision failed: Original type {0} and deserialized type {1} are not IEnumerable", originalDataType.GetType().ToString(), deserializedDataType.GetType().ToString())); + } + } + + #endregion + + #region Class + else if (originalDataType.IsClass) + { + #region Compare Fields + ComparisonHelper.CompareFields(originalData, deserializedData, containerTypeAttribute, cmpType); + #endregion + + #region Compare properties + ComparisonHelper.CompareProperties(originalData, deserializedData, containerTypeAttribute, cmpType); + #endregion + } + #endregion + } + + private static bool IsMemberMarkedWithEnumMember(object data, ComparisionType cmpType) + { + bool isEnumMember = false; + //Non-public members are not serialized for POCO types + BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static; + if (cmpType.Equals(ComparisionType.DCS)) + { + flag = flag | BindingFlags.NonPublic; + } + + FieldInfo info = data.GetType().GetField(data.ToString(), flag); + if (null != info) + { + isEnumMember = info.GetCustomAttributes(typeof(EnumMemberAttribute), false).Length > 0; + } + return isEnumMember; + } + + + /// + /// Iterates through the properties and invokes compare method + /// + /// + /// + /// + private static void CompareProperties(object originalData, object deserializedData, SerializationMechanism containerTypeAttribute, ComparisionType cmpType) + { + BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static; + //Include private fields for DCS types + if (cmpType.Equals(ComparisionType.DCS)) + { + flag = flag | BindingFlags.NonPublic; + } + + foreach (System.Reflection.PropertyInfo property in originalData.GetType().GetProperties(flag)) + { + object newData = property.GetValue(originalData, null); + SerializationMechanism fieldAttribute = ComparisonHelper.GetSerializationMechanism(newData); + if (cmpType.Equals(ComparisionType.DCS)) + { + if (containerTypeAttribute.Equals(SerializationMechanism.DataContractAttribute)) + { + if ( + (property.GetCustomAttributes(typeof(DataMemberAttribute), false).Length > 0) + || + (property.GetCustomAttributes(typeof(EnumMemberAttribute), false).Length > 0) + ) + { + //Pass attribute of the complex type for furthur evaluation + if (IsComplexType(newData)) + { + CompareData(newData, property.GetValue(deserializedData, null), fieldAttribute, cmpType); + } + else //Is a simple type + { + CompareData(newData, property.GetValue(deserializedData, null), containerTypeAttribute, cmpType); + } + } + } + else if (containerTypeAttribute.Equals(SerializationMechanism.SerializableAttribute)) + { + if (property.GetCustomAttributes(typeof(NonSerializedAttribute), false).Length == 0) + { + //Pass attribute of the complex type for furthur evaluation + if (IsComplexType(newData)) + { + CompareData(newData, property.GetValue(deserializedData, null), fieldAttribute, cmpType); + } + else //Is a simple type, so pass Parents attribute + { + CompareData(newData, property.GetValue(deserializedData, null), containerTypeAttribute, cmpType); + } + } + } + } + else if (cmpType.Equals(ComparisionType.POCO)) + { + //Ignore member with [IgnoreDataMember] attribute on a POCO type + if (property.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), false).Length == 0) + { + //On POCO types, Properties which have both getter and setter will be serialized otherwise ignored + if (property.CanRead && property.CanWrite) + { + //Pass attribute of the complex type for furthur evaluation + if (IsComplexType(newData)) + { + CompareData(newData, property.GetValue(deserializedData, null), fieldAttribute, cmpType); + } + else //Is a simple type, so pass Parents attribute + { + CompareData(newData, property.GetValue(deserializedData, null), containerTypeAttribute, cmpType); + } + } + else if (property.CanRead && !property.CanWrite) //Get-Only collection + { + //Pass attribute of the complex type for furthur evaluation + if (IsComplexType(newData)) + { + CompareData(newData, property.GetValue(deserializedData, null), fieldAttribute, cmpType); + } + else //Is a simple type, so pass Parents attribute + { + CompareData(newData, property.GetValue(deserializedData, null), containerTypeAttribute, cmpType); + } + } + } + } + } + } + + /// + /// + /// + /// + public static bool IsComplexType(object data) + { + bool complexType = false; + if (data == null) return false; + if ( + ((data.GetType().IsValueType) + && + (!data.GetType().IsPrimitive) + && + (!data.GetType().IsEnum)) + || + ((data.GetType().IsClass) + && + (!(data.GetType().Equals(typeof(System.String))) + )) + ) + { + complexType = true; + } + return complexType; + } + + private static void CompareFields(object originalData, object deserializedData, SerializationMechanism containerTypeAttribute, ComparisionType cmpType) + { + //Compare fields + //Non-public members are not serialized for POCO types + BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static; + if (cmpType.Equals(ComparisionType.DCS)) + { + flag = flag | BindingFlags.NonPublic; + } + + foreach (System.Reflection.FieldInfo field in originalData.GetType().GetFields(flag)) + { + object newData = field.GetValue(originalData); + SerializationMechanism fieldAttribute = GetSerializationMechanism(newData); + if (cmpType.Equals(ComparisionType.DCS)) + { + if (containerTypeAttribute.Equals(SerializationMechanism.DataContractAttribute)) + { + if ( + (field.GetCustomAttributes(typeof(DataMemberAttribute), false).Length > 0) + || + (field.GetCustomAttributes(typeof(EnumMemberAttribute), false).Length > 0) + ) + { + //Pass attribute of the complex type for furthur evaluation + if (ComparisonHelper.IsComplexType(newData)) + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), fieldAttribute, cmpType); + } + else //Is a simple type + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), containerTypeAttribute, cmpType); + } + } + } + else if (containerTypeAttribute.Equals(SerializationMechanism.SerializableAttribute)) + { + //Do not compare [NonSerialized] members + if (!field.IsNotSerialized) + { + if (ComparisonHelper.IsComplexType(newData)) + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), fieldAttribute, cmpType); + } + else //Is a simple type + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), containerTypeAttribute, cmpType); + } + } + } + } + else if (cmpType.Equals(ComparisionType.POCO)) + { + //ReadOnly fields should be ignored for POCO type + //Ignore member with [IgnoreDataMember] attribute on a POCO type + if ((!field.IsInitOnly) && (field.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), false).Length == 0)) + { + if (ComparisonHelper.IsComplexType(newData)) + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), fieldAttribute, cmpType); + } + else //Is a simple type + { + ComparisonHelper.CompareData(field.GetValue(originalData), field.GetValue(deserializedData), containerTypeAttribute, cmpType); + } + } + } + } + } + + public static bool CompareDoubleApproximately(double d1, double d2) + { + if ((d1 < 0) != (d2 < 0)) return false; + d1 = Math.Abs(d1); + d2 = Math.Abs(d2); + double max = Math.Max(d1, d2); + double min = Math.Min(d1, d2); + if (min == 0) return (max == 0); + double difference = max - min; + double ratio = difference / min; + return (ratio < 0.0000001); + } + } + + public enum SerializationMechanism + { + POCO, + DataContractAttribute, + SerializableAttribute, + } + #endregion +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRSampleType.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRSampleType.cs new file mode 100644 index 000000000000..2efa75d709cb --- /dev/null +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRSampleType.cs @@ -0,0 +1,296 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Xml; + +namespace SerializationTestTypes +{ + [DataContract] + public class PrimitiveContainer + { + public PrimitiveContainer() + { + a = false; + b = Byte.MaxValue; + c = Byte.MinValue; + + //char + //datetime + e = Decimal.MaxValue; + f = Decimal.MinusOne; + g = Decimal.MinValue; + h = Decimal.One; + i = Decimal.Zero; + j = default(Decimal); + k = default(Double); + l = Double.Epsilon; + m = Double.MaxValue; + n = Double.MinValue; + o = Double.NaN; + p = Double.NegativeInfinity; + q = Double.PositiveInfinity; + r = default(Single); + s = Single.Epsilon; + t = Single.MinValue; + u = Single.MaxValue; + v = Single.NaN; + w = Single.NegativeInfinity; + x = Single.PositiveInfinity; + y = default(Int32); + z = Int32.MaxValue; + z1 = Int32.MinValue; + z2 = default(Int64); + z3 = Int64.MaxValue; + z4 = Int64.MinValue; + z5 = new Object(); + z6 = default(SByte); + z7 = SByte.MaxValue; + z8 = SByte.MinValue; + z9 = default(Int16); + z91 = Int16.MaxValue; + z92 = Int16.MinValue; + z93 = "abc"; + z94 = default(UInt16); + z95 = UInt16.MaxValue; + z96 = UInt16.MinValue; + z97 = default(UInt32); + z98 = UInt32.MaxValue; + z99 = UInt32.MinValue; + z990 = default(UInt64); + z991 = UInt64.MaxValue; + z992 = UInt64.MinValue; + z993 = new Byte[] { 1, 2, 3, 4 }; + } + + [DataMember] + public object a; + + [DataMember] + public object b; + + [DataMember] + public object c; + + [DataMember] + public object d = Char.MaxValue; + + [DataMember] + public object f5 = DateTime.MaxValue; + + [DataMember] + public object guidData = Guid.Parse("4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56"); + + [DataMember] + public object strData; + + [DataMember] + public object e; + + [DataMember] + public object f; + + [DataMember] + public object g; + + [DataMember] + public object h; + + [DataMember] + public object i; + + [DataMember] + public object j; + + [DataMember] + public object k; + + [DataMember] + public object l; + + [DataMember] + public object m; + + [DataMember] + public object n; + + [DataMember] + public object o; + + [DataMember] + public object p; + + [DataMember] + public object q; + + [DataMember] + public object r; + + [DataMember] + public object s; + + [DataMember] + public object t; + + [DataMember] + public object u; + + [DataMember] + public object v; + + [DataMember] + public object w; + + [DataMember] + public object x; + + [DataMember] + public object y; + + [DataMember] + public object z; + + [DataMember] + public object z1; + + [DataMember] + public object z2; + + [DataMember] + public object z3; + + [DataMember] + public object z4; + + [DataMember] + public object z5; + + [DataMember] + public object z6; + + [DataMember] + public object z7; + + [DataMember] + public object z8; + + [DataMember] + public object z9; + + [DataMember] + public object z91; + + [DataMember] + public object z92; + + [DataMember] + public object z93; + + [DataMember] + public object z94; + + [DataMember] + public object z95; + + [DataMember] + public object z96; + + [DataMember] + public object z97; + + [DataMember] + public object z98; + + [DataMember] + public object z99; + + [DataMember] + public object z990; + + [DataMember] + public object z991; + + [DataMember] + public object z992; + + [DataMember] + public Byte[] z993; + + [DataMember] + public object xmlQualifiedName = new XmlQualifiedName("WCF", "http://www.microsoft.com"); + + [DataMember] + public ValueType timeSpan = TimeSpan.MaxValue; + + [DataMember] + public object obj = new object(); + + [DataMember] + public Uri uri = new Uri("http://www.microsoft.com"); + + [DataMember] + public Array array1 = new object[] { new object(), new object(), new object() }; + + [DataMember] + public object nDTO = DateTimeOffset.MaxValue; + + [DataMember] + public List lDTO = new List(); + } + + [DataContract] + [KnownType(typeof(EmptyNSAddress))] + public class EmptyNsContainer + { + [DataMember] + public object address; + + [DataMember] + public string Name; + + public EmptyNsContainer(EmptyNSAddress obj) + { + address = obj; + Name = "P1"; + } + } + + [DataContract(Namespace = "")] + public class UknownEmptyNSAddress : EmptyNSAddress + { + public UknownEmptyNSAddress() + { + } + } + + [DataContract(Namespace = "")] + public class EmptyNSAddress + { + [DataMember] + public string street; + + public EmptyNSAddress() + { + street = "downing street"; + } + } + + [DataContract(IsReference = true)] + [KnownType(typeof(PreferredCustomer))] + public class Customer + { + [DataMember] + public string Name { get; set; } + } + + [DataContract(IsReference = true)] + public class PreferredCustomer : Customer + { + [DataMember] + public string VipInfo { get; set; } + } + + [DataContract(IsReference = true)] + public class PreferredCustomerProxy : PreferredCustomer + { + } +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRTypeLibrary.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRTypeLibrary.cs new file mode 100644 index 000000000000..7e42b951835a --- /dev/null +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DCRTypeLibrary.cs @@ -0,0 +1,30 @@ +using System.Runtime.Serialization; + +namespace SerializationTestTypes +{ + [DataContract] + public class ObjectContainer + { + [DataMember] + private object _data; + + [DataMember] + private object _data2; + + public ObjectContainer(object input) + { + _data = input; + _data2 = _data; + } + + public object Data + { + get { return _data; } + } + + public object Data2 + { + get { return _data2; } + } + } +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DataContractResolverLibrary.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DataContractResolverLibrary.cs new file mode 100644 index 000000000000..0348c2c0837e --- /dev/null +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/DataContractResolverLibrary.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Xml; + +namespace SerializationTestTypes +{ + [Serializable] + public class PrimitiveTypeResolver : DataContractResolver + { + private readonly static string s_defaultNS = "http://www.default.com"; + private readonly static Dictionary s_types = new Dictionary(); + + public override bool TryResolveType(Type dcType, Type declaredType, DataContractResolver KTResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + string resolvedTypeName = string.Empty; + string resolvedNamespace = string.Empty; + resolvedNamespace = s_defaultNS; + resolvedTypeName = dcType.Name + "_foo"; + s_types[resolvedTypeName] = dcType; + XmlDictionary dic = new XmlDictionary(); + typeName = dic.Add(resolvedTypeName); + typeNamespace = dic.Add(resolvedNamespace); + return true; + } + + public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver KTResolver) + { + return s_types[typeName]; + } + } + + public class EmptyNamespaceResolver : DataContractResolver + { + public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + XmlDictionary dic = new XmlDictionary(); + if (dataContractType == typeof(EmptyNsContainer)) + { + typeName = dic.Add("EmptyNsContainer"); + typeNamespace = dic.Add("MyNamespace"); + return true; + } + else if (dataContractType == typeof(UknownEmptyNSAddress)) + { + typeName = dic.Add("AddressFoo"); + typeNamespace = dic.Add(""); + return true; + } + else + { + return knownTypeResolver.TryResolveType(dataContractType, declaredType, null, out typeName, out typeNamespace); + } + } + + public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) + { + if (typeNamespace == "MyNamespace") + { + switch (typeName) + { + case "EmptyNsContainer": + return typeof(EmptyNsContainer); + } + } + else if (typeName.Equals("AddressFoo")) + { + return typeof(UknownEmptyNSAddress); + } + + return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); + } + } + + [Serializable] + public class ProxyDataContractResolver : DataContractResolver + { + public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver) + { + return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null); + } + + public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + Type actualDataContractType = dataContractType.Name.EndsWith("Proxy") ? dataContractType.BaseType : dataContractType; + return knownTypeResolver.TryResolveType(actualDataContractType, declaredType, null, out typeName, out typeNamespace); + } + } +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/Primitives.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/Primitives.cs new file mode 100644 index 000000000000..c1f27fd4c9c7 --- /dev/null +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTestTypes/Primitives.cs @@ -0,0 +1,83 @@ +using System; +using System.Runtime.Serialization; + +namespace SerializationTestTypes +{ + [DataContract] + public struct VT + { + [DataMember] + public int b; + + public VT(int v) + { + b = v; + } + } + + public struct NotSer + { + public int a; + } + + [DataContract] + public enum MyEnum1 : byte + { + [EnumMember] + red, + [EnumMember] + blue, + [EnumMember] + black + } + + [Flags] + public enum Seasons1 : byte + { + None = 0, + Summer = 1, + Autumn = 2, + Winter = 4, + Spring = 8, + All = Summer | Autumn | Winter | Spring, + } + + [Flags] + public enum Seasons2 : sbyte + { + None = 0, + Summer = 1, + Autumn = 2, + Winter = 4, + Spring = 8, + All = Summer | Autumn | Winter | Spring, + } + + public struct MyStruct + { + public int value; + public string globName; + + public MyStruct(bool init) + { + value = 10; + globName = "\uFEA5\uFEA3\uFEA8\uFEAA\uFEA3\uFEBB\uFEC2\uFEC3"; + } + } + + [DataContract] + public class EnumStructContainer + { + [DataMember] + public object p1 = new VT(10); + + [DataMember] + public object p2 = new NotSer(); + + [DataMember] + public object[] enumArrayData = new object[] { MyEnum1.red, MyEnum1.black, MyEnum1.blue, Seasons1.Autumn, Seasons2.Spring }; + + [DataMember] + public object p3 = new MyStruct(); + } +} diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index abaf1b33bc1d..15a5ee83b021 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -4378,60 +4378,3 @@ public class Person public string LastName { get; set; } } } - -[DataContract] -[KnownType(typeof(EmptyNSAddress))] -public class EmptyNsContainer -{ - [DataMember] - public object address; - - [DataMember] - public string Name; - - public EmptyNsContainer(EmptyNSAddress obj) - { - address = obj; - Name = "P1"; - } -} - -[DataContract(Namespace = "")] -public class UknownEmptyNSAddress : EmptyNSAddress -{ - public UknownEmptyNSAddress() - { - } -} - -[DataContract(Namespace = "")] -public class EmptyNSAddress -{ - [DataMember] - public string street; - - public EmptyNSAddress() - { - street = "downing street"; - } -} - -[DataContract(IsReference = true)] -[KnownType(typeof(PreferredCustomer))] -public class Customer -{ - [DataMember] - public string Name { get; set; } -} - -[DataContract(IsReference = true)] -public class PreferredCustomer : Customer -{ - [DataMember] - public string VipInfo { get; set; } -} - -[DataContract(IsReference = true)] -public class PreferredCustomerProxy : PreferredCustomer -{ -} diff --git a/src/System.Runtime.Serialization.Xml/tests/System.Runtime.Serialization.Xml.Tests.csproj b/src/System.Runtime.Serialization.Xml/tests/System.Runtime.Serialization.Xml.Tests.csproj index af1a0f56329d..69e880032c4f 100644 --- a/src/System.Runtime.Serialization.Xml/tests/System.Runtime.Serialization.Xml.Tests.csproj +++ b/src/System.Runtime.Serialization.Xml/tests/System.Runtime.Serialization.Xml.Tests.csproj @@ -23,6 +23,11 @@ + + + + + CommonTest\System\PlatformDetection.cs From 2b0e3caf8c8f4bbf67b0003e0788d8d2cc4cfba1 Mon Sep 17 00:00:00 2001 From: Carol Wang Date: Tue, 18 Apr 2017 22:52:01 -0700 Subject: [PATCH 208/336] Used to be portable library test, covered XmlAttributeOverrides. (#18553) * Used to be portable library test, covered XmlAttributeOverrides. * Follow coding style to remove usage of --- .../tests/XmlSerializer/XmlSerializerTests.cs | 130 +++++++++++++++++- .../tests/SerializationTypes.cs | 37 ++++- 2 files changed, 162 insertions(+), 5 deletions(-) diff --git a/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs b/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs index 678c15c81d32..175d88a69760 100644 --- a/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs +++ b/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -3228,6 +3228,134 @@ public static void Xml_SerializeClassNestedInStaticClassTest() Assert.Equal(value.LastName, actual.LastName); } + [Fact] + public static void Xml_XSCoverTest() + { + var band = new Orchestra(); + var brass = new Brass() + { + Name = "Trumpet", + IsValved = true + }; + Instrument[] myInstruments = { brass }; + band.Instruments = myInstruments; + + var attrs = new XmlAttributes(); + var attr = new XmlElementAttribute() + { + ElementName = "Brass", + Type = typeof(Brass) + }; + + attrs.XmlElements.Add(attr); + var attrOverrides = new XmlAttributeOverrides(); + attrOverrides.Add(typeof(Orchestra), "Instruments", attrs); + + var actual = SerializeAndDeserialize(band, +@" + + Trumpet + true + +", () => { return new XmlSerializer(typeof(Orchestra), attrOverrides); }); + + Assert.Equal(band.Instruments.Length, actual.Instruments.Length); + for (int i = 0; i < band.Instruments.Length; i++) + { + Assert.Equal(((Brass)band.Instruments.ElementAt(i)).Name, ((Brass)actual.Instruments[i]).Name); + Assert.Equal(((Brass)band.Instruments.ElementAt(i)).IsValved, ((Brass)actual.Instruments[i]).IsValved); + } + + band = new Orchestra(); + band.Instruments = new Instrument[1] { new Instrument { Name = "Instrument1" } }; + attrs = new XmlAttributes(); + var xArray = new XmlArrayAttribute("CommonInstruments"); + xArray.Namespace = "http://www.contoso.com"; + attrs.XmlArray = xArray; + attrOverrides = new XmlAttributeOverrides(); + attrOverrides.Add(typeof(Orchestra), "Instruments", attrs); + actual = SerializeAndDeserialize(band, +@" + + + + Instrument1 + + +", () => { return new XmlSerializer(typeof(Orchestra), attrOverrides); }); + Assert.Equal(band.Instruments.Length, actual.Instruments.Length); + for (int i = 0; i < band.Instruments.Length; i++) + { + Assert.Equal((band.Instruments.ElementAt(i)).Name, (actual.Instruments[i]).Name); + } + + band = new Orchestra(); + var trumpet = new Trumpet() { Name = "TrumpetKeyC", IsValved = false, Modulation = 'C' }; + band.Instruments = new Instrument[2] { brass, trumpet }; + + attrs = new XmlAttributes(); + var xArrayItem = new XmlArrayItemAttribute(typeof(Brass)); + xArrayItem.Namespace = "http://www.contoso.com"; + attrs.XmlArrayItems.Add(xArrayItem); + var xArrayItem2 = new XmlArrayItemAttribute(typeof(Trumpet)); + xArrayItem2.Namespace = "http://www.contoso.com"; + attrs.XmlArrayItems.Add(xArrayItem2); + attrOverrides = new XmlAttributeOverrides(); + attrOverrides.Add(typeof(Orchestra), "Instruments", attrs); + actual = SerializeAndDeserialize(band, +@" + + + + Trumpet + true + + + TrumpetKeyC + false + 67 + + +", () => { return new XmlSerializer(typeof(Orchestra), attrOverrides); }); + Assert.Equal(band.Instruments.Length, actual.Instruments.Length); + for (int i = 0; i < band.Instruments.Length; i++) + { + Assert.Equal((band.Instruments.ElementAt(i)).Name, (actual.Instruments[i]).Name); + } + + attrOverrides = new XmlAttributeOverrides(); + attrs = new XmlAttributes(); + Object defaultAnimal = "Cat"; + attrs.XmlDefaultValue = defaultAnimal; + attrOverrides.Add(typeof(Pet), "Animal", attrs); + attrs = new XmlAttributes(); + attrs.XmlIgnore = false; + attrOverrides.Add(typeof(Pet), "Comment", attrs); + attrs = new XmlAttributes(); + var xType = new XmlTypeAttribute(); + xType.TypeName = "CuteFishes"; + xType.IncludeInSchema = true; + attrs.XmlType = xType; + attrOverrides.Add(typeof(Pet), attrs); + + var myPet = new Pet(); + myPet.Animal = "fish"; + myPet.Comment = "What a cute fish!"; + myPet.Comment2 = "I think it is cool!"; + + var actual2 = SerializeAndDeserialize(myPet, +@" + + fish + What a cute fish! + I think it is cool! + +", () => { return new XmlSerializer(typeof(Pet), attrOverrides); }); + Assert.Equal(myPet.Animal, actual2.Animal); + Assert.Equal(myPet.Comment, actual2.Comment); + Assert.Equal(myPet.Comment2, actual2.Comment2); + } + private static T RoundTripWithXmlMembersMapping(object requestBodyValue, string memberName, string baseline, bool skipStringCompare = false) { var member = new XmlReflectionMember(); diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 15a5ee83b021..3b91b1ac671e 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -4355,17 +4355,17 @@ public class MyCollection1 : IEnumerable, IEnumerable public void Add(DateTime value) { - this._values.Add(value); + _values.Add(value); } IEnumerator IEnumerable.GetEnumerator() { - return this._values.GetEnumerator(); + return _values.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { - return this._values.GetEnumerator(); + return _values.GetEnumerator(); } } @@ -4378,3 +4378,32 @@ public class Person public string LastName { get; set; } } } + +public class Orchestra +{ + public Instrument[] Instruments; +} + +public class Instrument +{ + public string Name; +} + +public class Brass : Instrument +{ + public bool IsValved; +} + +public class Trumpet : Brass +{ + public char Modulation; +} + +public class Pet +{ + [DefaultValueAttribute("Dog")] + public string Animal; + [XmlIgnoreAttribute] + public string Comment; + public string Comment2; +} \ No newline at end of file From c7ad7c0cb27de4536f4c7ed296248e2cf4830715 Mon Sep 17 00:00:00 2001 From: Hyeongseok Oh Date: Wed, 19 Apr 2017 17:29:12 +0900 Subject: [PATCH 209/336] Modify System.Numerics.Vectors unittest Use helper method to compare expected with actual value for failed tests on ARM32/Linux, like other tests. - Vector2Tests.Vector2TransformNormalTest - Vector2Tests.Vector2TransformNormal3x2Test --- src/System.Numerics.Vectors/tests/Vector2Tests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Numerics.Vectors/tests/Vector2Tests.cs b/src/System.Numerics.Vectors/tests/Vector2Tests.cs index c6a77578f06f..fe5e0d54caf1 100644 --- a/src/System.Numerics.Vectors/tests/Vector2Tests.cs +++ b/src/System.Numerics.Vectors/tests/Vector2Tests.cs @@ -488,7 +488,7 @@ public void Vector2TransformNormalTest() Vector2 actual; actual = Vector2.TransformNormal(v, m); - Assert.Equal(expected, actual); + Assert.True(MathHelper.Equal(expected, actual), "Vector2f.Tranfrom did not return the expected value."); } // A test for TransformNormal (Vector2f, Matrix3x2) @@ -504,7 +504,7 @@ public void Vector2TransformNormal3x2Test() Vector2 actual; actual = Vector2.TransformNormal(v, m); - Assert.Equal(expected, actual); + Assert.True(MathHelper.Equal(expected, actual), "Vector2f.Transform did not return the expected value."); } // A test for Transform (Vector2f, Quaternion) From 13bde35e9cbb702afdae46c791fea4e827bbd68a Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Wed, 19 Apr 2017 02:24:04 -0700 Subject: [PATCH 210/336] Update CoreClr to preview1-25219-03 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 2a0b0cca94d5..76771f124b14 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> ee8cf8d1c5908ea7f63f0a769439456ff14672eb - 86c8c3ac7f5599b1c5739460f092f831c23f1947 + 71364c7e2b0a42dd3257fa77dca8a69c4a674107 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 37660101ab061128da926a2bfa7743e360c53aa6 37660101ab061128da926a2bfa7743e360c53aa6 @@ -21,7 +21,7 @@ preview1-25218-03 - preview1-25219-01 + preview1-25219-03 beta-25016-01 beta-25219-00 beta-25219-00 From ec4bd0cb82553774f846d0c0b2cc8f8a86a7aca3 Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Wed, 19 Apr 2017 03:58:41 -0700 Subject: [PATCH 211/336] Dead code in S.R.Extensions (#18593) * Dead code from S.R.E * Project --- .../kernel32/Interop.GetTempFileNameW.cs | 16 ---- .../Windows/kernel32/Interop.GetTempPathW.cs | 16 ---- .../Collections/Generic/LowLevelDictionary.cs | 80 ------------------- .../src/System.Runtime.Extensions.csproj | 6 -- .../src/System/Security/SecurityElement.cs | 80 ------------------- 5 files changed, 198 deletions(-) delete mode 100644 src/Common/src/Interop/Windows/kernel32/Interop.GetTempFileNameW.cs delete mode 100644 src/Common/src/Interop/Windows/kernel32/Interop.GetTempPathW.cs diff --git a/src/Common/src/Interop/Windows/kernel32/Interop.GetTempFileNameW.cs b/src/Common/src/Interop/Windows/kernel32/Interop.GetTempFileNameW.cs deleted file mode 100644 index d157a29c925d..000000000000 --- a/src/Common/src/Interop/Windows/kernel32/Interop.GetTempFileNameW.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Text; -using System.Runtime.InteropServices; - -partial class Interop -{ - partial class Kernel32 - { - [DllImport(Libraries.Kernel32, CharSet = CharSet.Unicode, SetLastError = true, BestFitMapping = false)] - internal static extern uint GetTempFileNameW(string tmpPath, string prefix, uint uniqueIdOrZero, [Out]StringBuilder tmpFileName); - } -} diff --git a/src/Common/src/Interop/Windows/kernel32/Interop.GetTempPathW.cs b/src/Common/src/Interop/Windows/kernel32/Interop.GetTempPathW.cs deleted file mode 100644 index 25ffcd55b073..000000000000 --- a/src/Common/src/Interop/Windows/kernel32/Interop.GetTempPathW.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.IO; -using System.Text; -using System.Runtime.InteropServices; - -partial class Interop -{ - partial class Kernel32 - { - [DllImport(Libraries.Kernel32, CharSet = CharSet.Unicode, BestFitMapping = false)] - internal static extern uint GetTempPathW(int bufferLen, [Out]StringBuilder buffer); - } -} diff --git a/src/Common/src/System/Collections/Generic/LowLevelDictionary.cs b/src/Common/src/System/Collections/Generic/LowLevelDictionary.cs index aa8e5c7e7881..075aac5c8797 100644 --- a/src/Common/src/System/Collections/Generic/LowLevelDictionary.cs +++ b/src/Common/src/System/Collections/Generic/LowLevelDictionary.cs @@ -141,15 +141,6 @@ public bool Remove(TKey key) return false; } - internal TValue LookupOrAdd(TKey key, TValue value) - { - Entry entry = Find(key); - if (entry != null) - return entry._value; - UncheckedAdd(key, value); - return value; - } - private Entry Find(TKey key) { int bucket = GetBucket(key); @@ -216,7 +207,6 @@ private int GetBucket(TKey key, int numBuckets = 0) return (h % (numBuckets == 0 ? _buckets.Length : numBuckets)); } - private sealed class Entry { public TKey _key; @@ -247,75 +237,5 @@ public int GetHashCode(T obj) return ((object)obj).GetHashCode(); } } - - protected sealed class LowLevelDictEnumerator : IEnumerator> - { - public LowLevelDictEnumerator(LowLevelDictionary dict) - { - _dict = dict; - _version = _dict._version; - Entry[] entries = new Entry[_dict._numEntries]; - int dst = 0; - for (int bucket = 0; bucket < _dict._buckets.Length; bucket++) - { - Entry entry = _dict._buckets[bucket]; - while (entry != null) - { - entries[dst++] = entry; - entry = entry._next; - } - } - _entries = entries; - Reset(); - } - - public KeyValuePair Current - { - get - { - if (_version != _dict._version) - throw new InvalidOperationException("InvalidOperation_EnumFailedVersion"); - if (_curPosition == -1 || _curPosition == _entries.Length) - throw new InvalidOperationException("InvalidOperation_EnumOpCantHappen"); - Entry entry = _entries[_curPosition]; - return new KeyValuePair(entry._key, entry._value); - } - } - - public void Dispose() - { - } - - public bool MoveNext() - { - if (_version != _dict._version) - throw new InvalidOperationException("InvalidOperation_EnumFailedVersion"); - if (_curPosition != _entries.Length) - _curPosition++; - bool anyMore = (_curPosition != _entries.Length); - return anyMore; - } - - object IEnumerator.Current - { - get - { - KeyValuePair kv = Current; - return kv; - } - } - - public void Reset() - { - if (_version != _dict._version) - throw new InvalidOperationException("InvalidOperation_EnumFailedVersion"); - _curPosition = -1; - } - - private LowLevelDictionary _dict; - private Entry[] _entries; - private int _curPosition; - private int _version; - } } } diff --git a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj index eb3adc856249..e7773df114a2 100644 --- a/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj +++ b/src/System.Runtime.Extensions/src/System.Runtime.Extensions.csproj @@ -138,12 +138,6 @@ Common\Interop\Windows\kernel32\Interop.GetSystemInfo.cs - - Common\Interop\Windows\kernel32\Interop.GetTempFileNameW.cs - - - Common\Interop\Windows\kernel32\Interop.GetTempPathW.cs - Common\Interop\Windows\kernel32\Interop.GetVersionExW.cs diff --git a/src/System.Runtime.Extensions/src/System/Security/SecurityElement.cs b/src/System.Runtime.Extensions/src/System/Security/SecurityElement.cs index 937421145f42..e676548415ef 100644 --- a/src/System.Runtime.Extensions/src/System/Security/SecurityElement.cs +++ b/src/System.Runtime.Extensions/src/System/Security/SecurityElement.cs @@ -10,13 +10,6 @@ namespace System.Security { - internal enum SecurityElementType - { - Regular = 0, - Format = 1, - Comment = 2 - } - internal interface ISecurityElementFactory { SecurityElement CreateSecurityElement(); @@ -217,16 +210,6 @@ internal void ConvertSecurityElementFactories() } } - internal ArrayList InternalChildren - { - get - { - // Beware! This array list can contain SecurityElements and other ISecurityElementFactories. - // If you want to get a consistent SecurityElement view, call get_Children. - return _children; - } - } - //-------------------------- Public Methods ----------------------------- internal void AddAttributeSafe(string name, string value) @@ -281,38 +264,6 @@ public void AddChild(SecurityElement child) _children.Add(child); } - internal void AddChild(ISecurityElementFactory child) - { - if (child == null) - throw new ArgumentNullException(nameof(child)); - - if (_children == null) - _children = new ArrayList(ChildrenTypical); - - _children.Add(child); - } - - internal void AddChildNoDuplicates(ISecurityElementFactory child) - { - if (child == null) - throw new ArgumentNullException(nameof(child)); - - if (_children == null) - { - _children = new ArrayList(ChildrenTypical); - _children.Add(child); - } - else - { - for (int i = 0; i < _children.Count; ++i) - { - if (_children[i] == child) - return; - } - _children.Add(child); - } - } - public bool Equal(SecurityElement other) { if (other == null) @@ -552,11 +503,6 @@ public override string ToString() return sb.ToString(); } - internal void ToWriter(StreamWriter writer) - { - ToString("", writer, (obj, str) => ((StreamWriter)obj).Write(str)); - } - private void ToString(string indent, object obj, Action write) { write(obj, "<"); @@ -673,32 +619,6 @@ public SecurityElement SearchForChildByTag(string tag) return null; } - internal string SearchForTextOfLocalName(string strLocalName) - { - // Search on each child in order and each - // child's child, depth-first - if (strLocalName == null) - throw new ArgumentNullException(nameof(strLocalName)); - - // Note: we don't check for a valid tag here because - // an invalid tag simply won't be found. - if (_tag == null) - return null; - if (_tag.Equals(strLocalName) || _tag.EndsWith(":" + strLocalName, StringComparison.Ordinal)) - return Unescape(_text); - if (_children == null) - return null; - - IEnumerator enumerator = _children.GetEnumerator(); - foreach (SecurityElement currentElement in _children) - { - string current = currentElement.SearchForTextOfLocalName(strLocalName); - if (current != null) - return current; - } - return null; - } - public string SearchForTextOfTag(string tag) { // Search on each child in order and each From 5f7986c01ee2a31abe0b54f89d5f2387c64110e5 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 08:07:24 -0400 Subject: [PATCH 212/336] Expose Task.IsCompletedSuccessfully --- .../src/System/IO/FileSystemWatcher.cs | 2 +- .../Net/Http/Unix/CurlHandler.EasyRequest.cs | 2 +- .../src/System/Net/NetworkInformation/Ping.cs | 2 +- .../src/System/Net/HttpWebRequest.cs | 2 +- .../src/System/Net/Sockets/Socket.Tasks.cs | 2 +- .../src/System/Xml/AsyncHelper.cs | 2 +- .../src/System/IO/BufferedStream.cs | 8 +- src/System.Runtime/ref/System.Runtime.cs | 1 + .../tests/Configurations.props | 1 + .../tests/System.Threading.Tasks.Tests.csproj | 7 +- .../tests/Task/TaskStatusTest.netcoreapp.cs | 107 ++++++++++++++++++ 11 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 src/System.Threading.Tasks/tests/Task/TaskStatusTest.netcoreapp.cs diff --git a/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs b/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs index c0782ba67ed2..29a4fcb0b4a7 100644 --- a/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs +++ b/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs @@ -595,7 +595,7 @@ public WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, int ti } // Return the results. - return tcs.Task.Status == TaskStatus.RanToCompletion ? + return tcs.Task.IsCompletedSuccessfully ? tcs.Task.Result : WaitForChangedResult.TimedOutResult; } diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs index 03e512f140cd..1b19dc4137b6 100644 --- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs +++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs @@ -143,7 +143,7 @@ public void EnsureResponseMessagePublished() // Now ensure it's published. bool completedTask = TrySetResult(_responseMessage); - Debug.Assert(completedTask || Task.Status == TaskStatus.RanToCompletion, + Debug.Assert(completedTask || Task.IsCompletedSuccessfully, "If the task was already completed, it should have been completed successfully; " + "we shouldn't be completing as successful after already completing as failed."); diff --git a/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs b/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs index 95e4f0480e01..46fb3480770f 100644 --- a/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs +++ b/src/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs @@ -206,7 +206,7 @@ private void TranslateTaskToEap(object userToken, Task pingTask) pingTask.ContinueWith((t, state) => { var asyncOp = (AsyncOperation)state; - var e = new PingCompletedEventArgs(t.Status == TaskStatus.RanToCompletion ? t.Result : null, t.Exception, t.IsCanceled, asyncOp.UserSuppliedState); + var e = new PingCompletedEventArgs(t.IsCompletedSuccessfully ? t.Result : null, t.Exception, t.IsCanceled, asyncOp.UserSuppliedState); SendOrPostCallback callback = _onPingCompletedDelegate ?? (_onPingCompletedDelegate = new SendOrPostCallback(o => { OnPingCompleted((PingCompletedEventArgs)o); })); asyncOp.PostOperationCompleted(callback, e); }, AsyncOperationManager.CreateOperation(userToken), CancellationToken.None, TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default); diff --git a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs index fc9b2572ca20..ed79933b909c 100644 --- a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs +++ b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs @@ -816,7 +816,7 @@ public virtual bool HaveResponse { get { - return (_sendRequestTask != null) && (_sendRequestTask.Status == TaskStatus.RanToCompletion); + return (_sendRequestTask != null) && (_sendRequestTask.IsCompletedSuccessfully); } } diff --git a/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs b/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs index a608fd97749e..7c3023d1931e 100644 --- a/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs +++ b/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs @@ -464,7 +464,7 @@ private Task GetTaskForSendReceive( { // Get any cached, successfully-completed cached task that may exist on this SAEA. Task lastTask = saea._successfullyCompletedTask; - Debug.Assert(lastTask == null || lastTask.Status == TaskStatus.RanToCompletion); + Debug.Assert(lastTask == null || lastTask.IsCompletedSuccessfully); // If there is a task and if it has the desired result, simply reuse it. // Otherwise, create a new one for this result value, and in addition to returning it, diff --git a/src/System.Private.Xml/src/System/Xml/AsyncHelper.cs b/src/System.Private.Xml/src/System/Xml/AsyncHelper.cs index c75234cee597..692b8e21243f 100644 --- a/src/System.Private.Xml/src/System/Xml/AsyncHelper.cs +++ b/src/System.Private.Xml/src/System/Xml/AsyncHelper.cs @@ -16,7 +16,7 @@ internal static class AsyncHelper public static bool IsSuccess(this Task task) { - return task.Status == TaskStatus.RanToCompletion; + return task.IsCompletedSuccessfully; } public static Task CallVoidFuncWhenFinishAsync(this Task task, Action func, TArg arg) diff --git a/src/System.Runtime.Extensions/src/System/IO/BufferedStream.cs b/src/System.Runtime.Extensions/src/System/IO/BufferedStream.cs index b771bce451da..32aa4db3e662 100644 --- a/src/System.Runtime.Extensions/src/System/IO/BufferedStream.cs +++ b/src/System.Runtime.Extensions/src/System/IO/BufferedStream.cs @@ -520,9 +520,8 @@ public override int Read(byte[] array, int offset, int count) private Task LastSyncCompletedReadTask(int val) { - Task t = _lastSyncCompletedReadTask; - Debug.Assert(t == null || t.Status == TaskStatus.RanToCompletion); + Debug.Assert(t == null || t.IsCompletedSuccessfully); if (t != null && t.Result == val) return t; @@ -557,9 +556,8 @@ public override Task ReadAsync(byte[] buffer, int offset, int count, Cancel // an Async operation. SemaphoreSlim sem = LazyEnsureAsyncActiveSemaphoreInitialized(); Task semaphoreLockTask = sem.WaitAsync(); - if (semaphoreLockTask.Status == TaskStatus.RanToCompletion) + if (semaphoreLockTask.IsCompletedSuccessfully) { - bool completeSynchronously = true; try { @@ -889,7 +887,7 @@ public override Task WriteAsync(byte[] buffer, int offset, int count, Cancellati // an Async operation. SemaphoreSlim sem = LazyEnsureAsyncActiveSemaphoreInitialized(); Task semaphoreLockTask = sem.WaitAsync(); - if (semaphoreLockTask.Status == TaskStatus.RanToCompletion) + if (semaphoreLockTask.IsCompletedSuccessfully) { bool completeSynchronously = true; try diff --git a/src/System.Runtime/ref/System.Runtime.cs b/src/System.Runtime/ref/System.Runtime.cs index fb0d3690b7a6..fdc4b5badb9e 100644 --- a/src/System.Runtime/ref/System.Runtime.cs +++ b/src/System.Runtime/ref/System.Runtime.cs @@ -7324,6 +7324,7 @@ public Task(System.Action action, object state, System.Threading.Tasks.T public int Id { get { throw null; } } public bool IsCanceled { get { throw null; } } public bool IsCompleted { get { throw null; } } + public bool IsCompletedSuccessfully { get { throw null; } } public bool IsFaulted { get { throw null; } } public System.Threading.Tasks.TaskStatus Status { get { throw null; } } System.Threading.WaitHandle System.IAsyncResult.AsyncWaitHandle { get { throw null; } } diff --git a/src/System.Threading.Tasks/tests/Configurations.props b/src/System.Threading.Tasks/tests/Configurations.props index c398e42e8994..8b803e0772f2 100644 --- a/src/System.Threading.Tasks/tests/Configurations.props +++ b/src/System.Threading.Tasks/tests/Configurations.props @@ -2,6 +2,7 @@ + netcoreapp; netstandard; diff --git a/src/System.Threading.Tasks/tests/System.Threading.Tasks.Tests.csproj b/src/System.Threading.Tasks/tests/System.Threading.Tasks.Tests.csproj index f69b139c9e0f..309bc2011281 100644 --- a/src/System.Threading.Tasks/tests/System.Threading.Tasks.Tests.csproj +++ b/src/System.Threading.Tasks/tests/System.Threading.Tasks.Tests.csproj @@ -5,6 +5,8 @@ {B6C09633-D161-499A-8FE1-46B2D53A16E7} + + @@ -49,9 +51,10 @@ CommonTest\System\Threading\ThreadPoolHelpers.cs - - + + + diff --git a/src/System.Threading.Tasks/tests/Task/TaskStatusTest.netcoreapp.cs b/src/System.Threading.Tasks/tests/Task/TaskStatusTest.netcoreapp.cs new file mode 100644 index 000000000000..4d6903648d0c --- /dev/null +++ b/src/System.Threading.Tasks/tests/Task/TaskStatusTest.netcoreapp.cs @@ -0,0 +1,107 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Reflection; +using System.Runtime.CompilerServices; +using Xunit; + +namespace System.Threading.Tasks.Tests +{ + public class TaskStatusProperties + { + public static IEnumerable Status_IsProperties_Match_MemberData() + { + yield return new object[] { new StrongBox(Task.CompletedTask) }; + + yield return new object[] { new StrongBox(new Task(() => { })) }; + + yield return new object[] { new StrongBox(new TaskCompletionSource().Task) }; + + { + var tcs = new TaskCompletionSource(); + tcs.SetResult(42); + yield return new object[] { new StrongBox(tcs.Task) }; + } + + { + var tcs = new TaskCompletionSource(); + tcs.SetException(new Exception()); + yield return new object[] { new StrongBox(tcs.Task) }; + } + + { + var tcs = new TaskCompletionSource(); + tcs.SetCanceled(); + yield return new object[] { new StrongBox(tcs.Task) }; + } + + { + var t = Task.Run(() => { }); + t.Wait(); + yield return new object[] { new StrongBox(t) }; + } + + { + var atmb = new AsyncTaskMethodBuilder(); + atmb.SetResult(true); + yield return new object[] { new StrongBox(atmb.Task) }; + } + } + + [Theory] + [MemberData(nameof(Status_IsProperties_Match_MemberData))] + public void Status_IsProperties_Match(StrongBox taskBox) + { + // The StrongBox is a workaround for xunit trying to automatically + // Dispose of any IDisposable passed into a theory, but Task doesn't like + // being Dispose'd when it's not in a final state. + Task task = taskBox.Value; + + if (task.IsCompletedSuccessfully) + { + Assert.Equal(TaskStatus.RanToCompletion, task.Status); + } + else if (task.IsFaulted) + { + Assert.Equal(TaskStatus.Faulted, task.Status); + } + else if (task.IsCanceled) + { + Assert.Equal(TaskStatus.Canceled, task.Status); + } + + switch (task.Status) + { + case TaskStatus.RanToCompletion: + Assert.True(task.IsCompleted, "Expected IsCompleted to be true"); + Assert.True(task.IsCompletedSuccessfully, "Expected IsCompletedSuccessfully to be true"); + Assert.False(task.IsFaulted, "Expected IsFaulted to be false"); + Assert.False(task.IsCanceled, "Expected IsCanceled to be false"); + break; + + case TaskStatus.Faulted: + Assert.True(task.IsCompleted, "Expected IsCompleted to be true"); + Assert.False(task.IsCompletedSuccessfully, "Expected IsCompletedSuccessfully to be false"); + Assert.True(task.IsFaulted, "Expected IsFaulted to be true"); + Assert.False(task.IsCanceled, "Expected IsCanceled to be false"); + break; + + case TaskStatus.Canceled: + Assert.True(task.IsCompleted, "Expected IsCompleted to be true"); + Assert.False(task.IsCompletedSuccessfully, "Expected IsCompletedSuccessfully to be false"); + Assert.False(task.IsFaulted, "Expected IsFaulted to be false"); + Assert.True(task.IsCanceled, "Expected IsCanceled to be true"); + break; + + default: + Assert.False(task.IsCompleted, "Expected IsCompleted to be false"); + Assert.False(task.IsCompletedSuccessfully, "Expected IsCompletedSuccessfully to be false"); + Assert.False(task.IsFaulted, "Expected IsFaulted to be false"); + Assert.False(task.IsCanceled, "Expected IsCanceled to be false"); + break; + } + } + } +} From 73ada90d80a93f10c13e04fecbe5c3c284494eba Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Wed, 19 Apr 2017 06:18:45 -0700 Subject: [PATCH 213/336] Update Standard to preview1-25219-01 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 76771f124b14..16238388d305 100644 --- a/dependencies.props +++ b/dependencies.props @@ -15,7 +15,7 @@ 37660101ab061128da926a2bfa7743e360c53aa6 37660101ab061128da926a2bfa7743e360c53aa6 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 4ddbf159025d0c1f43f7e8132d514e4949b5f531 + 49e7f51419ca3710afb6a59cc5154e13f6448445 @@ -26,7 +26,7 @@ beta-25219-00 beta-25219-00 1.0.0-beta-25219-00 - 2.0.0-preview1-25218-01 + 2.0.0-preview1-25219-01 NETStandard.Library 4.4.0-beta-25007-02 From 5bd6fd713ee2909100381e5edd98083872ff8897 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 09:18:47 -0400 Subject: [PATCH 214/336] Fix HttpWebRequest.KeepAlive handling --- .../src/System/Net/HttpWebRequest.cs | 28 ++++++--------- .../tests/HttpWebRequestHeaderTest.cs | 34 +++++++++++++++++-- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs index fc9b2572ca20..5bd2f94c53de 100644 --- a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs +++ b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs @@ -384,24 +384,7 @@ public string TransferEncoding } - public bool KeepAlive - { - get - { - return _webHeaderCollection[HttpKnownHeaderNames.KeepAlive] == bool.TrueString; - } - set - { - if (value) - { - SetSpecialHeaders(HttpKnownHeaderNames.KeepAlive, bool.TrueString); - } - else - { - SetSpecialHeaders(HttpKnownHeaderNames.KeepAlive, bool.FalseString); - } - } - } + public bool KeepAlive { get; set; } = true; public bool UnsafeAuthenticatedConnectionSharing { @@ -1188,6 +1171,15 @@ private async Task SendRequest() request.Headers.TransferEncodingChunked = SendChunked; + if (KeepAlive) + { + request.Headers.Connection.Add(HttpKnownHeaderNames.KeepAlive); + } + else + { + request.Headers.ConnectionClose = true; + } + _sendRequestTask = client.SendAsync( request, _allowReadStreamBuffering ? HttpCompletionOption.ResponseContentRead : HttpCompletionOption.ResponseHeadersRead, diff --git a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs index 51f5c0bf745f..3bf8d3445223 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs @@ -3,10 +3,8 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics; -using System.Net.Http; +using System.IO; using System.Net.Sockets; -using System.Net.Test.Common; -using System.Threading.Tasks; using Xunit; using Xunit.Abstractions; @@ -33,6 +31,7 @@ public void Ctor_VerifyHttpRequestDefaults(Uri remoteServer) Assert.Null(request.CookieContainer); Assert.True(request.AllowWriteStreamBuffering); Assert.NotNull(request.ClientCertificates); + Assert.True(request.KeepAlive); // TODO: Issue #17842 if (!PlatformDetection.IsFullFramework) @@ -222,5 +221,34 @@ public void HttpWebRequest_PreAuthenticateGetSet_Ok() Assert.True(request.PreAuthenticate); } } + + [Theory] + [InlineData(null)] + [InlineData(false)] + [InlineData(true)] + public void HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent(bool? keepAlive) + { + HttpWebRequest request = WebRequest.CreateHttp(Configuration.Http.RemoteEchoServer); + + if (keepAlive.HasValue) + { + request.KeepAlive = keepAlive.Value; + } + + using (var response = (HttpWebResponse)request.GetResponse()) + using (var body = new StreamReader(response.GetResponseStream())) + { + string content = body.ReadToEnd(); + if (!keepAlive.HasValue || keepAlive.Value) + { + Assert.Contains("\"Connection\": \"Keep-Alive\"", content, StringComparison.OrdinalIgnoreCase); + } + else + { + Assert.Contains("\"Connection\": \"close\"", content, StringComparison.OrdinalIgnoreCase); + Assert.DoesNotContain("\"Keep-Alive\"", content, StringComparison.OrdinalIgnoreCase); + } + } + } } } From 05484fd095c993b111ef6bee09cbc3bf47d91a6d Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Wed, 19 Apr 2017 08:08:33 -0700 Subject: [PATCH 215/336] Update CoreFx to preview1-25219-04 (#18613) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 16238388d305..07ffe06fc112 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,7 +9,7 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - ee8cf8d1c5908ea7f63f0a769439456ff14672eb + e05b24243498a5094d3e70df440adc71d2268f09 71364c7e2b0a42dd3257fa77dca8a69c4a674107 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 37660101ab061128da926a2bfa7743e360c53aa6 @@ -20,7 +20,7 @@ - preview1-25218-03 + preview1-25219-04 preview1-25219-03 beta-25016-01 beta-25219-00 From a9897a274335b2daf720b53aa986b9eb68f79036 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Wed, 19 Apr 2017 10:58:03 -0500 Subject: [PATCH 216/336] Disable certificate chain test via IsReliableInCI --- .../tests/ChainTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs index 3818d7fc573e..8b7954c7d115 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs +++ b/src/System.Security.Cryptography.X509Certificates/tests/ChainTests.cs @@ -417,7 +417,7 @@ public static void BuildChain_WithCertificatePolicy_NoMatch() } } - [ConditionalFact(nameof(TrustsMicrosoftDotComRoot))] + [ConditionalFact(nameof(TrustsMicrosoftDotComRoot), nameof(IsReliableInCI))] [OuterLoop(/* Modifies user certificate store */)] public static void BuildChain_MicrosoftDotCom_WithRootCertInUserAndSystemRootCertStores() { From 79619650c0f198cf2265951b299e43fb93385f7b Mon Sep 17 00:00:00 2001 From: stone-li Date: Wed, 19 Apr 2017 09:36:28 -0700 Subject: [PATCH 217/336] Add 9 test cases for DataContractJsonSerializer (#18319) * Add 9 test cases for DataContractJsonSerializer * update according to review comments * Modify the failures test case * Update for failures os * Update for failures os * Update * Update DCJS_VerifyDateTimeForDateTimeFormat() * Mark the test as ActiveIssue --- .../tests/DataContractJsonSerializer.cs | 417 ++++++++++++++- .../tests/SerializationTypes.cs | 492 +++++++++++++++++- 2 files changed, 874 insertions(+), 35 deletions(-) diff --git a/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs b/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs index 602743e786c2..cc055228a688 100644 --- a/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs +++ b/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs @@ -2439,15 +2439,7 @@ public static void DCJS_NegativeDateTimeStylesTest_IncorrectDateTimeStyles() }, }; var original = DateTime.Now; - try - { - SerializeAndDeserialize(original, null, dcjsSettings, null, true); - Assert.True(false, $"An exception should be thrown in deserailization of {original.ToString(dateTimeFormat)} with DateTimeStyles={style} but no exception was thrown"); - } - catch (ArgumentException e) - { - Assert.NotNull(e); - } + Assert.Throws(() => SerializeAndDeserialize(original, null, dcjsSettings, null, true)); } } @@ -2476,6 +2468,373 @@ public static void DCJS_RoundtrippingDateTime() } } + [Fact] + public static void DCJS_DateTimeFormatIsNull() + { + var settings = new DataContractJsonSerializerSettings(); + Assert.Throws(() => settings.DateTimeFormat = new DateTimeFormat(null)); + Assert.Throws(() => settings.DateTimeFormat = new DateTimeFormat("ddmmyyyyy", null)); + } + + [Fact] + public static void DCJS_NegativeDateTimeStylesTest_IncorrectFormat() + { + var dateTimeFormat = "yyyy-MM-ddTHH:mm:ss.fffK"; + var original = new DateTime(2011, 1, 2, 3, 4, 5, 6); + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = new DateTimeFormat(dateTimeFormat, CultureInfo.InvariantCulture) + { + DateTimeStyles = DateTimeStyles.None + }, + }; + var serializer = new DataContractJsonSerializer(typeof(DateTime), dcjsSettings); + var ms = new MemoryStream(); + serializer.WriteObject(ms, original); + var serializedJsonValue = Encoding.UTF8.GetString(ms.ToArray()); + serializedJsonValue = serializedJsonValue.Replace("2011", " 2011"); + Assert.Throws(() => DeserializeString(serializedJsonValue)); + } + + [Fact] + [ActiveIssue(18538, TestPlatforms.FreeBSD | TestPlatforms.Linux | TestPlatforms.NetBSD)] + public static void DCJS_VerifyDateTimeForFormatStringDCJsonSerSetting() + { + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value = new DateTime(2010, 12, 1); + var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(new DateTime()).TotalMinutes; + var timeZoneString = string.Format("{0:+;-}{1}", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@"hhmm")); + var baseline = $"\"\\/Date(1291190400000{timeZoneString})\\/\""; + var actual = SerializeAndDeserialize(value, baseline, dcjsSettings); + Assert.Equal(value, actual); + } + + [Fact] + [ActiveIssue(18539, TestPlatforms.Linux)] + public static void DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings() + { + var jsonTypes = new JsonTypes(); + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + + var DTF_class = new JsonTypes.DTF_class() + { + dt1 = new DateTime(1, 1, 1, 3, 58, 32), + dt2 = new DateTime(2010, 12, 20), + dt3 = new DateTime(1998, 1, 1), + dt4 = new DateTime(1, 1, 1, 3, 58, 32, DateTimeKind.Utc) + }; + dcjsSettings = new DataContractJsonSerializerSettings() { DateTimeFormat = jsonTypes.DTF_yyyygg }; + var actual2 = SerializeAndDeserialize(DTF_class, "{\"dt1\":\"0001 A.D.\",\"dt2\":\"2010 A.D.\",\"dt3\":\"1998 A.D.\",\"dt4\":\"0001 A.D.\"}", dcjsSettings); + Assert.NotNull(actual2); + Assert.True(actual2.dt1 == new DateTime(1, 1, 1)); + Assert.True(actual2.dt2 == new DateTime(2010, 1, 1)); + Assert.True(actual2.dt3 == new DateTime(1998, 1, 1)); + Assert.True(actual2.dt4 == new DateTime(1, 1, 1)); + + var graph = new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0)); + dcjsSettings = new DataContractJsonSerializerSettings() { DateTimeFormat = jsonTypes.DTF_DMMMM }; + var actual3 = SerializeAndDeserialize(graph, "{\"DateTime\":\"1, mayo\",\"OffsetMinutes\":60}", dcjsSettings); + Assert.NotNull(actual3); + Assert.True(actual3 == new DateTimeOffset(2017, 5, 1, 1, 0, 0, new TimeSpan(1, 0, 0))); + + var dt35832 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 3, 58, 32); + var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); + var expected_DT_list = "[\"03:58:32.00 a.m.\",\"12:00:00.00 a.m.\",\"12:00:00.00 a.m.\",\"03:58:32.00 a.m.\"]"; + dcjsSettings = new DataContractJsonSerializerSettings() { DateTimeFormat = jsonTypes.DTF_hmsFt }; + var actual4 = SerializeAndDeserialize(jsonTypes.DT_List, expected_DT_list, dcjsSettings); + Assert.NotNull(actual4); + Assert.True(actual4[0] == dt35832); + Assert.True(actual4[1] == dt); + Assert.True(actual4[2] == dt); + Assert.True(actual4[3] == dt35832); + + var expected_DT_dictionary = "[{\"Key\":\"03:58:32.00 a.m.\",\"Value\":\"03:58:32.00 a.m.\"},{\"Key\":\"12:00:00.00 a.m.\",\"Value\":\"12:00:00.00 a.m.\"}]"; + dcjsSettings = new DataContractJsonSerializerSettings() { DateTimeFormat = jsonTypes.DTF_hmsFt }; + var actual5 = SerializeAndDeserialize(jsonTypes.DT_Dictionary, expected_DT_dictionary, dcjsSettings); + Assert.NotNull(actual5); + Assert.True(actual5[dt35832] == dt35832); + Assert.True(actual5[dt] == dt); + + var dateTime = new DateTime(2008, 5, 1, 8, 6, 32, DateTimeKind.Local); + string expectedOutput = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffK", DateTimeFormatInfo.CurrentInfo); + expectedOutput = String.Format("\"{0}\"", expectedOutput); + dcjsSettings = new DataContractJsonSerializerSettings() { DateTimeFormat = jsonTypes.DTF_DefaultFormatProviderIsDateTimeFormatInfoDotCurrentInfo }; + var actual6 = SerializeAndDeserialize(dateTime, expectedOutput, dcjsSettings); + Assert.NotNull(actual6); + Assert.True(actual6 == dateTime); + } + + [Fact] + [ActiveIssue(18512, TestPlatforms.Linux)] + public static void DCJS_VerifyDateTimeForDateTimeFormat() + { + var jsonTypes = new JsonTypes(); + var dateTime = new DateTime(DateTime.Now.Year, 12, 1); + var expectedString = "\"" + dateTime.ToString("MMMM") + "\""; + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_MMMM, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var actual = SerializeAndDeserialize(dateTime, expectedString, dcjsSettings); + Assert.NotNull(actual); + Assert.True(actual == dateTime); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_hmsFt, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var baseline = "\"03:58:32.00 a.m.\""; + var actual2 = SerializeAndDeserialize(new DateTime(1, 1, 1, 3, 58, 32), baseline, dcjsSettings); + Assert.NotNull(actual2); + Assert.True(actual2 == new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 3, 58, 32)); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_DMMMM, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value3 = new DateTime(DateTime.Now.Year, 12, 20); + var actual3 = SerializeAndDeserialize(value3, "\"20, diciembre\"", dcjsSettings); + Assert.NotNull(actual3); + Assert.Equal(value3, actual3); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_s, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value4 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 32); + var actual4 = SerializeAndDeserialize(value4, "\"32\"", dcjsSettings); + Assert.NotNull(actual4); + Assert.Equal(value4, actual4); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_yyyygg, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value5 = new DateTime(1998, 1, 1); + var actual5 = SerializeAndDeserialize(value5, "\"1998 A.D.\"", dcjsSettings); + Assert.NotNull(actual5); + Assert.Equal(value5, actual5); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = jsonTypes.DTF_UTC, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value6 = new DateTime(1998, 1, 1, 8, 25, 32, DateTimeKind.Utc); + var actual6 = SerializeAndDeserialize(value6, "\"1998-01-01T08:25:32.000Z\"", dcjsSettings); + Assert.NotNull(actual6); + Assert.Equal(value6, actual6); + } + + [Fact] + public static void DCJS_VerifyDictionaryTypes() + { + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value = new JsonTypes.DictionaryClass(); + var actual = SerializeAndDeserialize(value, "{\"_dict\":{\"Title\":\"Sherlocl Kholmes\",\"Name\":\"study scarlet\"}}", dcjsSettings); + Assert.NotNull(actual); + + var value2 = new ImplementDictionary() + { + {"",0}, + {"a1",1}, + {"a2",2}, + {"a3",3}, + {"a4",4} + }; + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() { typeof(TestClass), typeof(TestStruct) } + }; + var actual2 = SerializeAndDeserialize(value2, "{\"\":0,\"a1\":1,\"a2\":2,\"a3\":3,\"a4\":4}", dcjsSettings); + Assert.NotNull(actual2); + Assert.Equal(5, actual2.Count); + Assert.Equal(0, actual2[""]); + Assert.Equal(1, actual2["a1"]); + Assert.Equal(2, actual2["a2"]); + Assert.Equal(3, actual2["a3"]); + Assert.Equal(4, actual2["a4"]); + } + +#if ReflectionOnly + [ActiveIssue(18373)] +#endif + [Fact] + public static void DCJS_VerifyDictionaryFormat() + { + var jsonTypes = new JsonTypes(); + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var actual = SerializeAndDeserialize(jsonTypes.StringKeyValue, "{\"Hi\":\"There\"}", dcjsSettings); + Assert.NotNull(actual); + Assert.Equal(jsonTypes.StringKeyValue, actual); + + var actual2 = SerializeAndDeserialize(jsonTypes.StructKeyValue, "{\"12\":{\"value1\":15}}", dcjsSettings); + Assert.NotNull(actual2); + Assert.Equal(jsonTypes.StructKeyValue, actual2); + + var actual3 = SerializeAndDeserialize(jsonTypes.EnumKeyValue, "{\"Value1\":4}", dcjsSettings); + Assert.NotNull(actual3); + Assert.Equal(jsonTypes.EnumKeyValue, actual3); + + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() { typeof(TestClass), typeof(TestStruct) } + }; + var actual4 = SerializeAndDeserialize(jsonTypes.ObjectKeyValue, "{\"1,2#45\":{\"__type\":\"TestClass:#\",\"floatNum\":90,\"intList\":[4,5]},\"6,7#10\":{\"__type\":\"TestStruct:#\",\"value1\":25}}", dcjsSettings); + Assert.NotNull(actual4); + Assert.Equal(actual4.Count, 2); + } + + [Fact] + public static void DCJS_VerifySuppressTypeInformation() + { + var testClassWithoutKT = new TestClassWithoutKT() { testClass = new TestClass() }; + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = false, + EmitTypeInformation = EmitTypeInformation.Never, + KnownTypes = new List() + }; + var actual = SerializeAndDeserialize(testClassWithoutKT, "{\"testClass\":{\"floatNum\":0,\"intList\":null}}", dcjsSettings); + Assert.NotNull(actual); + Assert.True(actual.testClass.GetType().Name == "Object"); + + var testClassWithKT = new TestClassWithKT() { testClass = new TestClass() }; + var actual2 = SerializeAndDeserialize(testClassWithKT, "{\"testClass\":{\"floatNum\":0,\"intList\":null}}", dcjsSettings); + Assert.NotNull(actual2); + Assert.True(actual2.testClass.GetType().Name == "Object"); + } + + [Fact] + public static void DCJS_VerifyIndentation() + { + var testClass = new TestClass() + { + floatNum = 2.3f, + intList = new List() { 2, 3, 4 } + }; + + string spaceChars = " "; + var dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = false, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() + }; + var value = VerifyIndentationOfSerializedXml( + testClass, + "{\r\n \"floatNum\": 2.3,\r\n \"intList\": [\r\n 2,\r\n 3,\r\n 4\r\n ]\r\n}", + spaceChars, + dcjsSettings); + Assert.NotNull(value); + Assert.True(value.floatNum == 2.3f); + Assert.True(value.intList[0] == 2); + Assert.True(value.intList[1] == 3); + Assert.True(value.intList[2] == 4); + + spaceChars = "\n"; + var value2 = VerifyIndentationOfSerializedXml( + testClass, + "{\r\n\n\"floatNum\": 2.3,\r\n\n\"intList\": [\r\n\n\n2,\r\n\n\n3,\r\n\n\n4\r\n\n]\r\n}", + spaceChars, + dcjsSettings); + Assert.NotNull(value2); + Assert.True(value2.floatNum == 2.3f); + Assert.True(value2.intList[0] == 2); + Assert.True(value2.intList[1] == 3); + Assert.True(value2.intList[2] == 4); + + var emptyList = new TestClass() + { + floatNum = 2.3f, + intList = new List() + }; + spaceChars = " "; + var value3 = VerifyIndentationOfSerializedXml( + emptyList, + "{\r\n \"floatNum\": 2.3,\r\n \"intList\": [ ]\r\n}", + spaceChars, + dcjsSettings); + Assert.NotNull(value3); + Assert.True(value3.floatNum == 2.3f); + Assert.True(value3.intList.Count == 0); + + var jsonTypes = new JsonTypes(); + dcjsSettings = new DataContractJsonSerializerSettings() + { + DateTimeFormat = null, + UseSimpleDictionaryFormat = true, + EmitTypeInformation = EmitTypeInformation.AsNeeded, + KnownTypes = new List() { typeof(Dictionary), typeof(List), typeof(int[]) } + }; + spaceChars = " "; + var value4 = VerifyIndentationOfSerializedXml( + jsonTypes.ObjectList, + "[\r\n [\r\n {\r\n \"__type\": \"KeyValuePairOfstringstring:#System.Collections.Generic\",\r\n \"key\": \"Title\",\r\n \"value\": \"Sherlocl Kholmes\"\r\n }\r\n ],\r\n [\r\n 1,\r\n 2,\r\n 3\r\n ],\r\n [\r\n \"hi\",\r\n 1,\r\n \"there\"\r\n ]\r\n]", + spaceChars, + dcjsSettings); + Assert.NotNull(value4); + Assert.True(value4.Count == 3); + } + + [Fact] + public static void DCJS_Regression195109() + { + var value = new DerivedType(); + var actual = VerifyIndentationOfSerializedXml(value, "", null, null, () => new DataContractJsonSerializer(typeof(BaseType)), true); + Assert.Equal(value.StrBase, actual.StrBase); + Assert.Equal(value.StrDerived, actual.StrDerived); + } + private static T SerializeAndDeserialize(T value, string baseline, DataContractJsonSerializerSettings settings = null, Func serializerFactory = null, bool skipStringCompare = false) { DataContractJsonSerializer dcjs; @@ -2509,7 +2868,7 @@ private static T SerializeAndDeserialize(T value, string baseline, DataContra return deserialized; } } - + private static T DeserializeString(string stringToDeserialize, bool shouldReportDeserializationExceptions = true, DataContractJsonSerializerSettings settings = null, Func serializerFactory = null) { DataContractJsonSerializer dcs; @@ -2532,6 +2891,44 @@ private static T DeserializeString(string stringToDeserialize, bool shouldRep } } + private static T VerifyIndentationOfSerializedXml(T value, string baseline, string indentChars = null, DataContractJsonSerializerSettings settings = null, Func serializerFactory = null, bool skipStringCompare = false) + { + DataContractJsonSerializer dcjs; + if (serializerFactory != null) + { + dcjs = serializerFactory(); + } + else + { + dcjs = (settings != null) ? new DataContractJsonSerializer(typeof(T), settings) : new DataContractJsonSerializer(typeof(T)); + } + + using (var ms = new MemoryStream()) + { + XmlDictionaryWriter writer; + if (indentChars != null) + { + writer = JsonReaderWriterFactory.CreateJsonWriter(ms, Encoding.UTF8, true, true, indentChars); + } + else + { + writer = JsonReaderWriterFactory.CreateJsonWriter(ms, Encoding.UTF8, false, true); + } + dcjs.WriteObject(writer, value); + writer.Flush(); + string actualOutput = Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Position); + if (!skipStringCompare) + { + Utils.CompareResult result = Utils.Compare(baseline, actualOutput, false); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); + } + ms.Position = 0; + T deserialized = (T)dcjs.ReadObject(ms); + return deserialized; + } + } + private static string s_errorMsg = "The field/property {0} value of deserialized object is wrong"; private static string getCheckFailureMsg(string propertyName) { diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 3b91b1ac671e..02e734c5f65e 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -1724,36 +1724,36 @@ public class NestedGenericClassImplementingIXmlSerialiable : IXmlSerializable public static bool WriteXmlInvoked = false; public static bool ReadXmlInvoked = false; - public string StringValue { get; set; } - private T GenericValue { get; set; } + public string StringValue { get; set; } + private T GenericValue { get; set; } - public NestedGenericClassImplementingIXmlSerialiable() - { - GenericValue = default(T); - } + public NestedGenericClassImplementingIXmlSerialiable() + { + GenericValue = default(T); + } - public T GetPrivateMember() - { - return GenericValue; - } + public T GetPrivateMember() + { + return GenericValue; + } - public System.Xml.Schema.XmlSchema GetSchema() - { - return null; - } + public System.Xml.Schema.XmlSchema GetSchema() + { + return null; + } - public void ReadXml(System.Xml.XmlReader reader) - { - ReadXmlInvoked = true; - reader.MoveToContent(); - StringValue = reader.GetAttribute("StringValue"); - } + public void ReadXml(System.Xml.XmlReader reader) + { + ReadXmlInvoked = true; + reader.MoveToContent(); + StringValue = reader.GetAttribute("StringValue"); + } - public void WriteXml(System.Xml.XmlWriter writer) - { - WriteXmlInvoked = true; - writer.WriteAttributeString("StringValue", StringValue); - } + public void WriteXml(System.Xml.XmlWriter writer) + { + WriteXmlInvoked = true; + writer.WriteAttributeString("StringValue", StringValue); + } } } @@ -4406,4 +4406,446 @@ public class Pet [XmlIgnoreAttribute] public string Comment; public string Comment2; +} + +public class JsonTypes +{ + public Dictionary StringKeyValue + { + get + { + return new Dictionary() + { + { + "Hi", "There" + } + }; + } + } + + public Dictionary EnumKeyValue + { + get + { + return new Dictionary() + { + { + TestEnumValues.Value1, TestEnumValues.Value2 + } + }; + } + } + + public Dictionary StructKeyValue + { + get + { + return new Dictionary() + { + { + new TestStruct(){value1 = 12}, new TestStruct(){value1 = 15} + } + }; + } + } + + public Dictionary ObjectKeyValue + { + get + { + return new Dictionary() + { + { + new TestClass(){intList = new List(){1,2}, floatNum = 45f}, + new TestClass(){intList = new List(){4,5}, floatNum = 90f} + }, + { + new TestClass(){intList = new List(){6,7}, floatNum = 10f}, + new TestStruct(){value1 = 25} + }, + }; + } + } + + [DataContract] + public class DictionaryClass + { + [DataMember] + private Dictionary _dict = new Dictionary() + { + { + "Title", "Sherlocl Kholmes" + }, + { + "Name", "study scarlet" + } + }; + } + + public DateTimeFormat DTF_DMMMM + { + get + { + return new DateTimeFormat("d, MMMM", CultureInfo.CreateSpecificCulture("es-AR")); + } + } + + public DateTimeFormat DTF_hmsFt + { + get + { + return new DateTimeFormat("hh:mm:ss.ff tt", CultureInfo.CreateSpecificCulture("es-AR")); + } + } + + public DateTimeFormat DTF_MMMM + { + get + { + return new DateTimeFormat("MMMM", CultureInfo.CurrentCulture); + } + } + + public DateTimeFormat DTF_s + { + get + { + return new DateTimeFormat("ss", CultureInfo.CreateSpecificCulture("de-DE")); + } + } + + public DateTimeFormat DTF_yyyygg + { + get + { + return new DateTimeFormat("yyyy gg", CultureInfo.InvariantCulture); + } + } + + public DateTimeFormat DTF_UTC + { + get + { + return new DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fffK", CultureInfo.InvariantCulture); + } + } + + public DateTimeFormat DTF_DefaultFormatProviderIsDateTimeFormatInfoDotCurrentInfo + { + get + { + return new DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fffK"); + } + } + + [DataContract] + public class DTF_class + { + [DataMember] + public DateTime dt1 { get; set; } + [DataMember] + public DateTime dt2 { get; set; } + [DataMember] + public DateTime dt3 { get; set; } + [DataMember] + public DateTime dt4 { get; set; } + } + + public List DT_List + { + get + { + return new List() + { + new DateTime(1, 1, 1, 3, 58, 32), + new DateTime(DateTime.Now.Year, 12, 20), + new DateTime(1998, 1, 1), + new DateTime(1, 1, 1, 3, 58, 32,DateTimeKind.Utc) + }; + } + } + + public Dictionary DT_Dictionary + { + get + { + return new Dictionary + { + { new DateTime(1, 1, 1, 3, 58, 32), new DateTime(1, 1, 1, 3, 58, 32,DateTimeKind.Utc) }, + { new DateTime(1998, 1, 1), new DateTime(DateTime.Now.Year, 12, 20) } + }; + } + } + + public List ObjectList + { + get + { + return new List() + { + new Dictionary() + { + { + "Title", "Sherlocl Kholmes" + } + }, + new int[]{1,2,3}, + new object[]{"hi", 1, "there"} + }; + } + } + + public List ObjectListDeserialized + { + get + { + return new List() + { + new object[]{new KeyValuePair("Title", "Sherlocl Kholmes")}, + new object[]{1,2,3}, + new object[]{"hi", 1, "there"} + }; + } + } +} + +public enum TestEnumValues +{ + Value1 = 3, + Value2 = 4 +} + +public struct TestStruct +{ + public int value1; + + public override string ToString() + { + return this.value1.ToString(); + } + + public static TestStruct Parse(string value) + { + TestStruct result = new TestStruct(); + result.value1 = Int32.Parse(value); + return result; + } +} + +public class TestClass +{ + public List intList { get; set; } + public float floatNum { get; set; } + private static char s_listSeparator = ','; + private static char s_memberSeparator = '#'; + + public override string ToString() + { + string ints = String.Join(",", intList); + return String.Format("{0}{1}{2}", ints, s_memberSeparator, floatNum); + } + + public static TestClass Parse(string value) + { + string[] members = value.Split(s_memberSeparator); + string[] numbers = members[0].Split(s_listSeparator); + + List ints = new List(); + foreach (string number in numbers) + { + ints.Add(Int32.Parse(number)); + } + TestClass o = new TestClass(); + o.intList = ints; + o.floatNum = Single.Parse(members[1]); + return o; + } + + public override int GetHashCode() + { + return (int)this.floatNum; + } +} + +public class TestClassWithoutKT +{ + public object testClass; +} + +[KnownType(typeof(TestClass))] +public class TestClassWithKT +{ + public object testClass; +} + +public class ImplementDictionary : IDictionary +{ + private DictionaryEntry[] _items; + private Int32 _itemsInUse = 0; + + public ImplementDictionary() + { + _items = new DictionaryEntry[10]; + } + + public ImplementDictionary(Int32 numItems) + { + _items = new DictionaryEntry[numItems]; + } + + #region IDictionary Members + public bool IsReadOnly { get { return false; } } + public bool Contains(object key) + { + Int32 index; + return TryGetIndexOfKey(key, out index); + } + public bool IsFixedSize { get { return false; } } + public void Remove(object key) + { + if (key == null) throw new ArgumentNullException("key"); + Int32 index; + if (TryGetIndexOfKey(key, out index)) + { + Array.Copy(_items, index + 1, _items, index, _itemsInUse - index - 1); + _itemsInUse--; + } + else + { + } + } + public void Clear() { _itemsInUse = 0; } + public void Add(object key, object value) + { + if (_itemsInUse == _items.Length) + throw new InvalidOperationException("The dictionary cannot hold any more items."); + _items[_itemsInUse++] = new DictionaryEntry(key, value); + } + public ICollection Keys + { + get + { + Object[] keys = new Object[_itemsInUse]; + for (Int32 n = 0; n < _itemsInUse; n++) + keys[n] = _items[n].Key; + return keys; + } + } + public ICollection Values + { + get + { + Object[] values = new Object[_itemsInUse]; + for (Int32 n = 0; n < _itemsInUse; n++) + values[n] = _items[n].Value; + return values; + } + } + public object this[object key] + { + get + { + Int32 index; + if (TryGetIndexOfKey(key, out index)) + { + return _items[index].Value; + } + else + { + return null; + } + } + set + { + Int32 index; + if (TryGetIndexOfKey(key, out index)) + { + _items[index].Value = value; + } + else + { + Add(key, value); + } + } + } + private Boolean TryGetIndexOfKey(Object key, out Int32 index) + { + for (index = 0; index < _itemsInUse; index++) + { + if (_items[index].Key.Equals(key)) return true; + } + return false; + } + private class ImplementDictionaryEnumerator : IDictionaryEnumerator + { + private DictionaryEntry[] _items; + private Int32 _index = -1; + + public ImplementDictionaryEnumerator(ImplementDictionary sd) + { + _items = new DictionaryEntry[sd.Count]; + Array.Copy(sd._items, 0, _items, 0, sd.Count); + } + + public Object Current { get { ValidateIndex(); return _items[_index]; } } + + public DictionaryEntry Entry + { + get { return (DictionaryEntry)Current; } + } + + public Object Key { get { ValidateIndex(); return _items[_index].Key; } } + + public Object Value { get { ValidateIndex(); return _items[_index].Value; } } + + public Boolean MoveNext() + { + if (_index < _items.Length - 1) { _index++; return true; } + return false; + } + + private void ValidateIndex() + { + if (_index < 0 || _index >= _items.Length) + throw new InvalidOperationException("Enumerator is before or after the collection."); + } + + public void Reset() + { + _index = -1; + } + } + public IDictionaryEnumerator GetEnumerator() + { + return new ImplementDictionaryEnumerator(this); + } + #endregion + + #region ICollection Members + public bool IsSynchronized { get { return false; } } + public object SyncRoot { get { throw new NotImplementedException(); } } + public int Count { get { return _itemsInUse; } } + public void CopyTo(Array array, int index) { throw new NotImplementedException(); } + #endregion + + #region IEnumerable Members + IEnumerator IEnumerable.GetEnumerator() + { + return ((IDictionary)this).GetEnumerator(); + } + #endregion +} + +[DataContract] +[KnownType(typeof(DerivedType))] +public class BaseType +{ + [DataMember] + public string StrBase = "base"; +} +[DataContract] +public class DerivedType : BaseType +{ + [DataMember] + public string StrDerived = "derived"; } \ No newline at end of file From ef2a8c41624bc8dc4a7cc6358458b389608dd1b2 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 12:37:44 -0400 Subject: [PATCH 218/336] Skip two transactions tests on desktop The tests are expecting a PlatformNotSupportedException, as it the operation isn't supported on core. --- src/System.Transactions.Local/tests/LTMEnlistmentTests.cs | 1 + src/System.Transactions.Local/tests/NonMsdtcPromoterTests.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/System.Transactions.Local/tests/LTMEnlistmentTests.cs b/src/System.Transactions.Local/tests/LTMEnlistmentTests.cs index f334a38df501..bef98f2ae53d 100644 --- a/src/System.Transactions.Local/tests/LTMEnlistmentTests.cs +++ b/src/System.Transactions.Local/tests/LTMEnlistmentTests.cs @@ -76,6 +76,7 @@ public void SinglePhaseDurable(int volatileCount, EnlistmentOptions volatileEnli [InlineData(0, EnlistmentOptions.None, EnlistmentOptions.None, Phase1Vote.Prepared, Phase1Vote.Prepared, true, EnlistmentOutcome.Aborted, EnlistmentOutcome.Aborted, TransactionStatus.Aborted)] [InlineData(1, EnlistmentOptions.None, EnlistmentOptions.None, Phase1Vote.Prepared, Phase1Vote.Prepared, true, EnlistmentOutcome.Aborted, EnlistmentOutcome.Aborted, TransactionStatus.Aborted)] [InlineData(2, EnlistmentOptions.None, EnlistmentOptions.None, Phase1Vote.Prepared, Phase1Vote.Prepared, true, EnlistmentOutcome.Aborted, EnlistmentOutcome.Aborted, TransactionStatus.Aborted)] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Expects PNSE due to not being supported on core")] public void TwoPhaseDurable(int volatileCount, EnlistmentOptions volatileEnlistmentOption, EnlistmentOptions durableEnlistmentOption, Phase1Vote volatilePhase1Vote, Phase1Vote durablePhase1Vote, bool commit, EnlistmentOutcome expectedVolatileOutcome, EnlistmentOutcome expectedDurableOutcome, TransactionStatus expectedTxStatus) { Transaction tx = null; diff --git a/src/System.Transactions.Local/tests/NonMsdtcPromoterTests.cs b/src/System.Transactions.Local/tests/NonMsdtcPromoterTests.cs index 7179c27b030a..246733f23de0 100644 --- a/src/System.Transactions.Local/tests/NonMsdtcPromoterTests.cs +++ b/src/System.Transactions.Local/tests/NonMsdtcPromoterTests.cs @@ -2287,6 +2287,7 @@ public void PSPENonMsdtcSetDistributedTransactionIdentifierCallWithWrongNotifica } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Expects PNSE due to not being supported on core")] public void SimpleTransactionSuperior() { MySimpleTransactionSuperior superior = new MySimpleTransactionSuperior(); From a93f6a4e6ca1643dbe505d78ea8dd7576622dc16 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Wed, 19 Apr 2017 09:40:01 -0700 Subject: [PATCH 219/336] use PlatformDetection instead of ifdef --- .../tests/Configurations.props | 1 - .../tests/CryptographicException.cs | 14 +++--- .../tests/HmacAlgorithmTest.cs | 43 +++++++++++-------- .../tests/SymmetricAlgorithm/Trivial.cs | 15 ++++--- ...urity.Cryptography.Primitives.Tests.csproj | 4 +- 5 files changed, 47 insertions(+), 30 deletions(-) diff --git a/src/System.Security.Cryptography.Primitives/tests/Configurations.props b/src/System.Security.Cryptography.Primitives/tests/Configurations.props index d60af0bf2c91..8b803e0772f2 100644 --- a/src/System.Security.Cryptography.Primitives/tests/Configurations.props +++ b/src/System.Security.Cryptography.Primitives/tests/Configurations.props @@ -4,7 +4,6 @@ netcoreapp; netstandard; - netfx; \ No newline at end of file diff --git a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs index 4cf28c294472..0dac949320db 100644 --- a/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs +++ b/src/System.Security.Cryptography.Primitives/tests/CryptographicException.cs @@ -17,11 +17,15 @@ public static void Ctor() Assert.NotNull(new CryptographicException().Message); Assert.Equal(message, new CryptographicException(message).Message); Assert.Equal(message + " 12345", new CryptographicException(message + " {0}", "12345").Message); -#if netfx - Assert.Equal(unchecked((int)0x80070005), new CryptographicException(5).HResult); -#else - Assert.Equal(5, new CryptographicException(5).HResult); -#endif + if (PlatformDetection.IsFullFramework) + { + Assert.Equal(unchecked((int)0x80070005), new CryptographicException(5).HResult); + } + else + { + Assert.Equal(5, new CryptographicException(5).HResult); + } + Assert.Same(inner, new CryptographicException(message, inner).InnerException); Assert.Equal(message, new CryptographicException(message, inner).Message); } diff --git a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs index cc9d3ac28caf..26b4cefa0154 100644 --- a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs +++ b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs @@ -13,11 +13,14 @@ public void SetNullAlgorithmName() { using (HMAC hmac = new TestHMAC()) { -#if netfx - Assert.Throws(() => hmac.HashName = null); -#else - hmac.HashName = null; -#endif + if (PlatformDetection.IsFullFramework) + { + Assert.Throws(() => hmac.HashName = null); + } + else + { + hmac.HashName = null; + } Assert.Null(hmac.HashName); } @@ -46,13 +49,16 @@ public void ResetAlgorithmName() // On desktop builds this next line will succeed (modulo FIPS prohibitions on MD5). // On CoreFX it throws. -#if netfx - hmac.HashName = "MD5"; - Assert.Equal("MD5", hmac.HashName); -#else - Assert.Throws(() => hmac.HashName = "MD5"); - Assert.Equal("SHA1", hmac.HashName); -#endif + if (PlatformDetection.IsFullFramework) + { + hmac.HashName = "MD5"; + Assert.Equal("MD5", hmac.HashName); + } + else + { + Assert.Throws(() => hmac.HashName = "MD5"); + Assert.Equal("SHA1", hmac.HashName); + } } } @@ -82,11 +88,14 @@ public void TrivialDerivationThrows() hmac.Key = Array.Empty(); byte[] ignored; -#if netfx - ignored = hmac.ComputeHash(Array.Empty()); -#else - Assert.Throws(() => ignored = hmac.ComputeHash(Array.Empty())); -#endif + if (PlatformDetection.IsFullFramework) + { + ignored = hmac.ComputeHash(Array.Empty()); + } + else + { + Assert.Throws(() => ignored = hmac.ComputeHash(Array.Empty())); + } } } diff --git a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs index 8789766ad963..e7ebb2609720 100644 --- a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs @@ -117,12 +117,15 @@ public static void TestKey() try { byte[] hugeKey = new byte[536870917]; // value chosen so that when multiplied by 8 (bits) it overflows to the value 40 -#if netfx - // This change should be ported to netfx - s.Key = hugeKey; -#else - Assert.Throws(() => s.Key = hugeKey); -#endif + if (PlatformDetection.IsFullFramework) + { + // This change should be ported to netfx + s.Key = hugeKey; + } + else + { + Assert.Throws(() => s.Key = hugeKey); + } } catch (OutOfMemoryException) { } // in case there isn't enough memory at test-time to allocate the large array } diff --git a/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj b/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj index c534e3e5d2b5..8cb948596014 100644 --- a/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj +++ b/src/System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj @@ -5,7 +5,6 @@ {101EB757-55A4-4F48-841C-C088640B8F57} $(DefineConstants);netcoreapp - $(DefineConstants);netfx @@ -25,6 +24,9 @@ CommonTest\System\IO\PositionValueStream.cs + + CommonTest\System\PlatformDetection.cs + From ed3ec8b0681211e82036a294c7857d77a4edabf2 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 12:56:41 -0400 Subject: [PATCH 220/336] Fix PLINQ tests for desktop - Avoid using Enumerable.Append, which isn't available in desktop - Suppress tests on desktop where the test is verifying a bug fix in core - Allow some variance to account for different floating point support in desktop vs core --- .../CancellationParallelQueryCombinationTests.cs | 1 + src/System.Linq.Parallel/tests/Helpers/Sources.cs | 2 +- src/System.Linq.Parallel/tests/Helpers/UnorderedSources.cs | 4 ++-- src/System.Linq.Parallel/tests/QueryOperators/CastTests.cs | 1 + .../tests/QueryOperators/OrderByThenByTests.cs | 7 ++++++- src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs | 1 + .../tests/QueryOperators/ToArrayTests.cs | 1 + 7 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/System.Linq.Parallel/tests/Combinatorial/CancellationParallelQueryCombinationTests.cs b/src/System.Linq.Parallel/tests/Combinatorial/CancellationParallelQueryCombinationTests.cs index 997293f5fb09..349b3ae0b7d3 100644 --- a/src/System.Linq.Parallel/tests/Combinatorial/CancellationParallelQueryCombinationTests.cs +++ b/src/System.Linq.Parallel/tests/Combinatorial/CancellationParallelQueryCombinationTests.cs @@ -776,6 +776,7 @@ public static void ToArray_AggregateException_Wraps_OperationCanceledException(L [MemberData(nameof(UnaryCancelingOperators))] [MemberData(nameof(BinaryCancelingOperators))] [MemberData(nameof(OrderCancelingOperators))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core bug fix https://github.com/dotnet/corefx/pull/2307")] public static void ToArray_OperationCanceledException_PreCanceled(Labeled, Action, ParallelQuery>> operation) { AssertThrows.AlreadyCanceled(source => operation.Item(source, () => { }).ToArray()); diff --git a/src/System.Linq.Parallel/tests/Helpers/Sources.cs b/src/System.Linq.Parallel/tests/Helpers/Sources.cs index 80f8f952d8af..7f212034b202 100644 --- a/src/System.Linq.Parallel/tests/Helpers/Sources.cs +++ b/src/System.Linq.Parallel/tests/Helpers/Sources.cs @@ -44,7 +44,7 @@ public static IEnumerable Ranges(IEnumerable counts, Func Ranges(IEnumerable counts, Func Ranges(IEnumerable counts, Func("source", () => ((ParallelQuery)null).Cast()); diff --git a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs index c1b61be779b1..50a731e0426d 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/OrderByThenByTests.cs @@ -391,6 +391,7 @@ public static void OrderByDescending_ExtremeComparer(Labeled> [MemberData(nameof(Sources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(Sources))] [MemberData(nameof(OrderByRandomData), new[] { 0, 1, 2, 16 })] [MemberData(nameof(UnorderedSources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(UnorderedSources))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Validates .NET Core bug fix https://github.com/dotnet/corefx/pull/2305")] public static void OrderBy_NotPipelined_ExtremeComparer(Labeled> labeled, int count) { int prev = 0; @@ -401,6 +402,7 @@ public static void OrderBy_NotPipelined_ExtremeComparer(Labeled> labeled, int count) { int prev = count - 1; @@ -948,6 +950,7 @@ public static void ThenByDescending_NotPipelined_CustomComparator_Longrunning(La [MemberData(nameof(Sources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(Sources))] [MemberData(nameof(OrderByRandomData), new[] { 0, 1, 2, 16 })] [MemberData(nameof(UnorderedSources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(UnorderedSources))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Validates .NET Core bug fix https://github.com/dotnet/corefx/pull/2305")] // Regression test for the PLINQ version of #2239 - comparer returning max/min value. public static void ThenBy_ExtremeComparer(Labeled> labeled, int count) { @@ -963,6 +966,7 @@ public static void ThenBy_ExtremeComparer(Labeled> labeled, i [MemberData(nameof(Sources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(Sources))] [MemberData(nameof(OrderByRandomData), new[] { 0, 1, 2, 16 })] [MemberData(nameof(UnorderedSources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(UnorderedSources))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Validates .NET Core bug fix https://github.com/dotnet/corefx/pull/2305")] // Regression test for the PLINQ version of #2239 - comparer returning max/min value. public static void ThenByDescending_ExtremeComparer(Labeled> labeled, int count) { @@ -977,6 +981,7 @@ public static void ThenByDescending_ExtremeComparer(Labeled> [Theory] [MemberData(nameof(Sources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(Sources))] [MemberData(nameof(UnorderedSources.Ranges), new[] { 0, 1, 2, 16 }, MemberType = typeof(UnorderedSources))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Validates .NET Core bug fix https://github.com/dotnet/corefx/pull/2305")] public static void ThenBy_NotPipelined_ExtremeComparer(Labeled> labeled, int count) { int prev = 0; @@ -987,7 +992,7 @@ public static void ThenBy_NotPipelined_ExtremeComparer(Labeled> labeled, int count) { int prev = count - 1; diff --git a/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs index ce75e075305a..1592be6d1c0e 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/SumTests.cs @@ -126,6 +126,7 @@ public static void Sum_Long_Overflow() [InlineData(1)] [InlineData(2)] [InlineData(16)] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core bug fix https://github.com/dotnet/corefx/pull/1215")] public static void Sum_Float(int count) { Assert.Equal(Functions.SumRange(0, count), ParallelEnumerable.Range(0, count).Select(x => (float)x).Sum()); diff --git a/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs b/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs index c7f1b49cb0ac..3f866a2babfc 100644 --- a/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs +++ b/src/System.Linq.Parallel/tests/QueryOperators/ToArrayTests.cs @@ -46,6 +46,7 @@ public static void ToArray_Longrunning(Labeled> labeled, int } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core bug fix https://github.com/dotnet/corefx/pull/2307")] public static void ToArray_OperationCanceledException_PreCanceled() { AssertThrows.AlreadyCanceled(source => source.ToArray()); From 9f03a84341e9c1e003982ae10f3577087fb265ea Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Wed, 19 Apr 2017 18:58:29 +0200 Subject: [PATCH 221/336] Ignored DataAnnotations (#18620) --- src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt | 3 +++ src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt index fdff0cb912d0..a7a14056c19f 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt @@ -19,6 +19,9 @@ MembersMustExist : Member 'System.Runtime.InteropServices.RuntimeEnvironment..ct // Activator changed to static class intentionally. See here: https://github.com/dotnet/corefx/issues/11869 CannotMakeTypeAbstract : Type 'System.Activator' is abstract in the implementation but is not abstract in the contract. +// Won't came back into netcoreapp. See here: https://github.com/dotnet/corefx/issues/18075 +MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. + // Debugger changed to static class intentionally. See here: https://github.com/dotnet/standard/commit/d5fbcbeeeb7f15102fdac111bc8d7d5d72c32036#diff-2856a41639a1f4feb4e95ae667e069b7R10012 CannotMakeTypeAbstract : Type 'System.Diagnostics.Debugger' is abstract in the implementation but is not abstract in the contract. MembersMustExist : Member 'System.Diagnostics.Debugger..ctor()' does not exist in the implementation but it does exist in the contract. diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index e8393a306258..492b017a3f40 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -22,8 +22,6 @@ MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.g MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.DataAnnotations: -MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Data: MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. @@ -93,4 +91,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 83 \ No newline at end of file +Total Issues: 82 From bf27de3d22d6a60f64f5d5daaa73d6e66ba112c3 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Wed, 19 Apr 2017 10:16:59 -0700 Subject: [PATCH 222/336] HMAC.HashName = null should throw ArgumentNullException on Core --- .../src/System/Security/Cryptography/HMAC.cs | 4 ++++ .../tests/HmacAlgorithmTest.cs | 10 +--------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HMAC.cs b/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HMAC.cs index 4291e6250c70..07b80647c0e7 100644 --- a/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HMAC.cs +++ b/src/System.Security.Cryptography.Primitives/src/System/Security/Cryptography/HMAC.cs @@ -41,6 +41,9 @@ public String HashName } set { + if (value == null) + throw new ArgumentNullException(nameof(HashName)); + // On the desktop, setting the HashName selects (or switches over to) a new hashing algorithm via CryptoConfig. // Our intended refactoring turns HMAC back into an abstract class with no algorithm-specific implementation. // Changing the HashName would not have the intended effect so throw a proper exception so the developer knows what's up. @@ -50,6 +53,7 @@ public String HashName if (_hashName != null && value != _hashName) throw new PlatformNotSupportedException(SR.HashNameMultipleSetNotSupported); + _hashName = value; } } diff --git a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs index 26b4cefa0154..7818a6c6a55a 100644 --- a/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs +++ b/src/System.Security.Cryptography.Primitives/tests/HmacAlgorithmTest.cs @@ -13,15 +13,7 @@ public void SetNullAlgorithmName() { using (HMAC hmac = new TestHMAC()) { - if (PlatformDetection.IsFullFramework) - { - Assert.Throws(() => hmac.HashName = null); - } - else - { - hmac.HashName = null; - } - + Assert.Throws(() => hmac.HashName = null); Assert.Null(hmac.HashName); } } From 49c41699f88c0f02491bf1d79fb7fca2aba0bbbc Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Wed, 19 Apr 2017 10:21:48 -0700 Subject: [PATCH 223/336] Update CoreClr to preview1-25219-04 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 07ffe06fc112..1625c0625d91 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> e05b24243498a5094d3e70df440adc71d2268f09 - 71364c7e2b0a42dd3257fa77dca8a69c4a674107 + 0d9e3815fa6c65dfa953a86935e2798c363f19c0 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 37660101ab061128da926a2bfa7743e360c53aa6 37660101ab061128da926a2bfa7743e360c53aa6 @@ -21,7 +21,7 @@ preview1-25219-04 - preview1-25219-03 + preview1-25219-04 beta-25016-01 beta-25219-00 beta-25219-00 From 957de816072fb7f3d2e2b16e26c5486f91e31bcc Mon Sep 17 00:00:00 2001 From: Eric Mellino Date: Wed, 19 Apr 2017 11:04:53 -0700 Subject: [PATCH 224/336] Update xunit perf package version to 1.0.0-beta-build0003. --- dependencies.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.props b/dependencies.props index 07ffe06fc112..d54931a06f43 100644 --- a/dependencies.props +++ b/dependencies.props @@ -35,7 +35,7 @@ 1.0.3-prerelease-00921-01 - 1.0.0-alpha-build0049 + 1.0.0-beta-build0003 1.0.0-alpha-experimental 1.0.1-prerelease-01401-04 From 8499dc22409f59db6b83ad8a4da9cfac9357b6f9 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 14:11:20 -0400 Subject: [PATCH 225/336] Add support for UseDefaultCredentials to CurlHandler Rely on libcurl internally using gssapi and kerberos infrastructure. --- src/Common/src/System/Net/Http/HttpHandlerDefaults.cs | 1 + .../System/Net/Http/Unix/CurlHandler.EasyRequest.cs | 10 +++++++--- .../src/System/Net/Http/Unix/CurlHandler.cs | 9 +++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs b/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs index 4f2525262425..dc44bffa70f0 100644 --- a/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs +++ b/src/Common/src/System/Net/Http/HttpHandlerDefaults.cs @@ -18,6 +18,7 @@ internal static class HttpHandlerDefaults public const bool DefaultPreAuthenticate = false; public const ClientCertificateOption DefaultClientCertificateOption = ClientCertificateOption.Manual; public const bool DefaultUseProxy = true; + public const bool DefaultUseDefaultCredentials = false; public static TimeSpan DefaultConnectTimeout => TimeSpan.FromSeconds(60); } } diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs index 03e512f140cd..6e07d0b9f047 100644 --- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs +++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.EasyRequest.cs @@ -105,7 +105,7 @@ internal void InitializeCurl() SetVersion(); SetDecompressionOptions(); SetProxyOptions(_requestMessage.RequestUri); - SetCredentialsOptions(_handler.GetCredentials(_requestMessage.RequestUri)); + SetCredentialsOptions(_handler._useDefaultCredentials ? GetDefaultCredentialAndAuth() : _handler.GetCredentials(_requestMessage.RequestUri)); SetCookieOption(_requestMessage.RequestUri); SetRequestHeaders(); SetSslOptions(); @@ -341,7 +341,9 @@ internal void SetPossibleRedirectForLocationHeader(string location) // Just as with WinHttpHandler, for security reasons, we drop the server credential if it is // anything other than a CredentialCache. We allow credentials in a CredentialCache since they // are specifically tied to URIs. - updatedCredentials = GetCredentials(newUri, _handler.Credentials as CredentialCache, s_orderedAuthTypes); + updatedCredentials = _handler._useDefaultCredentials ? + GetDefaultCredentialAndAuth() : + GetCredentials(newUri, _handler.Credentials as CredentialCache, s_orderedAuthTypes); // Reset proxy - it is possible that the proxy has different credentials for the new URI SetProxyOptions(newUri); @@ -615,7 +617,6 @@ private void SetProxyCredentials(NetworkCredential credentials) { if (credentials == CredentialCache.DefaultCredentials) { - // No "default credentials" on Unix; nop just like UseDefaultCredentials. EventSourceTrace("DefaultCredentials set for proxy. Skipping."); } else if (credentials != null) @@ -662,6 +663,9 @@ internal void SetCredentialsOptions(KeyValuePair cr EventSourceTrace("Credentials set."); } + private static KeyValuePair GetDefaultCredentialAndAuth() => + new KeyValuePair(CredentialCache.DefaultNetworkCredentials, CURLAUTH.Negotiate); + internal void SetCookieOption(Uri uri) { if (!_handler._useCookie) diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs index fd000da9c101..9ba67cd4e430 100644 --- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs +++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.cs @@ -138,6 +138,7 @@ internal partial class CurlHandler : HttpMessageHandler private DecompressionMethods _automaticDecompression = HttpHandlerDefaults.DefaultAutomaticDecompression; private bool _preAuthenticate = HttpHandlerDefaults.DefaultPreAuthenticate; private CredentialCache _credentialCache = null; // protected by LockObject + private bool _useDefaultCredentials = HttpHandlerDefaults.DefaultUseDefaultCredentials; private CookieContainer _cookieContainer = new CookieContainer(); private bool _useCookie = HttpHandlerDefaults.DefaultUseCookies; private TimeSpan _connectTimeout = Timeout.InfiniteTimeSpan; @@ -405,8 +406,12 @@ internal int MaxResponseHeadersLength internal bool UseDefaultCredentials { - get { return false; } - set { } + get { return _useDefaultCredentials; } + set + { + CheckDisposedOrStarted(); + _useDefaultCredentials = value; + } } public IDictionary Properties From 39e44d65d5990c5ca69dd6e202b428f83407ecff Mon Sep 17 00:00:00 2001 From: Ian Hays Date: Wed, 19 Apr 2017 11:21:29 -0700 Subject: [PATCH 226/336] Fix casing for Compression TestData package import --- .../tests/System.IO.Compression.ZipFile.Tests.csproj | 2 +- .../Performance/System.IO.Compression.Performance.Tests.csproj | 2 +- .../tests/System.IO.Compression.Tests.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj index 6d9e3c481271..52213bf0dd1e 100644 --- a/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj +++ b/src/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj @@ -44,7 +44,7 @@ - + %(RecursiveDir)%(Filename)%(Extension) diff --git a/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj b/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj index e102420a72a8..23a2ae882b0a 100644 --- a/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj +++ b/src/System.IO.Compression/tests/Performance/System.IO.Compression.Performance.Tests.csproj @@ -23,7 +23,7 @@ - + %(RecursiveDir)%(Filename)%(Extension) diff --git a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj index b684d3277844..e7adf42e4228 100644 --- a/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj +++ b/src/System.IO.Compression/tests/System.IO.Compression.Tests.csproj @@ -53,7 +53,7 @@ - + %(RecursiveDir)%(Filename)%(Extension) From cc279b5e3cd4f375841995e01ca5204ef6e04cee Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 15:10:54 -0400 Subject: [PATCH 227/336] Fix exception thrown from PipeStream for unexpected cancellation When an operation is aborted but not because of the supplied CancellationToken, desktop still throws an OperationCanceledException but core throws an IOException. We should unify on the OCE, as there's little value in being different. This does that. --- src/System.IO.Pipes/src/System/IO/Error.cs | 5 ----- .../src/System/IO/Pipes/PipeCompletionSource.cs | 5 +++-- .../tests/NamedPipeTests/NamedPipeTest.Simple.cs | 16 ++++++++-------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/System.IO.Pipes/src/System/IO/Error.cs b/src/System.IO.Pipes/src/System/IO/Error.cs index 91009935e795..42cef46c6ec3 100644 --- a/src/System.IO.Pipes/src/System/IO/Error.cs +++ b/src/System.IO.Pipes/src/System/IO/Error.cs @@ -31,10 +31,5 @@ internal static Exception GetWriteNotSupported() { return new NotSupportedException(SR.NotSupported_UnwritableStream); } - - internal static Exception GetOperationAborted() - { - return new IOException(SR.IO_OperationAborted); - } } } diff --git a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs index 6afcd13d2b38..ad9792e6ddd9 100644 --- a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs +++ b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs @@ -162,8 +162,9 @@ private void CompleteCallback(int resultState) { if (_cancellationToken.CanBeCanceled && !_cancellationToken.IsCancellationRequested) { - // If this is unexpected abortion - TrySetException(Error.GetOperationAborted()); + // If this is unexpected abortion, we don't want to store _cancellationToken, + // so just generically say it's been canceled. + TrySetCanceled(); } else { diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs index 52c82401f130..a5168c66e10a 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs @@ -254,7 +254,7 @@ public async Task CancelTokenOff_ServerWaitForConnectionAsyncWithOuterCancellati [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellation_Throws_IOException() + public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellation_Throws_OperationCanceledException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -263,7 +263,7 @@ public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellatio Task waitForConnectionTask = server.WaitForConnectionAsync(cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => waitForConnectionTask); + await Assert.ThrowsAnyAsync(() => waitForConnectionTask); } } @@ -593,7 +593,7 @@ public async Task CancelTokenOff_Server_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOException() + public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_OperationCanceledException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -608,7 +608,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOExceptio Task serverReadToken = server.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => serverReadToken); + await Assert.ThrowsAnyAsync(() => serverReadToken); } if (server.CanWrite) { @@ -616,7 +616,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOExceptio Task serverWriteToken = server.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => serverWriteToken); + await Assert.ThrowsAnyAsync(() => serverWriteToken); } } } @@ -689,7 +689,7 @@ public async Task CancelTokenOff_Client_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException() + public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_OperationCanceledException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -703,7 +703,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOExceptio Task clientReadToken = client.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => clientReadToken); + await Assert.ThrowsAnyAsync(() => clientReadToken); } if (client.CanWrite) { @@ -711,7 +711,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOExceptio Task clientWriteToken = client.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => clientWriteToken); + await Assert.ThrowsAnyAsync(() => clientWriteToken); } } } From fdac17ffb0b1d78418dbd85a00cf9e3641e5f344 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Wed, 19 Apr 2017 13:45:21 -0700 Subject: [PATCH 228/336] Disable S.L.Parallel test that hangs on uapaot --- src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs b/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs index 475399b9ba8d..f9b2e3b08833 100644 --- a/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs +++ b/src/System.Linq.Parallel/tests/ParallelEnumerableTests.cs @@ -259,6 +259,7 @@ public static IEnumerable EmptyData() [Theory] [MemberData(nameof(EmptyData))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "This causes assertion failure on UAPAoT")] public static void Empty(T def) { Assert.Empty(ParallelEnumerable.Empty()); From b7e77f33522abe841739811d10904187405fcf1e Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Wed, 19 Apr 2017 13:55:52 -0700 Subject: [PATCH 229/336] Update CoreClr to preview1-25219-05 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 1625c0625d91..3862f0c86f3b 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> e05b24243498a5094d3e70df440adc71d2268f09 - 0d9e3815fa6c65dfa953a86935e2798c363f19c0 + 67378614f8524b1328d7f5767246f5831db158d3 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 37660101ab061128da926a2bfa7743e360c53aa6 37660101ab061128da926a2bfa7743e360c53aa6 @@ -21,7 +21,7 @@ preview1-25219-04 - preview1-25219-04 + preview1-25219-05 beta-25016-01 beta-25219-00 beta-25219-00 From 4589ecea6de8524d89ed194da52db71c47974722 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 16:57:50 -0400 Subject: [PATCH 230/336] Fix several System.IO.Packaging issues with differing desktop behavior On desktop, calling Package.Open(stream, FileMode.Create, ...) on a seekable stream sets the length to 0, since the ZipArchive that gets created from it will seek around in the stream. The core implementation was not doing that. Then tests were written against core; those tests should have used FileMode.Open but used FileMode.Create (presumably by accident), and thus on desktop the stream was being cleared whereas on core it was not. This change fixes the core implementation to do the same stream validation/mutation that's done on desktop, and updates the tests to use FileMode.Open instead of FileMode.Create in the few problematic cases. --- .../src/Resources/Strings.resx | 6 +++ .../src/System/IO/Packaging/ZipPackage.cs | 27 +++++++++++++ src/System.IO.Packaging/tests/Tests.cs | 39 +++++++++++++------ 3 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/System.IO.Packaging/src/Resources/Strings.resx b/src/System.IO.Packaging/src/Resources/Strings.resx index 27060b119edd..86b2e85e3db2 100644 --- a/src/System.IO.Packaging/src/Resources/Strings.resx +++ b/src/System.IO.Packaging/src/Resources/Strings.resx @@ -355,4 +355,10 @@ Core Properties part: Text data of XSD type 'DateTime' was expected. + + CreateNew is not a valid FileMode for a non-empty stream. + + + Archive file cannot be size 0. + diff --git a/src/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs b/src/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs index 3b656cf39435..1d251dff48ce 100644 --- a/src/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs +++ b/src/System.IO.Packaging/src/System/IO/Packaging/ZipPackage.cs @@ -311,6 +311,33 @@ internal ZipPackage(Stream s, FileMode packageFileMode, FileAccess packageFileAc try { + if (s.CanSeek) + { + switch (packageFileMode) + { + case FileMode.Open: + if (s.Length == 0) + { + throw new FileFormatException(SR.ZipZeroSizeFileIsNotValidArchive); + } + break; + + case FileMode.CreateNew: + if (s.Length != 0) + { + throw new IOException(SR.CreateNewOnNonEmptyStream); + } + break; + + case FileMode.Create: + if (s.Length != 0) + { + s.SetLength(0); // Discard existing data + } + break; + } + } + ZipArchiveMode zipArchiveMode = ZipArchiveMode.Update; if (packageFileAccess == FileAccess.Read) zipArchiveMode = ZipArchiveMode.Read; diff --git a/src/System.IO.Packaging/tests/Tests.cs b/src/System.IO.Packaging/tests/Tests.cs index ff6f0ac195ff..324d777bb624 100644 --- a/src/System.IO.Packaging/tests/Tests.cs +++ b/src/System.IO.Packaging/tests/Tests.cs @@ -2,12 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; -using System.IO; using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using Xunit; @@ -133,11 +129,32 @@ public void T208_InvalidParameter() { ms.Write(ba, 0, ba.Length); Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite); + Assert.Equal(0, ms.Length); PackagePart packagePartDocument = null; Assert.Throws(() => { packagePartDocument = package.CreatePart(partUriDocument, "image/jpeg; prop= ;"); }); } } + [Fact] + public void PackageOpen_CreateNew_NonEmptyStream_Throws() + { + byte[] ba = File.ReadAllBytes("plain.docx"); + using (var ms = new MemoryStream()) + { + ms.Write(ba, 0, ba.Length); + Assert.Throws(() => Package.Open(ms, FileMode.CreateNew, FileAccess.ReadWrite)); + } + } + + [Fact] + public void PackageOpen_Open_EmptyStream_Throws() + { + using (var ms = new MemoryStream()) + { + Assert.Throws(() => Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)); + } + } + [Fact] public void T172_EmptyRelationshipPart() { @@ -514,7 +531,7 @@ public void T155_BadDateTimeDocProps() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { Assert.Throws(() => { @@ -572,7 +589,7 @@ public void T152_InvalidDocProps() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { Assert.Throws(() => { @@ -593,7 +610,7 @@ public void T151_InvalidDocProps() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { Assert.Throws(() => { @@ -1710,7 +1727,7 @@ public void T021_DeletePartThatContainsRelationships() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { Uri documentUri = new Uri("/word/document.xml", UriKind.Relative); package.DeletePart(documentUri); @@ -1728,7 +1745,7 @@ public void T020_GetNonExistentPart() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { PackageRelationship docPackageRelationship = package.GetRelationshipsByType(DocumentRelationshipType).FirstOrDefault(); @@ -1750,7 +1767,7 @@ public void T019_GetPartFromRelativeUri() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { PackageRelationship docPackageRelationship = package.GetRelationshipsByType(DocumentRelationshipType).FirstOrDefault(); @@ -1777,7 +1794,7 @@ public void T018_GetMainDocPartAndStyleDefPart() using (MemoryStream ms = new MemoryStream()) { ms.Write(ba, 0, ba.Length); - using (Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite)) + using (Package package = Package.Open(ms, FileMode.Open, FileAccess.ReadWrite)) { PackageRelationship docPackageRelationship = package From 80e1310a321603e4bc98f55a9856ff880d42096c Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Wed, 19 Apr 2017 14:10:37 -0700 Subject: [PATCH 231/336] Disable PNSE tests for UAP/AOT (#18579) - SkipOnTarget for those exercising PNSE apis. - Block a PNSE that happens in a class constructor and prevents all assembly tests from running. --- .../System/Reflection/AssemblyNameTests.cs | 2 ++ .../tests/System/Reflection/AssemblyTests.cs | 32 ++++++++++++++++--- .../System/Reflection/ConstructorInfoTests.cs | 3 +- .../System/Reflection/MethodBaseTests.cs | 1 + .../System/Reflection/MethodBodyTests.cs | 1 + .../tests/System/Reflection/ModuleTests.cs | 13 ++++++++ .../tests/System/Reflection/PointerTests.cs | 11 +++++++ .../RuntimeReflectionExtensionsTests.cs | 15 ++++++++- 8 files changed, 72 insertions(+), 6 deletions(-) diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs index 650d5741f659..3e08408984e2 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyNameTests.cs @@ -30,6 +30,7 @@ public static void Verify_CodeBase() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "AssemblyName.CodeBase and EscapedCodeBase not supported on UapAot")] public static void Verify_EscapedCodeBase() { AssemblyName n = new AssemblyName("MyAssemblyName"); @@ -75,6 +76,7 @@ public static void Clone() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "AssemblyName.GetAssemblyName() not supported on UapAot")] public static void GetAssemblyName() { AssertExtensions.Throws("assemblyFile", () => AssemblyName.GetAssemblyName(null)); diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index 325318511e85..ad7ed4b0de10 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -32,6 +32,8 @@ public class AssemblyTests static AssemblyTests() { + loadFromTestPath = null; +#if !uapaot // Assembly.Location not supported (properly) on uapaot. // Move TestAssembly.dll to subfolder TestAssembly Directory.CreateDirectory(Path.GetDirectoryName(destTestAssemblyPath)); if (File.Exists(sourceTestAssemblyPath)) @@ -42,6 +44,7 @@ static AssemblyTests() string currAssemblyPath = typeof(AssemblyTests).Assembly.Location; loadFromTestPath = Path.Combine(Path.GetDirectoryName(currAssemblyPath), "TestAssembly", Path.GetFileName(currAssemblyPath)); File.Copy(currAssemblyPath, loadFromTestPath, true); +#endif } public static IEnumerable Equality_TestData() @@ -99,6 +102,7 @@ public static void GetExecutingAssembly() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetSatelliteAssembly() not supported on UapAot")] public static void GetSatelliteAssemblyNeg() { Assert.Throws(() => (typeof(AssemblyTests).Assembly.GetSatelliteAssembly(null))); @@ -106,6 +110,7 @@ public static void GetSatelliteAssemblyNeg() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.Load(String) not supported on UapAot")] public static void AssemblyLoadFromString() { AssemblyName an = typeof(AssemblyTests).Assembly.GetName(); @@ -132,6 +137,7 @@ public static void AssemblyLoadFromStringNeg() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.Load(byte[]) not supported on UapAot")] public static void AssemblyLoadFromBytes() { Assembly assembly = typeof(AssemblyTests).Assembly; @@ -143,6 +149,7 @@ public static void AssemblyLoadFromBytes() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.Load(byte[]) not supported on UapAot")] public static void AssemblyLoadFromBytesNeg() { Assert.Throws(() => Assembly.Load((byte[])null)); @@ -150,6 +157,7 @@ public static void AssemblyLoadFromBytesNeg() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.Load(byte[]) not supported on UapAot")] public static void AssemblyLoadFromBytesWithSymbols() { Assembly assembly = typeof(AssemblyTests).Assembly; @@ -161,12 +169,14 @@ public static void AssemblyLoadFromBytesWithSymbols() Assert.Equal(assembly.FullName, loadedAssembly.FullName); } + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.ReflectionOnlyLoad() not supported on UapAot")] public static void AssemblyReflectionOnlyLoadFromString() { AssemblyName an = typeof(AssemblyTests).Assembly.GetName(); Assert.Throws(() => Assembly.ReflectionOnlyLoad(an.FullName)); } + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.ReflectionOnlyLoad() not supported on UapAot")] public static void AssemblyReflectionOnlyLoadFromBytes() { Assembly assembly = typeof(AssemblyTests).Assembly; @@ -174,6 +184,7 @@ public static void AssemblyReflectionOnlyLoadFromBytes() Assert.Throws(() => Assembly.ReflectionOnlyLoad(aBytes)); } + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.ReflectionOnlyLoad() not supported on UapAot")] public static void AssemblyReflectionOnlyLoadFromNeg() { Assert.Throws(() => Assembly.ReflectionOnlyLoad((string)null)); @@ -190,6 +201,7 @@ public static IEnumerable GetModules_TestData() [Theory] [MemberData(nameof(GetModules_TestData))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetModules() is not supported on UapAot.")] public static void GetModules_GetModule(Assembly assembly) { Assert.NotEmpty(assembly.GetModules()); @@ -200,6 +212,7 @@ public static void GetModules_GetModule(Assembly assembly) } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetLoadedModules() is not supported on UapAot.")] public static void GetLoadedModules() { Assembly assembly = typeof(AssemblyTests).Assembly; @@ -283,6 +296,7 @@ public static void Test_SecurityRuleSet_Netfx() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFile() not supported on UapAot")] public static void Test_LoadFile() { Assembly currentAssembly = typeof(AssemblyTests).Assembly; @@ -314,7 +328,7 @@ public static void Test_LoadFile() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework has a bug and throws a NullReferenceException")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework | TargetFrameworkMonikers.UapAot, "The full .NET Framework has a bug and throws a NullReferenceException")] public static void LoadFile_NullPath_Netcore_ThrowsArgumentNullException() { Assert.Throws("path", () => Assembly.LoadFile(null)); @@ -328,13 +342,14 @@ public static void LoadFile_NullPath_Netfx_ThrowsNullReferenceException() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFile() not supported on UapAot")] public static void LoadFile_NoSuchPath_ThrowsArgumentException() { Assert.Throws(() => Assembly.LoadFile("System.Runtime.Tests.dll")); } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework supports Assembly.LoadFrom")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework | TargetFrameworkMonikers.UapAot, "The full .NET Framework supports Assembly.LoadFrom")] public static void Test_LoadFromUsingHashValue_Netcore() { Assert.Throws(() => Assembly.LoadFrom("abc", null, System.Configuration.Assemblies.AssemblyHashAlgorithm.SHA1)); @@ -348,7 +363,7 @@ public static void Test_LoadFromUsingHashValue_Netfx() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The full .NET Framework supports more than one module per assembly")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework | TargetFrameworkMonikers.UapAot, "The full .NET Framework supports more than one module per assembly")] public static void Test_LoadModule_Netcore() { Assembly assembly = typeof(AssemblyTests).Assembly; @@ -367,6 +382,7 @@ public static void Test_LoadModule_Netfx() #pragma warning disable 618 [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFromWithPartialName() not supported on UapAot")] public static void Test_LoadWithPartialName() { string simplename = typeof(AssemblyTests).Assembly.GetName().Name; @@ -376,6 +392,7 @@ public static void Test_LoadWithPartialName() #pragma warning restore 618 [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFrom() not supported on UapAot")] public void LoadFrom_SamePath_ReturnsEqualAssemblies() { Assembly assembly1 = Assembly.LoadFrom(destTestAssemblyPath); @@ -384,6 +401,7 @@ public void LoadFrom_SamePath_ReturnsEqualAssemblies() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFrom() not supported on UapAot")] public void LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssemblies() { Assembly assembly1 = Assembly.LoadFrom(typeof(AssemblyTests).Assembly.Location); @@ -402,6 +420,7 @@ public void LoadFrom_SameIdentityAsAssemblyWithDifferentPath_ReturnsEqualAssembl } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFrom() not supported on UapAot")] public void LoadFrom_NullAssemblyFile_ThrowsArgumentNullException() { Assert.Throws("assemblyFile", () => Assembly.LoadFrom(null)); @@ -409,6 +428,7 @@ public void LoadFrom_NullAssemblyFile_ThrowsArgumentNullException() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFrom() not supported on UapAot")] public void LoadFrom_EmptyAssemblyFile_ThrowsArgumentException() { Assert.Throws(null, (() => Assembly.LoadFrom(""))); @@ -416,6 +436,7 @@ public void LoadFrom_EmptyAssemblyFile_ThrowsArgumentException() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.LoadFrom() not supported on UapAot")] public void LoadFrom_NoSuchFile_ThrowsFileNotFoundException() { Assert.Throws(() => Assembly.LoadFrom("NoSuchPath")); @@ -423,6 +444,7 @@ public void LoadFrom_NoSuchFile_ThrowsFileNotFoundException() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.UnsafeLoadFrom() not supported on UapAot")] public void UnsafeLoadFrom_SamePath_ReturnsEqualAssemblies() { Assembly assembly1 = Assembly.UnsafeLoadFrom(destTestAssemblyPath); @@ -431,13 +453,14 @@ public void UnsafeLoadFrom_SamePath_ReturnsEqualAssemblies() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The implementation of LoadFrom(string, byte[], AssemblyHashAlgorithm is not supported in .NET Core.")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework | TargetFrameworkMonikers.UapAot, "The implementation of LoadFrom(string, byte[], AssemblyHashAlgorithm is not supported in .NET Core.")] public void LoadFrom_WithHashValue_NetCoreCore_ThrowsNotSupportedException() { Assert.Throws(() => Assembly.LoadFrom(destTestAssemblyPath, new byte[0], Configuration.Assemblies.AssemblyHashAlgorithm.None)); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetFile() not supported on UapAot")] public void GetFile() { Assert.Throws(() => typeof(AssemblyTests).Assembly.GetFile(null)); @@ -448,6 +471,7 @@ public void GetFile() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Assembly.GetFiles() not supported on UapAot")] public void GetFiles() { Assert.NotNull(typeof(AssemblyTests).Assembly.GetFiles()); diff --git a/src/System.Runtime/tests/System/Reflection/ConstructorInfoTests.cs b/src/System.Runtime/tests/System/Reflection/ConstructorInfoTests.cs index 199a853e102e..c38e703285b3 100644 --- a/src/System.Runtime/tests/System/Reflection/ConstructorInfoTests.cs +++ b/src/System.Runtime/tests/System/Reflection/ConstructorInfoTests.cs @@ -40,6 +40,7 @@ public static void Verify_Invoke_ReturnsNewObject() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Invoking static constructors not supported on UapAot")] public static void TestInvoke_Nullery() { ConstructorInfo[] cis = GetConstructors(typeof(ConstructorInfoClassA)); @@ -213,7 +214,7 @@ public string Method1(DateTime t) } } - public class ConstructorInfoClassA + public static class ConstructorInfoClassA { static ConstructorInfoClassA() { diff --git a/src/System.Runtime/tests/System/Reflection/MethodBaseTests.cs b/src/System.Runtime/tests/System/Reflection/MethodBaseTests.cs index 6958dd82ac84..683a6eb5848b 100644 --- a/src/System.Runtime/tests/System/Reflection/MethodBaseTests.cs +++ b/src/System.Runtime/tests/System/Reflection/MethodBaseTests.cs @@ -64,6 +64,7 @@ public static void TestEqualityMethods(string methodName1, BindingFlags bindingF } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "MethodBase.GetMethodBody() not supported on UapAot")] public static void TestMethodBody() { MethodBase mbase = typeof(MethodBaseTests).GetMethod("MyOtherMethod", BindingFlags.Static | BindingFlags.Public); diff --git a/src/System.Runtime/tests/System/Reflection/MethodBodyTests.cs b/src/System.Runtime/tests/System/Reflection/MethodBodyTests.cs index fcfdcd9de1aa..c2d37908994a 100644 --- a/src/System.Runtime/tests/System/Reflection/MethodBodyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/MethodBodyTests.cs @@ -13,6 +13,7 @@ namespace System.Reflection.Tests public static class MethodBodyTests { [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Method.GetMethodBody() not supported on UapAot")] public static void Test_MethodBody_ExceptionHandlingClause() { MethodInfo mi = typeof(MethodBodyTests).GetMethod("MethodBodyExample"); diff --git a/src/System.Runtime/tests/System/Reflection/ModuleTests.cs b/src/System.Runtime/tests/System/Reflection/ModuleTests.cs index 5dc71e99b558..46c1be705c40 100644 --- a/src/System.Runtime/tests/System/Reflection/ModuleTests.cs +++ b/src/System.Runtime/tests/System/Reflection/ModuleTests.cs @@ -58,6 +58,7 @@ public void ModuleHandle() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module CustomAttributes not supported on UapAot.")] public void CustomAttributes() { List customAttributes = Module.CustomAttributes.ToList(); @@ -132,6 +133,7 @@ public void IsDefined_NullType() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.GetField apis not supported on UapAot.")] public void GetField_NullName() { ArgumentNullException ex = Assert.Throws(() => @@ -152,6 +154,7 @@ public void GetField_NullName() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.GetField apis not supported on UapAot.")] public void GetField() { FieldInfo testInt = TestModule.GetField("TestInt", BindingFlags.Public | BindingFlags.Static); @@ -165,6 +168,7 @@ public void GetField() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.GetField apis not supported on UapAot.")] public void GetFields() { List fields = TestModule.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static).OrderBy(f => f.Name).ToList(); @@ -178,6 +182,7 @@ public void GetFields() [Theory] [MemberData(nameof(Types))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveType(Type t) { Assert.Equal(t, Module.ResolveType(t.MetadataToken)); @@ -192,6 +197,7 @@ public void ResolveType(Type t) [Theory] [MemberData(nameof(BadResolveTypes))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveTypeFail(int token) { Assert.ThrowsAny(() => @@ -205,6 +211,7 @@ public void ResolveTypeFail(int token) [Theory] [MemberData(nameof(Methods))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveMethod(MethodInfo t) { Assert.Equal(t, Module.ResolveMethod(t.MetadataToken)); @@ -220,6 +227,7 @@ public void ResolveMethod(MethodInfo t) [Theory] [MemberData(nameof(BadResolveMethods))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveMethodFail(int token) { Assert.ThrowsAny(() => @@ -233,6 +241,7 @@ public void ResolveMethodFail(int token) [Theory] [MemberData(nameof(Fields))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveField(FieldInfo t) { Assert.Equal(t, Module.ResolveField(t.MetadataToken)); @@ -248,6 +257,7 @@ public void ResolveField(FieldInfo t) [Theory] [MemberData(nameof(BadResolveFields))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveFieldFail(int token) { Assert.ThrowsAny(() => @@ -266,6 +276,7 @@ public void ResolveFieldFail(int token) [Theory] [MemberData(nameof(BadResolveStrings))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveStringFail(int token) { Assert.ThrowsAny(() => @@ -278,12 +289,14 @@ public void ResolveStringFail(int token) [MemberData(nameof(Types))] [MemberData(nameof(Methods))] [MemberData(nameof(Fields))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveMember(MemberInfo member) { Assert.Equal(member, Module.ResolveMember(member.MetadataToken)); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Module.Resolve apis not supported on UapAot.")] public void ResolveMethodOfGenericClass() { Type t = typeof(Foo<>); diff --git a/src/System.Runtime/tests/System/Reflection/PointerTests.cs b/src/System.Runtime/tests/System/Reflection/PointerTests.cs index c24dd2fb180f..189870e555aa 100644 --- a/src/System.Runtime/tests/System/Reflection/PointerTests.cs +++ b/src/System.Runtime/tests/System/Reflection/PointerTests.cs @@ -83,6 +83,7 @@ public void PointerValueRoundtrips(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerFieldSetValue(int value) { var obj = new PointerHolder(); @@ -93,6 +94,7 @@ public void PointerFieldSetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void IntPtrFieldSetValue(int value) { var obj = new PointerHolder(); @@ -103,6 +105,7 @@ public void IntPtrFieldSetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerFieldSetValue_InvalidType(int value) { var obj = new PointerHolder(); @@ -129,6 +132,7 @@ public void PointerFieldGetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerPropertySetValue(int value) { var obj = new PointerHolder(); @@ -139,6 +143,7 @@ public void PointerPropertySetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void IntPtrPropertySetValue(int value) { var obj = new PointerHolder(); @@ -149,6 +154,7 @@ public void IntPtrPropertySetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerPropertySetValue_InvalidType(int value) { var obj = new PointerHolder(); @@ -161,6 +167,7 @@ public void PointerPropertySetValue_InvalidType(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerPropertyGetValue(int value) { var obj = new PointerHolder(); @@ -174,6 +181,7 @@ public void PointerPropertyGetValue(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerMethodParameter(int value) { var obj = new PointerHolder(); @@ -183,6 +191,7 @@ public void PointerMethodParameter(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void IntPtrMethodParameter(int value) { var obj = new PointerHolder(); @@ -192,6 +201,7 @@ public void IntPtrMethodParameter(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerMethodParameter_InvalidType(int value) { var obj = new PointerHolder(); @@ -204,6 +214,7 @@ public void PointerMethodParameter_InvalidType(int value) [Theory] [MemberData(nameof(Pointers))] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Pointers through Invoke not implemented: https://github.com/dotnet/corert/issues/2113")] public void PointerMethodReturn(int value) { var obj = new PointerHolder(); diff --git a/src/System.Runtime/tests/System/Reflection/RuntimeReflectionExtensionsTests.cs b/src/System.Runtime/tests/System/Reflection/RuntimeReflectionExtensionsTests.cs index 148768ad762c..89336a480d9f 100644 --- a/src/System.Runtime/tests/System/Reflection/RuntimeReflectionExtensionsTests.cs +++ b/src/System.Runtime/tests/System/Reflection/RuntimeReflectionExtensionsTests.cs @@ -20,7 +20,20 @@ public void GetMethodInfo() [Fact] public void GetRuntimeBaseDefinition() { - Assert.Equal(typeof(Stream).GetMethod("Read"), typeof(MemoryStream).GetMethod("Read").GetRuntimeBaseDefinition()); + MethodInfo derivedFoo = typeof(TestDerived).GetMethod(nameof(TestDerived.Foo)); + MethodInfo baseFoo = typeof(TestBase).GetMethod(nameof(TestBase.Foo)); + MethodInfo actual = derivedFoo.GetRuntimeBaseDefinition(); + Assert.Equal(baseFoo, actual); + } + + private abstract class TestBase + { + public abstract void Foo(); + } + + private class TestDerived : TestBase + { + public override void Foo() { throw null; } } [Fact] From 9b1bb8c8bc1ee75b748ba2c979f1cfba7ca138b2 Mon Sep 17 00:00:00 2001 From: Vance Morrison Date: Wed, 19 Apr 2017 14:26:21 -0700 Subject: [PATCH 232/336] Add reference to PropertyFetch class --- .../src/DiagnosticSourceUsersGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md b/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md index e20b3d8a5be3..2cc82dde6b66 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md +++ b/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md @@ -344,7 +344,8 @@ Then we could replace the listener.Subscribe call above with the following code, Note that using reflection is relatively expensive. However using reflection is your only option if the payloads was generated using anonymous types. You can reduce this overhead by making fast, specialized property fetchers either using PropertyInfo.CreateDelegate or -ReflectEmit, but that is beyond the scope of this document. +ReflectEmit, but that is beyond the scope of this document. (see the [PropertyFetch](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceEventSource.cs#L823) class used in the DiagnosticSourceEventSource for an example of a fast, delegate-based +property fetcher). #### Filtering From 3847d02b1e468a5103175895c367cc0ac4ea2fc8 Mon Sep 17 00:00:00 2001 From: Vance Morrison Date: Wed, 19 Apr 2017 14:31:19 -0700 Subject: [PATCH 233/336] Include reference to PropertySpec --- .../src/DiagnosticSourceUsersGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md b/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md index 2cc82dde6b66..50436a2bb00a 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md +++ b/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md @@ -344,7 +344,7 @@ Then we could replace the listener.Subscribe call above with the following code, Note that using reflection is relatively expensive. However using reflection is your only option if the payloads was generated using anonymous types. You can reduce this overhead by making fast, specialized property fetchers either using PropertyInfo.CreateDelegate or -ReflectEmit, but that is beyond the scope of this document. (see the [PropertyFetch](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceEventSource.cs#L823) class used in the DiagnosticSourceEventSource for an example of a fast, delegate-based +ReflectEmit, but that is beyond the scope of this document. (see the [PropertySpec](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceEventSource.cs#L784) class used in the DiagnosticSourceEventSource for an example of a fast, delegate-based property fetcher). #### Filtering From 631389b6937df7c9940873704cb6cd1e4d7b665c Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 06:57:08 -0400 Subject: [PATCH 234/336] Add tests for moving to the same path w/ and w/o different casing --- src/System.IO.FileSystem/tests/File/Move.cs | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/System.IO.FileSystem/tests/File/Move.cs b/src/System.IO.FileSystem/tests/File/Move.cs index eeb4c914b772..995754ba5ea2 100644 --- a/src/System.IO.FileSystem/tests/File/Move.cs +++ b/src/System.IO.FileSystem/tests/File/Move.cs @@ -120,6 +120,34 @@ public void MoveIntoParentDirectory() Assert.True(File.Exists(testFileDest.FullName)); } + [Fact] + public void MoveToSameName() + { + string testDir = GetTestFilePath(); + Directory.CreateDirectory(testDir); + + FileInfo testFileSource = new FileInfo(Path.Combine(testDir, GetTestFileName())); + testFileSource.Create().Dispose(); + + Move(testFileSource.FullName, testFileSource.FullName); + Assert.True(File.Exists(testFileSource.FullName)); + } + + [Fact] + public void MoveToSameNameDifferentCasing() + { + string testDir = GetTestFilePath(); + Directory.CreateDirectory(testDir); + + FileInfo testFileSource = new FileInfo(Path.Combine(testDir, Path.GetRandomFileName().ToLowerInvariant())); + testFileSource.Create().Dispose(); + + FileInfo testFileDest = new FileInfo(Path.Combine(testFileSource.DirectoryName, testFileSource.Name.ToUpperInvariant())); + + Move(testFileSource.FullName, testFileDest.FullName); + Assert.True(File.Exists(testFileDest.FullName)); + } + [Fact] public void MultipleMoves() { From f29050cf9cad6e62afc3cb4917e1e9056a1abe3c Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 07:23:52 -0400 Subject: [PATCH 235/336] Fix UnixFileSystem.MoveFile on macOS when just changing file casing Neither the link/unlink nor copy-all-data approaches work well on a case-insensitive file system when just changing the casing of the file name. This commit adds an upfront check that detects when the files are the same, and in such cases, just does a rename. --- .../Unix/System.Native/Interop.Stat.cs | 2 ++ src/Native/Unix/System.Native/pal_io.cpp | 2 ++ src/Native/Unix/System.Native/pal_io.h | 2 ++ .../src/System/IO/UnixFileSystem.cs | 20 +++++++++++++++++-- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Common/src/Interop/Unix/System.Native/Interop.Stat.cs b/src/Common/src/Interop/Unix/System.Native/Interop.Stat.cs index a8bc2ec7d135..cda00ac6c336 100644 --- a/src/Common/src/Interop/Unix/System.Native/Interop.Stat.cs +++ b/src/Common/src/Interop/Unix/System.Native/Interop.Stat.cs @@ -27,6 +27,8 @@ internal struct FileStatus internal long MTime; internal long CTime; internal long BirthTime; + internal long Dev; + internal long Ino; } internal static class FileTypes diff --git a/src/Native/Unix/System.Native/pal_io.cpp b/src/Native/Unix/System.Native/pal_io.cpp index a672c1e91ed5..a1c41e37d666 100644 --- a/src/Native/Unix/System.Native/pal_io.cpp +++ b/src/Native/Unix/System.Native/pal_io.cpp @@ -140,6 +140,8 @@ static_assert(PAL_IN_ISDIR == IN_ISDIR, ""); static void ConvertFileStatus(const struct stat_& src, FileStatus* dst) { + dst->Dev = static_cast(src.st_dev); + dst->Ino = static_cast(src.st_ino); dst->Flags = FILESTATUS_FLAGS_NONE; dst->Mode = static_cast(src.st_mode); dst->Uid = src.st_uid; diff --git a/src/Native/Unix/System.Native/pal_io.h b/src/Native/Unix/System.Native/pal_io.h index 083efa04ee42..deace9ca302f 100644 --- a/src/Native/Unix/System.Native/pal_io.h +++ b/src/Native/Unix/System.Native/pal_io.h @@ -24,6 +24,8 @@ struct FileStatus int64_t MTime; // time of last modification int64_t CTime; // time of last status change int64_t BirthTime; // time the file was created + int64_t Dev; // ID of the device containing the file + int64_t Ino; // inode number of the file }; /************ diff --git a/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs b/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs index a74578005f7a..3c821a00ad36 100644 --- a/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs +++ b/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs @@ -82,8 +82,24 @@ public override void MoveFile(string sourceFullPath, string destFullPath) { // The desired behavior for Move(source, dest) is to not overwrite the destination file // if it exists. Since rename(source, dest) will replace the file at 'dest' if it exists, - // link/unlink are used instead. Note that the Unix FileSystemWatcher will treat a Move - // as a Creation and Deletion instead of a Rename and thus differ from Windows. + // link/unlink are used instead. However, if the source path and the dest path refer to + // the same file, then do a rename rather than a link and an unlink. This is important + // for case-insensitive file systems (e.g. renaming a file in a way that just changes casing), + // so that we support changing the casing in the naming of the file. If this fails in any + // way (e.g. source file doesn't exist, dest file doesn't exist, rename fails, etc.), we + // just fall back to trying the link/unlink approach and generating any exceptional messages + // from there as necessary. + Interop.Sys.FileStatus sourceStat, destStat; + if (Interop.Sys.LStat(sourceFullPath, out sourceStat) == 0 && // source file exists + Interop.Sys.Stat(destFullPath, out destStat) == 0 && // dest file exists + sourceStat.Dev == destStat.Dev && // source and dest are on the same device + sourceStat.Ino == destStat.Ino && // and source and dest are the same file on that device + Interop.Sys.Rename(sourceFullPath, destFullPath) == 0) // try the rename + { + // Renamed successfully. + return; + } + if (Interop.Sys.Link(sourceFullPath, destFullPath) < 0) { // If link fails, we can fall back to doing a full copy, but we'll only do so for From c29fc2354c5d3ee4897fdbd776cc9ca87341ad2a Mon Sep 17 00:00:00 2001 From: Tarek Mahmoud Sayed Date: Wed, 19 Apr 2017 14:46:05 -0700 Subject: [PATCH 236/336] Re-enable System.JSON signing with SL keys (#18636) --- Tools-Override/sign.targets | 4 ++-- src/System.Json/src/System.Json.csproj | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Tools-Override/sign.targets b/Tools-Override/sign.targets index 8ea0cca845b8..9fae74aa646b 100644 --- a/Tools-Override/sign.targets +++ b/Tools-Override/sign.targets @@ -26,8 +26,8 @@ $(ToolsDir)SilverlightPublicKey.snk Open - Silverlight - SilverlightExtension + SilverlightCert121 + MsSharedLib $(ToolsDir)Test.snk diff --git a/src/System.Json/src/System.Json.csproj b/src/System.Json/src/System.Json.csproj index 0d1a12940a63..84c91f3c13a2 100644 --- a/src/System.Json/src/System.Json.csproj +++ b/src/System.Json/src/System.Json.csproj @@ -6,9 +6,7 @@ - + SilverlightExtension From b6bbe8a43984f291e01113161efe1bc6e322815f Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 19 Apr 2017 17:58:29 -0400 Subject: [PATCH 237/336] Address PR feedback --- src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs b/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs index 3c821a00ad36..59319fe26e31 100644 --- a/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs +++ b/src/System.IO.FileSystem/src/System/IO/UnixFileSystem.cs @@ -91,7 +91,7 @@ public override void MoveFile(string sourceFullPath, string destFullPath) // from there as necessary. Interop.Sys.FileStatus sourceStat, destStat; if (Interop.Sys.LStat(sourceFullPath, out sourceStat) == 0 && // source file exists - Interop.Sys.Stat(destFullPath, out destStat) == 0 && // dest file exists + Interop.Sys.LStat(destFullPath, out destStat) == 0 && // dest file exists sourceStat.Dev == destStat.Dev && // source and dest are on the same device sourceStat.Ino == destStat.Ino && // and source and dest are the same file on that device Interop.Sys.Rename(sourceFullPath, destFullPath) == 0) // try the rename From 1847cf41fdba53e0c9799ce1bdb5ebd005b6ec2d Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Wed, 19 Apr 2017 15:13:01 -0700 Subject: [PATCH 238/336] Failures in CreateDelegate() tests. (#18639) - Reflection does not guarantee reference equality for MethodInfo's. This test only works by accident on CoreCLR Changed test to use MethodInfo.Equals() which is guaranteed on CoreRT and no worse than before on CoreCLR (MethodInfo.Equals() is just reference equality on CoreCLR.) (the long sad story of Reflection equality lives in https://github.com/dotnet/corefx/issues/8130.) - Found an interesting corner case in the method lookup rules for CreateDelegate(). This will take time to study and is unlikely to block anything real world so I'm disabling these for UapAot and tracking via this issue: https://github.com/dotnet/corert/issues/3387 --- .../tests/System/DelegateTests.cs | 112 +++++++++++------- 1 file changed, 72 insertions(+), 40 deletions(-) diff --git a/src/System.Runtime/tests/System/DelegateTests.cs b/src/System.Runtime/tests/System/DelegateTests.cs index 818575487d34..eced70c9c90c 100644 --- a/src/System.Runtime/tests/System/DelegateTests.cs +++ b/src/System.Runtime/tests/System/DelegateTests.cs @@ -594,7 +594,7 @@ public static void CreateDelegate1_Method_Static() C c = new C(); MethodInfo mi = typeof(C).GetMethod("S"); Delegate dg = Delegate.CreateDelegate(typeof(D), mi); - Assert.Same(mi, dg.Method); + Assert.Equal(mi, dg.Method); Assert.Null(dg.Target); D d = (D)dg; d(c); @@ -644,9 +644,12 @@ public static void CreateDelegate2() Assert.NotNull(e); Assert.Equal(4, e(new C())); - e = (E)Delegate.CreateDelegate(typeof(E), new C(), "Execute"); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + if (IsDelegateLookupBugFixed) + { + e = (E)Delegate.CreateDelegate(typeof(E), new C(), "Execute"); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); + } e = (E)Delegate.CreateDelegate(typeof(E), new C(), "DoExecute"); Assert.NotNull(e); @@ -804,10 +807,13 @@ public static void CreateDelegate3() Assert.NotNull(e); Assert.Equal(5, e(new C())); - // matching static method - e = (E)Delegate.CreateDelegate(typeof(E), typeof(C), "Run"); - Assert.NotNull(e); - Assert.Equal(5, e(new C())); + if (IsDelegateLookupBugFixed) + { + // matching static method + e = (E)Delegate.CreateDelegate(typeof(E), typeof(C), "Run"); + Assert.NotNull(e); + Assert.Equal(5, e(new C())); + } // matching static method e = (E)Delegate.CreateDelegate(typeof(E), typeof(C), "DoRun"); @@ -978,25 +984,31 @@ public static void CreateDelegate4() C c = new C(); - // instance method, exact case, ignore case - e = (E)Delegate.CreateDelegate(typeof(E), c, "Execute", true); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + if (IsDelegateLookupBugFixed) + { + // instance method, exact case, ignore case + e = (E)Delegate.CreateDelegate(typeof(E), c, "Execute", true); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); + } // instance method, exact case, ignore case e = (E)Delegate.CreateDelegate(typeof(E), c, "DoExecute", true); Assert.NotNull(e); Assert.Equal(102, e(new C())); - // instance method, exact case, do not ignore case - e = (E)Delegate.CreateDelegate(typeof(E), c, "Execute", false); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + if (IsDelegateLookupBugFixed) + { + // instance method, exact case, do not ignore case + e = (E)Delegate.CreateDelegate(typeof(E), c, "Execute", false); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); - // instance method, case mismatch, ignore case - e = (E)Delegate.CreateDelegate(typeof(E), c, "ExecutE", true); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + // instance method, case mismatch, ignore case + e = (E)Delegate.CreateDelegate(typeof(E), c, "ExecutE", true); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); + } } [Fact] @@ -1171,29 +1183,32 @@ public static void CreateDelegate9() Assert.NotNull(e); Assert.Equal(4, e(new C())); - // do not ignore case, do not throw bind failure - e = (E)Delegate.CreateDelegate(typeof(E), new C(), - "Execute", false, false); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + if (IsDelegateLookupBugFixed) + { + // do not ignore case, do not throw bind failure + e = (E)Delegate.CreateDelegate(typeof(E), new C(), + "Execute", false, false); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); - // do not ignore case, throw bind failure - e = (E)Delegate.CreateDelegate(typeof(E), new C(), - "Execute", false, true); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + // do not ignore case, throw bind failure + e = (E)Delegate.CreateDelegate(typeof(E), new C(), + "Execute", false, true); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); - // ignore case, do not throw bind failure - e = (E)Delegate.CreateDelegate(typeof(E), new C(), - "Execute", true, false); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + // ignore case, do not throw bind failure + e = (E)Delegate.CreateDelegate(typeof(E), new C(), + "Execute", true, false); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); - // ignore case, throw bind failure - e = (E)Delegate.CreateDelegate(typeof(E), new C(), - "Execute", true, true); - Assert.NotNull(e); - Assert.Equal(4, e(new C())); + // ignore case, throw bind failure + e = (E)Delegate.CreateDelegate(typeof(E), new C(), + "Execute", true, true); + Assert.NotNull(e); + Assert.Equal(4, e(new C())); + } // do not ignore case, do not throw bind failure e = (E)Delegate.CreateDelegate(typeof(E), new C(), @@ -1408,6 +1423,23 @@ public static void CreateDelegate9_Type_Null() } } + // @todo: https://github.com/dotnet/corert/issues/3387 + // Once issue 3387 is fixed in CoreRT, delete this property. + private static bool IsDelegateLookupBugFixed + { + get + { +#if !uapaot + return true; +#else + // "Execute" is defined as a private method (with the wrong return type) in C and as a private method + // (with the right return type) in C's base class. CoreCLR finds it anyway. CoreRT does not. + Delegate d = Delegate.CreateDelegate(typeof(E), new C(), "Execute", ignoreCase: false, throwOnBindFailure: false); + return d != null; +#endif + } + } + #endregion Tests #region Test Setup From 03691e62e92c73bc0fe511c25723bee70bedffc3 Mon Sep 17 00:00:00 2001 From: Santiago Fernandez Madero Date: Wed, 19 Apr 2017 15:16:22 -0700 Subject: [PATCH 239/336] Fix unix time (#18640) * Change Unix creation time to min(ctime, mtime) --- .../tests/Mono/ConfigurationSaveTest.cs | 12 ------------ .../src/System/IO/FileSystemInfo.Unix.cs | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs index 820ccf1228f9..c4e0310279bc 100644 --- a/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs +++ b/src/System.Configuration.ConfigurationManager/tests/Mono/ConfigurationSaveTest.cs @@ -333,7 +333,6 @@ static void AssertListElement(XPathNavigator nav, TestLabel label) #region Tests [Fact] - [ActiveIssue(18431)] public void DefaultValues() { Run("DefaultValues", (config, label) => @@ -352,7 +351,6 @@ public void DefaultValues() } [Fact] - [ActiveIssue(18431)] public void AddDefaultListElement() { Run("AddDefaultListElement", (config, label) => @@ -375,7 +373,6 @@ public void AddDefaultListElement() } [Fact] - [ActiveIssue(18431)] public void AddDefaultListElement2() { Run("AddDefaultListElement2", (config, label) => @@ -412,7 +409,6 @@ public void AddDefaultListElement2() } [Fact] - [ActiveIssue(18431)] public void AddDefaultListElement3() { Run("AddDefaultListElement3", (config, label) => @@ -483,7 +479,6 @@ public void AddDefaultListElement3() } [Fact] - [ActiveIssue(18431)] public void AddListElement() { Run("AddListElement", (config, label) => @@ -507,7 +502,6 @@ public void AddListElement() } [Fact] - [ActiveIssue(18431)] public void NotModifiedAfterSave() { Run("NotModifiedAfterSave", (config, label) => @@ -552,7 +546,6 @@ public void NotModifiedAfterSave() } [Fact] - [ActiveIssue(18431)] public void AddSection() { Run("AddSection", (config, label) => @@ -568,7 +561,6 @@ public void AddSection() } [Fact] - [ActiveIssue(18431)] public void AddElement() { Run("AddElement", (config, label) => @@ -619,7 +611,6 @@ public void AddElement() } [Fact] - [ActiveIssue(18431)] public void ModifyListElement() { Run("ModifyListElement", (config, label) => @@ -640,7 +631,6 @@ public void ModifyListElement() } [Fact] - [ActiveIssue(18431)] public void ModifyListElement2() { Run("ModifyListElement2", (config, label) => @@ -664,7 +654,6 @@ public void ModifyListElement2() } [Fact] - [ActiveIssue(18431)] public void TestElementWithCollection() { Run("TestElementWithCollection", (config, label) => @@ -722,7 +711,6 @@ public void TestElementWithCollection() } [Fact] - [ActiveIssue(18431)] public void TestElementWithCollection2() { Run("TestElementWithCollection2", (config, label) => diff --git a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs index e40fa613707c..28db0fbe092a 100644 --- a/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs +++ b/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.cs @@ -173,7 +173,7 @@ DateTimeOffset IFileSystemObject.CreationTime EnsureStatInitialized(); long rawTime = (_fileStatus.Flags & Interop.Sys.FileStatusFlags.HasBirthTime) != 0 ? _fileStatus.BirthTime : - Math.Min(_fileStatus.ATime, Math.Min(_fileStatus.CTime, _fileStatus.MTime)); // fall back to the oldest time we have + Math.Min(_fileStatus.CTime, _fileStatus.MTime); // fall back to the oldest time we have in between change and modify time return DateTimeOffset.FromUnixTimeSeconds(rawTime).ToLocalTime(); } set From ddac822687e0321ee31391dddf838773daa7e4a5 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Wed, 19 Apr 2017 18:01:19 -0500 Subject: [PATCH 240/336] Remove unneeded property (#18641) This property is causing many test failures. The wrong assembly was being included in the ILC input folder --- src/System.Dynamic.Runtime/src/System.Dynamic.Runtime.csproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/System.Dynamic.Runtime/src/System.Dynamic.Runtime.csproj b/src/System.Dynamic.Runtime/src/System.Dynamic.Runtime.csproj index d01c842d9fb5..2360412d2a16 100644 --- a/src/System.Dynamic.Runtime/src/System.Dynamic.Runtime.csproj +++ b/src/System.Dynamic.Runtime/src/System.Dynamic.Runtime.csproj @@ -6,8 +6,6 @@ System.Dynamic.Runtime System.Dynamic.Runtime true - - false From 28b6bbff681b956fbe1e0a5e2133e99dc280b17b Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Thu, 13 Apr 2017 23:28:28 -0700 Subject: [PATCH 241/336] Start Activity and inject headers in HttpHAndlerDiagnosticListener on Net46 --- .../HttpHandlerDiagnosticListener.cs | 68 ++- .../HttpHandlerDiagnosticListenerTests.cs | 577 ++++++++++++------ 2 files changed, 436 insertions(+), 209 deletions(-) diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs index b334ef76b5fa..6532e2c5e3f0 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs @@ -8,6 +8,7 @@ using System.Reflection; using System.Reflection.Emit; using System.Runtime.Serialization; +using System.Text; // This HttpHandlerDiagnosticListener class is applicable only for .NET 4.6, and not for .NET core. @@ -557,33 +558,69 @@ private HttpHandlerDiagnosticListener() : base(DiagnosticListenerName) private void RaiseRequestEvent(HttpWebRequest request) { - // If System.Net.Http.Request is on, raise the event - if (this.IsEnabled(RequestWriteName)) + if (request.Headers.Get(RequestIdHeaderName) != null) { - long timestamp = Stopwatch.GetTimestamp(); - this.Write(RequestWriteName, - new + // this request was instrumented by previous RaiseRequestEvent + return; + } + + if (this.IsEnabled(ActivityName, request)) + { + var activity = new Activity(ActivityName); + + // Only send start event to users who subscribed for it, but start activity anyway + if (this.IsEnabled(RequestStartName)) + { + long timestamp = Stopwatch.GetTimestamp(); + this.StartActivity(activity, + new + { + Request = request, + Timestamp = timestamp + }); + } + else + { + activity.Start(); + } + + request.Headers.Add(RequestIdHeaderName, activity.Id); + //we expect baggage to be empty or contain a few items + using (IEnumerator> e = activity.Baggage.GetEnumerator()) + { + if (e.MoveNext()) { - Request = request, - Timestamp = timestamp + StringBuilder baggage = new StringBuilder(); + do + { + KeyValuePair item = e.Current; + baggage.Append(item.Key).Append('=').Append(item.Value).Append(','); + } + while (e.MoveNext()); + baggage.Remove(baggage.Length - 1, 1); + request.Headers.Add(CorrelationContextHeaderName, baggage.ToString()); } - ); + } + + // There is no gurantee that Activity.Current will flow to the Response, so let's stop it here + activity.Stop(); } } private void RaiseResponseEvent(HttpWebRequest request, HttpWebResponse response) { - if (this.IsEnabled(ResponseWriteName)) + // Response event could be received several times for the same request + if (request.Headers[RequestIdHeaderName] != null) { + // only send Stop if request was instrumented long timestamp = Stopwatch.GetTimestamp(); - this.Write(ResponseWriteName, + this.Write(RequestStopName, new { Request = request, Response = response, Timestamp = timestamp - } - ); + }); } } @@ -647,9 +684,12 @@ private static void PerformInjection() #region private fields private const string DiagnosticListenerName = "System.Net.Http.Desktop"; - private const string RequestWriteName = "System.Net.Http.Request"; - private const string ResponseWriteName = "System.Net.Http.Response"; + private const string ActivityName = "System.Net.Http.Desktop.HttpRequestOut"; + private const string RequestStartName = "System.Net.Http.Desktop.HttpRequestOut.Start"; + private const string RequestStopName = "System.Net.Http.Desktop.HttpRequestOut.Stop"; private const string InitializationFailed = "System.Net.Http.InitializationFailed"; + private const string RequestIdHeaderName = "Request-Id"; + private const string CorrelationContextHeaderName = "Correlation-Context"; // Fields for controlling initialization of the HttpHandlerDiagnosticListener singleton private bool initialized = false; diff --git a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs index 43a58c61a0ac..faf149e4cb73 100644 --- a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs +++ b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs @@ -1,9 +1,9 @@ -using System.Collections.Generic; -using System.Diagnostics; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; using System.Net; using System.Net.Http; using System.Reflection; -using System.Text; using System.Threading; using System.Threading.Tasks; using Xunit; @@ -19,15 +19,17 @@ public class HttpHandlerDiagnosticListenerTests public void TestHttpDiagnosticListenerIsRegistered() { bool listenerFound = false; - DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => - { - if (diagnosticListener.Name == "System.Net.Http.Desktop") + using (DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => { - listenerFound = true; - } - })); + if (diagnosticListener.Name == "System.Net.Http.Desktop") + { + listenerFound = true; + } + }))) + { - Assert.True(listenerFound, "The Http Diagnostic Listener didn't get added to the AllListeners list."); + Assert.True(listenerFound, "The Http Diagnostic Listener didn't get added to the AllListeners list."); + } } /// @@ -37,105 +39,233 @@ public void TestHttpDiagnosticListenerIsRegistered() [Fact] public void TestReflectInitializationViaSubscription1() { - EventObserverAndRecorder eventRecords = CreateEventRecorder(); - - // Send a random Http request to generate some events - HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; + using (var eventRecords = new EventObserverAndRecorder()) + { + // Send a random Http request to generate some events + new HttpClient().GetAsync("http://www.bing.com").Wait(); - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= 2, "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.True(eventRecords.Records.Count >= 2, + "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + } } /// /// A simple test to make sure the Http Diagnostic Source is initialized properly after we subscribed to it, using - /// the subscribe overload with the observer argument and the simple predicate argument. + /// the subscribe overload with just the observer argument and the more compolicating enable filter function. /// [Fact] public void TestReflectInitializationViaSubscription2() { - EventObserverAndRecorder eventRecords = new EventObserverAndRecorder(); - DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => + using (var eventRecords = new EventObserverAndRecorder(eventName => true)) { - if (diagnosticListener.Name == "System.Net.Http.Desktop") - { - diagnosticListener.Subscribe(eventRecords, (eventName) => { return true; }); - } - })); + // Send a random Http request to generate some events + new HttpClient().GetAsync("http://www.bing.com").Wait(); - // Send a random Http request to generate some events - HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; - - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= 2, "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.True(eventRecords.Records.Count >= 2, + "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + } } /// /// A simple test to make sure the Http Diagnostic Source is initialized properly after we subscribed to it, using - /// the subscribe overload with just the observer argument and the more compolicating enable filter function. + /// the subscribe overload with the observer argument and the simple predicate argument. /// [Fact] public void TestReflectInitializationViaSubscription3() { - EventObserverAndRecorder eventRecords = new EventObserverAndRecorder(); - DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => + using (var eventRecords = new EventObserverAndRecorder((eventName, arg1, arg2) => true)) { - if (diagnosticListener.Name == "System.Net.Http.Desktop") + // Send a random Http request to generate some events + new HttpClient().GetAsync("http://www.bing.com").Wait(); + + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.True(eventRecords.Records.Count >= 2, + "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + } + } + + /// + /// Test to make sure we get both request and response events. + /// + [Fact] + public async Task TestBasicReceiveAndResponseEvents() + { + using (var eventRecords = new EventObserverAndRecorder()) + { + // Send a random Http request to generate some events + await new HttpClient().GetAsync("http://www.bing.com"); + + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.Equal(1, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.True(eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop")) >= 1); + + // Check to make sure: The first record must be a request, the next record must be a response. + // The rest is unknown number of responses (it depends on # of redirections) + + KeyValuePair startEvent; + Assert.True(eventRecords.Records.TryDequeue(out startEvent)); + Assert.Equal("System.Net.Http.Desktop.HttpRequestOut.Start", startEvent.Key); + WebRequest startRequest = ReadPublicProperty(startEvent.Value, "Request"); + Assert.NotNull(startRequest.Headers["Request-Id"]); + + KeyValuePair stopEvent; + Assert.True(eventRecords.Records.TryDequeue(out stopEvent)); + Assert.Equal("System.Net.Http.Desktop.HttpRequestOut.Stop", stopEvent.Key); + WebRequest stopRequest = ReadPublicProperty(stopEvent.Value, "Request"); + Assert.Equal(startRequest, stopRequest); + + foreach (var pair in eventRecords.Records) { - diagnosticListener.Subscribe(eventRecords, (eventName, obj1, obj2) => { return true; }); + WebRequest thisRequest = ReadPublicProperty(pair.Value, "Request"); + Assert.Equal("System.Net.Http.Desktop.HttpRequestOut.Stop", pair.Key); + Assert.Equal(startRequest, thisRequest); } - })); + } + } - // Send a random Http request to generate some events - HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; + /// + /// Test exception in request processing: exception should have expected type/status and now be swallowed by reflection hook + /// + [Fact] + public async Task TestRequestWithException() + { + using (var eventRecords = new EventObserverAndRecorder()) + { + var ex = + await Assert.ThrowsAsync( + () => new HttpClient().GetAsync($"http://{Guid.NewGuid()}.com")); + + // check that request failed because of the wrong domain name and not because of reflection + var webException = (WebException)ex.InnerException; + Assert.NotNull(webException); + Assert.True(webException.Status == WebExceptionStatus.NameResolutionFailure); + + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.Equal(1, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.Equal(0, eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop"))); + } + } - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= 2, "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + /// + /// Test request cancellation: reflection hook does not throw + /// + [Fact] + public async Task TestCanceledRequest() + { + using (var eventRecords = new EventObserverAndRecorder()) + { + CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromMilliseconds(1)); + await Assert.ThrowsAsync( + () => new HttpClient().GetAsync("http://bing.com", cts.Token)); + + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.Equal(1, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.Equal(0, eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop"))); + } } /// - /// Test to make sure we get both request and response events. + /// Test Request-Id and Correlation-Context headers injection /// [Fact] - public void TestBasicReceiveAndResponseEvents() + public async Task TestActivityIsCreated() { - EventObserverAndRecorder eventRecords = CreateEventRecorder(); + var parentActivity = new Activity("parent").AddBaggage("k1", "v1").AddBaggage("k2", "v2").Start(); + using (var eventRecords = new EventObserverAndRecorder()) + { + await new HttpClient().GetAsync("http://www.bing.com"); - // Send a random Http request to generate some events - HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; + Assert.Equal(1, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.True(eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop")) >= 1); - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= 2, "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + WebRequest thisRequest = ReadPublicProperty(eventRecords.Records.First().Value, "Request"); + var requestId = thisRequest.Headers["Request-Id"]; + var correlationContext = thisRequest.Headers["Correlation-Context"]; - // I can't use the HttpWebRequest type here since it doesn't exist in .net core, so just use "object" - WebRequest firstRequest = null; + Assert.NotNull(requestId); + Assert.True(requestId.StartsWith(parentActivity.Id)); - // Check to make sure: The first record must be a request, the last record must be a response. Records in - // the middle can be anything since it depends on # of redirections - for (int i = 0; i < eventRecords.Records.Count; i++) - { - var pair = eventRecords.Records[i]; - object eventFields = pair.Value; - WebRequest thisRequest = ReadPublicProperty(eventFields, "Request"); + Assert.NotNull(correlationContext); + Assert.True(correlationContext == "k1=v1,k2=v2" || correlationContext == "k2=v2,k1=v1"); + } + parentActivity.Stop(); + } - if (i == 0) + /// + /// Tests IsEnabled order and parameters + /// + [Fact] + public async Task TestIsEnabled() + { + int eventNumber = 0; + + bool IsEnabled(string evnt, object arg1, object arg2) + { + if (eventNumber == 0) { - Assert.Equal("System.Net.Http.Request", pair.Key); - firstRequest = thisRequest; + Assert.True(evnt == "System.Net.Http.Desktop.HttpRequestOut"); + Assert.True(arg1 is WebRequest); } - else if (i == eventRecords.Records.Count - 1) + else if (eventNumber == 1) { - Assert.Equal("System.Net.Http.Response", pair.Key); - Assert.Equal(firstRequest, thisRequest); + Assert.True(evnt == "System.Net.Http.Desktop.HttpRequestOut.Start"); } - else + + eventNumber++; + return true; + } + + using (new EventObserverAndRecorder(IsEnabled)) + { + await new HttpClient().GetAsync("http://www.bing.com"); + Assert.Equal(2, eventNumber); + } + } + + /// + /// Tests that nothing happens if IsEnabled returns false + /// + [Fact] + public async Task TestIsEnabledAllOff() + { + using (var eventRecords = new EventObserverAndRecorder((evnt, arg1, arg2) => false)) + { + await new HttpClient().GetAsync("http://www.bing.com"); + + Assert.Equal(0, eventRecords.Records.Count); + } + } + + /// + /// Tests that if IsEnabled for request is false, request is not instrumented + /// + [Fact] + public async Task TestIsEnabledRequestOff() + { + bool IsEnabled(string evnt, object arg1, object arg2) + { + if (evnt == "System.Net.Http.Desktop.HttpRequestOut") { - Assert.True(pair.Key == "System.Net.Http.Response" || pair.Key == "System.Net.Http.Request", "An unexpected event of name " + pair.Key + "was received"); - Assert.Equal(firstRequest, thisRequest); + return !(arg1 as WebRequest).RequestUri.ToString().Contains("bing"); } + return true; + } + + using (var eventRecords = new EventObserverAndRecorder(IsEnabled)) + { + await new HttpClient().GetAsync("http://www.bing.com"); + Assert.Equal(0, eventRecords.Records.Count); + + await new HttpClient().GetAsync("http://www.microsoft.com"); + Assert.True(eventRecords.Records.Count > 0); } } @@ -145,38 +275,44 @@ public void TestBasicReceiveAndResponseEvents() [Fact] public void TestDynamicPropertiesOnReceiveAndResponseEvents() { - EventObserverAndRecorder eventRecords = CreateEventRecorder(); - long beginTimestamp = Stopwatch.GetTimestamp(); + using (var eventRecords = new EventObserverAndRecorder()) + { + long beginTimestamp = Stopwatch.GetTimestamp(); - // Send a random Http request to generate some events - HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; + // Send a random Http request to generate some events + HttpResponseMessage message = new HttpClient().GetAsync("http://www.bing.com").Result; - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= 2, "Didn't get two or more events from Http Diagnostic Listener. Something is wrong."); + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.Equal(1, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.True(eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop")) >= 1); - // Check to make sure: The first record must be a request, the last record must be a response. Records in - // the middle can be anything since it depends on # of redirections - for (int i = 0; i < eventRecords.Records.Count; i++) - { - var pair = eventRecords.Records[i]; - object eventFields = pair.Value; - Assert.True(pair.Key == "System.Net.Http.Response" || pair.Key == "System.Net.Http.Request", "An unexpected event of name " + pair.Key + "was received"); + // Check to make sure: The first record must be a request, the last record must be a response. Records in + // the middle can be anything since it depends on # of redirections + foreach (var pair in eventRecords.Records) + { + object eventFields = pair.Value; + + Assert.True( + pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Start" || + pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Stop", + "An unexpected event of name " + pair.Key + "was received"); - WebRequest request = ReadPublicProperty(eventFields, "Request"); - long timestamp = ReadPublicProperty(eventFields, "Timestamp"); + WebRequest request = ReadPublicProperty(eventFields, "Request"); + long timestamp = ReadPublicProperty(eventFields, "Timestamp"); - Assert.Equal(request.GetType().Name, "HttpWebRequest"); + Assert.Equal(request.GetType().Name, "HttpWebRequest"); - // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we - // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); + // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we + // found that 10 secs is roughly 30,000,000 ticks + Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); - if (pair.Key == "System.Net.Http.Response") - { - object response = ReadPublicProperty(eventFields, "Response"); - Assert.Equal(response.GetType().Name, "HttpWebResponse"); + if (pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Stop") + { + object response = ReadPublicProperty(eventFields, "Response"); + Assert.Equal(response.GetType().Name, "HttpWebResponse"); + } } } } @@ -187,111 +323,133 @@ public void TestDynamicPropertiesOnReceiveAndResponseEvents() [Fact] public void TestMultipleConcurrentRequests() { - EventObserverAndRecorder eventRecords = CreateEventRecorder(); - long beginTimestamp = Stopwatch.GetTimestamp(); - - Dictionary> requestData = new Dictionary>(); - requestData.Add("http://www.microsoft.com", null); - requestData.Add("http://www.bing.com", null); - requestData.Add("http://www.xbox.com", null); - requestData.Add("http://www.office.com", null); - requestData.Add("http://www.microsoftstore.com", null); - requestData.Add("http://www.msn.com", null); - requestData.Add("http://outlook.live.com", null); - requestData.Add("http://build.microsoft.com", null); - requestData.Add("http://azure.microsoft.com", null); - requestData.Add("http://www.nuget.org", null); - requestData.Add("http://support.microsoft.com", null); - requestData.Add("http://www.visualstudio.com", null); - requestData.Add("http://msdn.microsoft.com", null); - requestData.Add("http://onedrive.live.com", null); - requestData.Add("http://community.dynamics.com", null); - requestData.Add("http://login.live.com", null); - requestData.Add("http://www.skype.com", null); - requestData.Add("http://channel9.msdn.com", null); - - // Issue all requests simultaneously - HttpClient httpClient = new HttpClient(); - List> tasks = new List>(); - foreach (string url in requestData.Keys) + var parentActivity = new Activity("parent").Start(); + using (var eventRecords = new EventObserverAndRecorder()) { - tasks.Add(httpClient.GetAsync(url)); - } - - Task.WaitAll(tasks.ToArray()); + long beginTimestamp = Stopwatch.GetTimestamp(); - // Examine the result. Make sure we got them all. + Dictionary> requestData = + new Dictionary> + { + {"http://www.microsoft.com", null}, + {"http://www.bing.com", null}, + {"http://www.xbox.com", null}, + {"http://www.office.com", null}, + {"http://www.microsoftstore.com", null}, + {"http://www.msn.com", null}, + {"http://outlook.live.com", null}, + {"http://build.microsoft.com", null}, + {"http://azure.microsoft.com", null}, + {"http://www.nuget.org", null}, + {"http://support.microsoft.com", null}, + {"http://www.visualstudio.com", null}, + {"http://msdn.microsoft.com", null}, + {"http://onedrive.live.com", null}, + {"http://community.dynamics.com", null}, + {"http://login.live.com", null}, + {"http://www.skype.com", null}, + {"http://channel9.msdn.com", null} + }; + + // Issue all requests simultaneously + HttpClient httpClient = new HttpClient(); + List> tasks = new List>(); + + CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(10)); + foreach (string url in requestData.Keys) + { + tasks.Add(httpClient.GetAsync(url, cts.Token)); + } - // Just make sure some events are written, to confirm we successfully subscribed to it. We should have - // at least two events, one for request send, and one for response receive - Assert.True(eventRecords.Records.Count >= requestData.Count * 2, "Didn't get two or more events on average from each request. Something is wrong."); + Task.WaitAll(tasks.ToArray()); - // Check to make sure: We have a WebRequest and a WebResponse for each URL - for (int i = 0; i < eventRecords.Records.Count; i++) - { - var pair = eventRecords.Records[i]; - object eventFields = pair.Value; + // Examine the result. Make sure we got them all. - Assert.True(pair.Key == "System.Net.Http.Response" || pair.Key == "System.Net.Http.Request", "An unexpected event of name " + pair.Key + "was received"); + // Just make sure some events are written, to confirm we successfully subscribed to it. We should have + // at least two events, one for request send, and one for response receive + Assert.Equal(requestData.Count, eventRecords.Records.Count(rec => rec.Key.EndsWith("Start"))); + Assert.True(eventRecords.Records.Count(rec => rec.Key.EndsWith("Stop")) >= requestData.Count); - WebRequest request = ReadPublicProperty(eventFields, "Request"); - long timestamp = ReadPublicProperty(eventFields, "Timestamp"); + // Check to make sure: We have a WebRequest and a WebResponse for each URL + foreach (var pair in eventRecords.Records) + { + object eventFields = pair.Value; - Assert.Equal(request.GetType().Name, "HttpWebRequest"); + Assert.True( + pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Start" || + pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Stop", + "An unexpected event of name " + pair.Key + "was received"); - // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we - // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); + long timestamp = ReadPublicProperty(eventFields, "Timestamp"); - if (pair.Key == "System.Net.Http.Request") - { - // Make sure this is an URL that we recognize. If not, just skip - Tuple tuple = null; - if (!requestData.TryGetValue(request.RequestUri.OriginalString, out tuple)) - { - continue; - } + // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we + // found that 10 secs is roughly 30,000,000 ticks + Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); - WebRequest previousSeenRequest = tuple?.Item1; - WebResponse previousSeenResponse = tuple?.Item2; + WebRequest request = ReadPublicProperty(eventFields, "Request"); + Assert.Equal(request.GetType().Name, "HttpWebRequest"); - // We see have seen an HttpWebRequest before for this URL/host, make sure it's the same one, - // Then update the tuple with the request object, if we didn't have one - Assert.True(previousSeenRequest == null || previousSeenRequest == request, "Didn't expect to see a different WebRequest object going to the same url host for: " + request.RequestUri.OriginalString); - requestData[request.RequestUri.OriginalString] = new Tuple(previousSeenRequest ?? request, previousSeenResponse); - } - else - { - // This must be the response. - WebResponse response = ReadPublicProperty(eventFields, "Response"); - Assert.Equal(response.GetType().Name, "HttpWebResponse"); - - // By the time we see the response, the request object may already have been redirected with a different - // url. Hence, it's not reliable to just look up requestData by the URL/hostname. Instead, we have to look - // through each one and match by object reference on the request object. - Tuple tuple = null; - foreach (Tuple currentTuple in requestData.Values) + if (pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Start") { - if (currentTuple != null && currentTuple.Item1 == request) + // Make sure this is an URL that we recognize. If not, just skip + Tuple tuple = null; + if (!requestData.TryGetValue(request.RequestUri.OriginalString, out tuple)) { - // Found it! - tuple = currentTuple; - break; + continue; } + + // all requests have Request-Id with proper parent Id + var requestId = request.Headers["Request-Id"]; + Assert.True(requestId.StartsWith(parentActivity.Id)); + // all request activities are siblings: + var childSuffix = requestId.Substring(0, parentActivity.Id.Length); + Assert.True(childSuffix.IndexOf('.') == childSuffix.Length - 1); + + WebRequest previousSeenRequest = tuple?.Item1; + WebResponse previousSeenResponse = tuple?.Item2; + + // We see have seen an HttpWebRequest before for this URL/host, make sure it's the same one, + // Then update the tuple with the request object, if we didn't have one + Assert.True(previousSeenRequest == null || previousSeenRequest == request, + "Didn't expect to see a different WebRequest object going to the same url host for: " + + request.RequestUri.OriginalString); + requestData[request.RequestUri.OriginalString] = + new Tuple(previousSeenRequest ?? request, previousSeenResponse); } + else + { + // This must be the response. + WebResponse response = ReadPublicProperty(eventFields, "Response"); + Assert.Equal(response.GetType().Name, "HttpWebResponse"); + + // By the time we see the response, the request object may already have been redirected with a different + // url. Hence, it's not reliable to just look up requestData by the URL/hostname. Instead, we have to look + // through each one and match by object reference on the request object. + Tuple tuple = null; + foreach (Tuple currentTuple in requestData.Values) + { + if (currentTuple != null && currentTuple.Item1 == request) + { + // Found it! + tuple = currentTuple; + break; + } + } - // Update the tuple with the response object - Assert.NotNull(tuple); - requestData[request.RequestUri.OriginalString] = new Tuple(request, response); + // Update the tuple with the response object + Assert.NotNull(tuple); + requestData[request.RequestUri.OriginalString] = + new Tuple(request, response); + } } - } - // Finally, make sure we have request and response objects for every entry - foreach (KeyValuePair> pair in requestData) - { - Assert.NotNull(pair.Value); - Assert.NotNull(pair.Value.Item1); - Assert.NotNull(pair.Value.Item2); + // Finally, make sure we have request and response objects for every entry + foreach (KeyValuePair> pair in requestData) + { + Assert.NotNull(pair.Value); + Assert.NotNull(pair.Value.Item1); + Assert.NotNull(pair.Value.Item2); + } } } @@ -302,19 +460,6 @@ private static T ReadPublicProperty(object obj, string propertyName) return (T)property.GetValue(obj); } - private EventObserverAndRecorder CreateEventRecorder() - { - EventObserverAndRecorder eventRecords = new EventObserverAndRecorder(); - DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => - { - if (diagnosticListener.Name == "System.Net.Http.Desktop") - { - diagnosticListener.Subscribe(eventRecords); - } - })); - return eventRecords; - } - /// /// CallbackObserver is a adapter class that creates an observer (which you can pass /// to IObservable.Subscribe), and calls the given callback every time the 'next' @@ -335,13 +480,55 @@ public void OnError(Exception error) { } /// EventObserverAndRecorder is an observer that watches all Http diagnosticlistener events flowing /// through, and record all of them /// - private class EventObserverAndRecorder : IObserver> + private class EventObserverAndRecorder : IObserver>, IDisposable { - public List> Records { get; } = new List>(); + public EventObserverAndRecorder() + { + listSubscription = DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => + { + if (diagnosticListener.Name == "System.Net.Http.Desktop") + { + httpSubscription = diagnosticListener.Subscribe(this); + } + })); + } + + public EventObserverAndRecorder(Predicate isEnabled) + { + listSubscription = DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => + { + if (diagnosticListener.Name == "System.Net.Http.Desktop") + { + httpSubscription = diagnosticListener.Subscribe(this, isEnabled); + } + })); + } + + public EventObserverAndRecorder(Func isEnabled) + { + listSubscription = DiagnosticListener.AllListeners.Subscribe(new CallbackObserver(diagnosticListener => + { + if (diagnosticListener.Name == "System.Net.Http.Desktop") + { + httpSubscription = diagnosticListener.Subscribe(this, isEnabled); + } + })); + } + + public void Dispose() + { + listSubscription.Dispose(); + httpSubscription.Dispose(); + } + + public ConcurrentQueue> Records { get; } = new ConcurrentQueue>(); public void OnCompleted() { } public void OnError(Exception error) { } - public void OnNext(KeyValuePair record) { Records.Add(record); } + public void OnNext(KeyValuePair record) { Records.Enqueue(record); } + + private readonly IDisposable listSubscription; + private IDisposable httpSubscription; } } } From ed17405dd6d04de880ea226b87c21b008c205b57 Mon Sep 17 00:00:00 2001 From: Will Dean Date: Thu, 20 Apr 2017 01:20:40 +0100 Subject: [PATCH 242/336] SerialPort: Clear fAbortOnError when port opens (#17662) * Added failing test for fAbortOnError not cleared Issue #17396 * Ensure fAbortOnError is clear when opening port --- .../src/System/IO/Ports/SerialStream.cs | 2 + .../tests/SerialPort/AbortOnError.cs | 72 +++++++++++++++++++ .../tests/System.IO.Ports.Tests.csproj | 1 + 3 files changed, 75 insertions(+) create mode 100644 src/System.IO.Ports/tests/SerialPort/AbortOnError.cs diff --git a/src/System.IO.Ports/src/System/IO/Ports/SerialStream.cs b/src/System.IO.Ports/src/System/IO/Ports/SerialStream.cs index cf0015923be7..a5029bfc787c 100644 --- a/src/System.IO.Ports/src/System/IO/Ports/SerialStream.cs +++ b/src/System.IO.Ports/src/System/IO/Ports/SerialStream.cs @@ -1307,6 +1307,8 @@ private unsafe void InitializeDCB(int baudRate, Parity parity, int dataBits, Sto // Later the user may change this via the NullDiscard property. SetDcbFlag(NativeMethods.FNULL, discardNull ? 1 : 0); + // SerialStream does not handle the fAbortOnError behaviour, so we must make sure it's not enabled + SetDcbFlag(NativeMethods.FABORTONOERROR, 0); // Setting RTS control, which is RTS_CONTROL_HANDSHAKE if RTS / RTS-XOnXOff handshaking // used, RTS_ENABLE (RTS pin used during operation) if rtsEnable true but XOnXoff / No handshaking diff --git a/src/System.IO.Ports/tests/SerialPort/AbortOnError.cs b/src/System.IO.Ports/tests/SerialPort/AbortOnError.cs new file mode 100644 index 000000000000..b76a57efc5b0 --- /dev/null +++ b/src/System.IO.Ports/tests/SerialPort/AbortOnError.cs @@ -0,0 +1,72 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using System.IO.PortsTests; +using System.Reflection; +using Legacy.Support; +using Xunit; + +namespace System.IO.Ports.Tests +{ + public class AbortOnError : PortsTest + { + /// + /// This is a test for GH issue 17396, Connect issue 584116 + /// + /// The situation is as follows: + /// * Some user of the port causes DCB.fAbortOnError to be set at some point + /// * The port is later opened by SerialPort - which doesn't clear fAbortOnError + /// when it's initialising the port + /// * Subsequent errors on the port are mishandled, because fAbortOnError causes + /// the error behaviour to be different, and SerialPort isn't prepared for this + /// + /// To test this, we need to do the following + /// 1. Open the port, then use a private SerialStream method to set fAbortOnError to TRUE and then close the port + /// 2. Reopen the port + /// 3. Verify that the fAbortOnError flag is clear + /// + /// + [ConditionalFact(nameof(HasOneSerialPort))] + public void AbortOnErrorShouldBeClearedOnOpen() + { + // Open the port, set the fAbortOnError flag and then close the port + SetAbortOnError(TCSupport.LocalMachineSerialInfo.FirstAvailablePortName); + + using (SerialPort com = new SerialPort(TCSupport.LocalMachineSerialInfo.FirstAvailablePortName)) + { + com.Open(); + + Assert.False(ReadAbortOnErrorFlag(com), "fAbortOnError should be clear when port is opened"); + } + } + + private static bool ReadAbortOnErrorFlag(SerialPort com) + { + Stream baseStream = com.BaseStream; + int flagValue = (int)baseStream.GetType() + .GetMethod("GetDcbFlag", BindingFlags.NonPublic | BindingFlags.Instance) + .Invoke(baseStream, new object[] {14}); + return flagValue != 0; + } + + private void SetAbortOnError(string port) + { + using (SerialPort com = new SerialPort(port)) + { + com.Open(); + Stream baseStream = com.BaseStream; + + // Invoke the private method SetDcbFlag to set bit 14 in the DCB flags + // This just updates the _dcb.Flags member of SerialStream + baseStream.GetType().GetMethod("SetDcbFlag", BindingFlags.NonPublic | BindingFlags.Instance) + .Invoke(baseStream, new object[] { 14, 1 }); + + // Force the DCB to get written to the driver + com.DataBits = 7; + com.DataBits = 8; + } + } + } +} diff --git a/src/System.IO.Ports/tests/System.IO.Ports.Tests.csproj b/src/System.IO.Ports/tests/System.IO.Ports.Tests.csproj index 90af1b654da3..6b4680888175 100644 --- a/src/System.IO.Ports/tests/System.IO.Ports.Tests.csproj +++ b/src/System.IO.Ports/tests/System.IO.Ports.Tests.csproj @@ -42,6 +42,7 @@ + From 2422fb77bb3e25e9bae063bc1bcd14b2329f3d90 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Wed, 19 Apr 2017 17:03:35 -0700 Subject: [PATCH 243/336] Do not send timestamp in the Start/Stop event payload --- .../HttpHandlerDiagnosticListener.cs | 19 +++---------------- .../HttpHandlerDiagnosticListenerTests.cs | 12 ------------ .../ApiCompatBaseline.netcoreapp.netfx461.txt | 8 +++++++- .../ApiCompatBaseline.netfx.netstandard20.txt | 3 ++- 4 files changed, 12 insertions(+), 30 deletions(-) diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs index 6532e2c5e3f0..f2b0a4bcc243 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/HttpHandlerDiagnosticListener.cs @@ -571,13 +571,7 @@ private void RaiseRequestEvent(HttpWebRequest request) // Only send start event to users who subscribed for it, but start activity anyway if (this.IsEnabled(RequestStartName)) { - long timestamp = Stopwatch.GetTimestamp(); - this.StartActivity(activity, - new - { - Request = request, - Timestamp = timestamp - }); + this.StartActivity(activity, new { Request = request }); } else { @@ -585,7 +579,7 @@ private void RaiseRequestEvent(HttpWebRequest request) } request.Headers.Add(RequestIdHeaderName, activity.Id); - //we expect baggage to be empty or contain a few items + // we expect baggage to be empty or contain a few items using (IEnumerator> e = activity.Baggage.GetEnumerator()) { if (e.MoveNext()) @@ -613,14 +607,7 @@ private void RaiseResponseEvent(HttpWebRequest request, HttpWebResponse response if (request.Headers[RequestIdHeaderName] != null) { // only send Stop if request was instrumented - long timestamp = Stopwatch.GetTimestamp(); - this.Write(RequestStopName, - new - { - Request = request, - Response = response, - Timestamp = timestamp - }); + this.Write(RequestStopName, new { Request = request, Response = response }); } } diff --git a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs index faf149e4cb73..5f9e2cc146aa 100644 --- a/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs +++ b/src/System.Diagnostics.DiagnosticSource/tests/HttpHandlerDiagnosticListenerTests.cs @@ -300,14 +300,8 @@ public void TestDynamicPropertiesOnReceiveAndResponseEvents() "An unexpected event of name " + pair.Key + "was received"); WebRequest request = ReadPublicProperty(eventFields, "Request"); - long timestamp = ReadPublicProperty(eventFields, "Timestamp"); - Assert.Equal(request.GetType().Name, "HttpWebRequest"); - // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we - // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); - if (pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Stop") { object response = ReadPublicProperty(eventFields, "Response"); @@ -380,12 +374,6 @@ public void TestMultipleConcurrentRequests() pair.Key == "System.Net.Http.Desktop.HttpRequestOut.Stop", "An unexpected event of name " + pair.Key + "was received"); - long timestamp = ReadPublicProperty(eventFields, "Timestamp"); - - // Just compare the timestamp to make sure it's reasonable. In an poorman experiment, we - // found that 10 secs is roughly 30,000,000 ticks - Assert.True(timestamp - beginTimestamp > 0 && timestamp - beginTimestamp < 30 * 1000 * 1000, $"The timestamp sent with the event doesn't look correct. Begin {beginTimestamp} End {timestamp} Diff {timestamp - beginTimestamp} Expected < {30 * 1000 * 1000}"); - WebRequest request = ReadPublicProperty(eventFields, "Request"); Assert.Equal(request.GetType().Name, "HttpWebRequest"); diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index 492b017a3f40..82270aa9a89e 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -6,6 +6,12 @@ ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Web.Applic ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the contract assembly 'Assembly(Name=System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)'. ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)' referenced by the contract assembly 'Assembly(Name=System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. Compat issues with assembly mscorlib: +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.ImportedFromTypeLibAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeLibFuncAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeLibImportClassAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeLibTypeAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeLibVarAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Runtime.InteropServices.TypeLibVersionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. MembersMustExist : Member 'System.Security.Principal.IdentityReferenceCollection.IsReadOnly.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Security.Principal.WindowsIdentity..ctor(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)' does not exist in the implementation but it does exist in the contract. @@ -91,4 +97,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 82 +Total Issues: 88 diff --git a/src/shims/ApiCompatBaseline.netfx.netstandard20.txt b/src/shims/ApiCompatBaseline.netfx.netstandard20.txt index 648c80c3e11f..0ce5e6362bc6 100644 --- a/src/shims/ApiCompatBaseline.netfx.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.netfx.netstandard20.txt @@ -444,6 +444,7 @@ TypesMustExist : Type 'System.Security.Cryptography.CngUIPolicy' does not exist TypesMustExist : Type 'System.Security.Cryptography.CngUIProtectionLevels' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.DSACng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.ECDsaCng' does not exist in the implementation but it does exist in the contract. +TypesMustExist : Type 'System.Security.Cryptography.ECKeyXmlFormat' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.RSACng' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.TripleDESCng' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Security.Cryptography.Csp: @@ -570,4 +571,4 @@ TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the im TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -Total Issues: 479 +Total Issues: 480 From b4304600158824775b25bbf8d0c664bd337cfa2e Mon Sep 17 00:00:00 2001 From: Jeremy Kuhne Date: Wed, 19 Apr 2017 17:44:38 -0700 Subject: [PATCH 244/336] Isolate environment variable theory tests. (#18625) --- .../tests/System/Environment.GetEnvironmentVariable.cs | 2 +- .../tests/System/Environment.SetEnvironmentVariable.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs b/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs index b0e0846d744f..c72626e822ab 100644 --- a/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs +++ b/src/System.Runtime.Extensions/tests/System/Environment.GetEnvironmentVariable.cs @@ -229,7 +229,7 @@ public void EnumerateEnvironmentVariables(EnvironmentVariableTarget target) { bool lookForSetValue = (target == EnvironmentVariableTarget.Process) || PlatformDetection.IsWindowsAndElevated; - const string key = "EnumerateEnvironmentVariables"; + string key = $"EnumerateEnvironmentVariables ({target})"; string value = Path.GetRandomFileName(); try diff --git a/src/System.Runtime.Extensions/tests/System/Environment.SetEnvironmentVariable.cs b/src/System.Runtime.Extensions/tests/System/Environment.SetEnvironmentVariable.cs index 5d62c9a3d2a0..957a907fd012 100644 --- a/src/System.Runtime.Extensions/tests/System/Environment.SetEnvironmentVariable.cs +++ b/src/System.Runtime.Extensions/tests/System/Environment.SetEnvironmentVariable.cs @@ -66,7 +66,7 @@ private static void ExecuteAgainstTarget( [InlineData(EnvironmentVariableTarget.User)] public void Default(EnvironmentVariableTarget target) { - const string varName = "Test_SetEnvironmentVariable_Default"; + string varName = $"Test_SetEnvironmentVariable_Default ({target})"; const string value = "true"; ExecuteAgainstTarget(target, @@ -90,7 +90,7 @@ public void Default(EnvironmentVariableTarget target) [InlineData(EnvironmentVariableTarget.User)] public void ModifyEnvironmentVariable(EnvironmentVariableTarget target) { - const string varName = "Test_ModifyEnvironmentVariable"; + string varName = $"Test_ModifyEnvironmentVariable ({target})"; const string value = "false"; ExecuteAgainstTarget(target, @@ -117,7 +117,7 @@ public void ModifyEnvironmentVariable(EnvironmentVariableTarget target) [InlineData(EnvironmentVariableTarget.User)] public void ModifyEnvironmentVariable_AndEnumerate(EnvironmentVariableTarget target) { - const string varName = "Test_ModifyEnvironmentVariable_AndEnumerate"; + string varName = $"Test_ModifyEnvironmentVariable_AndEnumerate ({target})"; const string value = "false"; ExecuteAgainstTarget(target, @@ -152,7 +152,7 @@ public void ModifyEnvironmentVariable_AndEnumerate(EnvironmentVariableTarget tar [InlineData(EnvironmentVariableTarget.User)] public void DeleteEnvironmentVariable(EnvironmentVariableTarget target) { - const string varName = "Test_DeleteEnvironmentVariable"; + string varName = $"Test_DeleteEnvironmentVariable ({target})"; const string value = "false"; ExecuteAgainstTarget(target, From 70c363b729424712296627649fe0be275b10cf94 Mon Sep 17 00:00:00 2001 From: Jeremy Barton Date: Wed, 19 Apr 2017 17:52:34 -0700 Subject: [PATCH 245/336] Validate the DER components of user-provided data The parameters value for the PublicKey and the generator's SignatureAlgorithm both are supposed to be DER-encoded; so validate that claim. For the most part this isn't necessary, since rehydrating the signed cert is going to fail to parse the certificate anyways; but being defensive is good. --- .../Cryptography/DerSequenceReader.cs | 84 +++++++++++++- .../Internal/Cryptography/EncodingHelpers.cs | 26 +++++ .../Pkcs10CertificationRequestInfo.cs | 5 +- .../X509Certificates/TbsCertificate.cs | 24 +--- .../CertificateRequestUsageTests.cs | 107 ++++++++++++++++++ 5 files changed, 222 insertions(+), 24 deletions(-) diff --git a/src/Common/src/System/Security/Cryptography/DerSequenceReader.cs b/src/Common/src/System/Security/Cryptography/DerSequenceReader.cs index 741e6085d590..2a963a0b7f73 100644 --- a/src/Common/src/System/Security/Cryptography/DerSequenceReader.cs +++ b/src/Common/src/System/Security/Cryptography/DerSequenceReader.cs @@ -24,6 +24,8 @@ internal class DerSequenceReader internal const byte ContextSpecificConstructedTag3 = ContextSpecificConstructedTag0 | 3; internal const byte ConstructedSequence = ConstructedFlag | (byte)DerTag.Sequence; + // 0b1100_0000 + internal const byte TagClassMask = 0xC0; internal const byte TagNumberMask = 0x1F; internal static DateTimeFormatInfo s_validityDateTimeFormatInfo; @@ -34,16 +36,17 @@ internal class DerSequenceReader internal int ContentLength { get; private set; } - private DerSequenceReader(bool startAtPayload, byte[] data) + private DerSequenceReader(bool startAtPayload, byte[] data, int offset, int length) { Debug.Assert(startAtPayload, "This overload is only for bypassing the sequence tag"); Debug.Assert(data != null, "Data is null"); + Debug.Assert(offset >= 0, "Offset is negative"); _data = data; - _position = 0; - _end = data.Length; + _position = offset; + _end = offset + length; - ContentLength = data.Length; + ContentLength = length; } internal DerSequenceReader(byte[] data) @@ -74,7 +77,7 @@ internal DerSequenceReader(DerTag tagToEat, byte[] data, int offset, int length) internal static DerSequenceReader CreateForPayload(byte[] payload) { - return new DerSequenceReader(true, payload); + return new DerSequenceReader(true, payload, 0, payload.Length); } internal bool HasData @@ -107,6 +110,61 @@ internal void SkipValue() _position += contentLength; } + internal void ValidateAndSkipDerValue() + { + byte tag = PeekTag(); + + // If the tag is in the UNIVERSAL class + if ((tag & TagClassMask) == 0) + { + // Tag 0 is special ("reserved for use by the encoding rules"), but mainly is used + // as the End-of-Contents marker for the indefinite length encodings, which DER prohibits. + // + // Tag 15 is reserved. + // + // So either of these are invalid. + + if (tag == 0 || tag == 15) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + + // DER limits the constructed encoding to SEQUENCE and SET, as well as anything which gets + // a defined encoding as being an IMPLICIT SEQUENCE. + + bool expectConstructed = false; + + switch (tag & TagNumberMask) + { + case 0x08: // External or Instance-Of + case 0x0B: // EmbeddedPDV + case (byte)DerTag.Sequence: + case (byte)DerTag.Set: + case 0x1D: // Unrestricted Character String + expectConstructed = true; + break; + } + + bool isConstructed = (tag & ConstructedFlag) == ConstructedFlag; + + if (expectConstructed != isConstructed) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + } + + EatTag((DerTag)tag); + int contentLength = EatLength(); + + if (contentLength > 0 && (tag & ConstructedFlag) == ConstructedFlag) + { + var childReader = new DerSequenceReader(true, _data, _position, _end - _position); + + while (childReader.HasData) + { + childReader.ValidateAndSkipDerValue(); + } + } + + _position += contentLength; + } + /// /// Returns the next value encoded (this includes tag and length) /// @@ -161,6 +219,15 @@ internal byte[] ReadBitString() EatTag(DerTag.BitString); int contentLength = EatLength(); + + if (contentLength < 1) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + + byte unusedBits = _data[_position]; + + if (unusedBits > 7) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + // skip the "unused bits" byte contentLength--; _position++; @@ -184,6 +251,9 @@ internal string ReadOidAsString() EatTag(DerTag.ObjectIdentifier); int contentLength = EatLength(); + if (contentLength < 1) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + // Each byte could cause 3 decimal characters to be written, plus a period. Over-allocate // and avoid re-alloc. StringBuilder builder = new StringBuilder(contentLength * 4); @@ -457,6 +527,10 @@ private int EatLength() int answer = ScanContentLength(_data, _position, out bytesConsumed); _position += bytesConsumed; + + if (answer > _end - _position) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + return answer; } diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs index b3b02e218670..066ed52def9f 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/EncodingHelpers.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; @@ -18,6 +19,23 @@ internal static byte[][] WrapAsSegmentedForSequence(this byte[] derData) return new[] { Array.Empty(), Array.Empty(), derData }; } + internal static void ValidateSignatureAlgorithm(byte[] signatureAlgorithm) + { + Debug.Assert(signatureAlgorithm != null); + + // AlgorithmIdentifier ::= SEQUENCE { OBJECT IDENTIFIER, ANY } + DerSequenceReader validator = new DerSequenceReader(signatureAlgorithm); + validator.ReadOidAsString(); + + if (validator.HasData) + { + validator.ValidateAndSkipDerValue(); + } + + if (validator.HasData) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + } + internal static byte[][] SegmentedEncodeSubjectPublicKeyInfo(this PublicKey publicKey) { if (publicKey == null) @@ -49,6 +67,14 @@ internal static byte[][] SegmentedEncodeSubjectPublicKeyInfo(this PublicKey publ } else { + DerSequenceReader validator = + DerSequenceReader.CreateForPayload(publicKey.EncodedParameters.RawData); + + validator.ValidateAndSkipDerValue(); + + if (validator.HasData) + throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); + algorithmIdentifier = DerEncoder.ConstructSegmentedSequence( DerEncoder.SegmentedEncodeOid(publicKey.Oid), publicKey.EncodedParameters.RawData.WrapAsSegmentedForSequence()); diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs index 09542a760d9f..6b2b54eee470 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs @@ -74,10 +74,13 @@ internal byte[] ToPkcs10Request(X509SignatureGenerator signatureGenerator, HashA byte[] encoded = Encode(); byte[] signature = signatureGenerator.SignData(encoded, hashAlgorithm); + byte[] signatureAlgorithm = signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + + EncodingHelpers.ValidateSignatureAlgorithm(signatureAlgorithm); return DerEncoder.ConstructSequence( encoded.WrapAsSegmentedForSequence(), - signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm).WrapAsSegmentedForSequence(), + signatureAlgorithm.WrapAsSegmentedForSequence(), DerEncoder.SegmentedEncodeBitString(signature)); } } diff --git a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs index 7cc09ae0c2aa..75685417c6e7 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/TbsCertificate.cs @@ -51,11 +51,6 @@ private byte[] Encode(X509SignatureGenerator signatureGenerator, HashAlgorithmNa Debug.Assert(SerialNumber != null); Debug.Assert(Issuer != null); - if (SignatureAlgorithm != null) - { - ValidateSignatureAlgorithm(); - } - List encodedFields = new List(); byte version = Version; @@ -74,6 +69,8 @@ private byte[] Encode(X509SignatureGenerator signatureGenerator, HashAlgorithmNa // SignatureAlgorithm: Use the specified value, or ask the generator (without mutating the class) byte[] signatureAlgorithm = SignatureAlgorithm ?? signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + EncodingHelpers.ValidateSignatureAlgorithm(signatureAlgorithm); + encodedFields.Add(signatureAlgorithm.WrapAsSegmentedForSequence()); // For public API allowing self-sign ease-of-use, this could be (Issuer ?? Subject). @@ -184,23 +181,14 @@ internal byte[] Sign(X509SignatureGenerator signatureGenerator, HashAlgorithmNam byte[] encoded = Encode(signatureGenerator, hashAlgorithm); byte[] signature = signatureGenerator.SignData(encoded, hashAlgorithm); + byte[] signatureAlgorithm = signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm); + + EncodingHelpers.ValidateSignatureAlgorithm(signatureAlgorithm); return DerEncoder.ConstructSequence( encoded.WrapAsSegmentedForSequence(), - signatureGenerator.GetSignatureAlgorithmIdentifier(hashAlgorithm).WrapAsSegmentedForSequence(), + signatureAlgorithm.WrapAsSegmentedForSequence(), DerEncoder.SegmentedEncodeBitString(signature)); } - - private void ValidateSignatureAlgorithm() - { - DerSequenceReader algReader = new DerSequenceReader(SignatureAlgorithm); - algReader.ReadOid(); - - if (algReader.HasData) - algReader.SkipValue(); - - if (algReader.HasData) - throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); - } } } diff --git a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs index 3164f6a10835..f9cfe0d5f158 100644 --- a/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs +++ b/src/System.Security.Cryptography.X509Certificates/tests/CertificateCreation/CertificateRequestUsageTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Globalization; using Test.Cryptography; using Xunit; @@ -368,5 +369,111 @@ public static void UniqueExtensions() Assert.Throws(() => request.CreateSelfSigned(now, now.AddDays(1))); } } + + [Theory] + [InlineData("Length Exceeds Payload", "0501")] + [InlineData("Leftover Data", "0101FF00")] + [InlineData("Constructed Null", "2500")] + [InlineData("Primitive Sequence", "1000")] + // SEQUENCE + // 30 10 + // SEQUENCE + // 30 02 + // OCTET STRING + // 04 01 -- Length exceeds data for inner SEQUENCE, but not the outer one. + // OCTET STRING + // 04 04 + // 00 00 00 00 + [InlineData("Big Length, Nested", "3010" + "30020401" + "040400000000")] + [InlineData("Big Length, Nested - Context Specific", "A010" + "30020401" + "040400000000")] + [InlineData("Tag Only", "05")] + [InlineData("Empty", "")] + [InlineData("Reserved Tag", "0F00")] + [InlineData("Zero Tag", "0000")] + public static void InvalidPublicKeyEncoding(string caseName, string parametersHex) + { + var generator = new InvalidSignatureGenerator( + Array.Empty(), + parametersHex.HexToByteArray(), + new byte[] { 0x05, 0x00 }); + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName("CN=Test"), + generator.PublicKey, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + Exception exception = Assert.Throws( + () => request.Create(request.SubjectName, generator, now, now.AddDays(1), new byte[1])); + + if (CultureInfo.CurrentCulture.Name == "en-US") + { + Assert.Contains("ASN1", exception.Message); + } + } + + [Theory] + [InlineData("Empty", "")] + [InlineData("Empty Sequence", "3000")] + [InlineData("Empty OID", "30020600")] + [InlineData("Non-Nested Data", "300206035102013001")] + [InlineData("Indefinite Encoding", "3002060351020130800000")] + [InlineData("Dangling LengthLength", "300206035102013081")] + public static void InvalidSignatureAlgorithmEncoding(string caseName, string sigAlgHex) + { + var generator = new InvalidSignatureGenerator( + Array.Empty(), + new byte[] { 0x05, 0x00 }, + sigAlgHex.HexToByteArray()); + + CertificateRequest request = new CertificateRequest( + new X500DistinguishedName("CN=Test"), + generator.PublicKey, + HashAlgorithmName.SHA256); + + DateTimeOffset now = DateTimeOffset.UtcNow; + + Exception exception = Assert.Throws( + () => + request.Create(request.SubjectName, generator, now, now.AddDays(1), new byte[1])); + + if (CultureInfo.CurrentCulture.Name == "en-US") + { + Assert.Contains("ASN1", exception.Message); + } + } + + private class InvalidSignatureGenerator : X509SignatureGenerator + { + private readonly byte[] _signatureAlgBytes; + private readonly PublicKey _publicKey; + + internal InvalidSignatureGenerator(byte[] keyBytes, byte[] parameterBytes, byte[] sigAlgBytes) + { + _signatureAlgBytes = sigAlgBytes; + + Oid oid = new Oid("2.1.2.1", "DER"); + _publicKey = new PublicKey( + oid, + parameterBytes == null ? null : new AsnEncodedData(oid, parameterBytes), + new AsnEncodedData(oid, keyBytes)); + } + + protected override PublicKey BuildPublicKey() + { + return _publicKey; + } + + public override byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm) + { + return _signatureAlgBytes; + } + + public override byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + { + throw new InvalidOperationException("The test should not have made it this far"); + } + } } } From c8bcbc3a4a559fc161dbd701c564cd3b083c9793 Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Wed, 19 Apr 2017 18:51:31 -0700 Subject: [PATCH 246/336] XmlSerializer to Support XmlMembersMapping via Reflection (#18238) * Fixed basic XmlMembersMapping tests. * Add test for HasWrapperElement=true. * Added tests for types having SpecifiedField. Fixed wrting types having SpecifiedField. * Enabled MembersMapping with SpecifiedField. Refactor ReflectionXmlSerializationReader. * Enabled using XmlMembersMapping with arrays. * Removed Unneeded Param: parentMapping. * Removed unused param: arrayName * Renamed variable: parent to container. * Modified the test helper: RoundTripWithXmlMembersMapping * Support Xmlns member. * Support XmlMembersMapping with XmlAnyAttribute. * Test XmlMembersMapping_Member_With_XmlAnyAttribute_Specified* * Support XmlMembersMapping with ChoiceIdentifier. * Make XmlSerializer.FromMappings Use Reflection for Soap. * Support Soap XmlMembersMapping. * Fix rebase conflict. * XmlMembersMapping_Soap_HasWrapperElement * XmlMembersMapping_Soap_MemberSpecified_True * XmlMembersMapping Soap HasWrapperElement Validate * Added a few tests. XmlMembersMapping_MultipleMembers XmlMembersMapping_MultipleMembers_IsReturnValue XmlMembersMapping_Soap_MultipleMembers_IsReturnValue * Replaced two Debug.Assert with exceptions. * XmlMembersMapping_MultipleMembers_XmlAnyElement * Some cleanup. * Fixed some PNSE, and added tests. * Xml_Soap_MyCollection * Fixed a bug with ReadOnly collection using Soap. * Add tests for nullables. * Clean up. Fix styles. * Fixed merge conflicts * Changes based on mconnew's feedback. --- .../ReflectionXmlSerializationReader.cs | 1090 ++++++++++---- .../ReflectionXmlSerializationWriter.cs | 361 +++-- .../System/Xml/Serialization/XmlSerializer.cs | 44 +- .../tests/XmlSerializer/XmlSerializerTests.cs | 1249 ++++++++++++++--- .../tests/SerializationTypes.cs | 63 +- 5 files changed, 2216 insertions(+), 591 deletions(-) diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs index b206c6b096b3..63afa9820ec8 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationReader.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Globalization; +using System.IO; using System.Linq; using System.Reflection; using System.Text; @@ -22,6 +23,8 @@ namespace Microsoft.XmlSerializer.Generator namespace System.Xml.Serialization #endif { + internal delegate void UnknownNodeAction(object o); + internal class ReflectionXmlSerializationReader : XmlSerializationReader { private static TypeDesc StringTypeDesc { get; set; } = (new TypeScope()).GetTypeDesc(typeof(string)); @@ -59,140 +62,497 @@ protected override void InitIDs() public object ReadObject() { - var xmlMapping = _mapping; + XmlMapping xmlMapping = _mapping; if (!xmlMapping.IsReadable) return null; + if (!xmlMapping.GenerateSerializer) throw new ArgumentException(SR.Format(SR.XmlInternalError, "xmlMapping")); - if (xmlMapping is XmlTypeMapping) - return GenerateTypeElement((XmlTypeMapping)xmlMapping); - else if (xmlMapping is XmlMembersMapping) - return GenerateMembersElement((XmlMembersMapping)xmlMapping); + if (xmlMapping is XmlTypeMapping xmlTypeMapping) + { + return GenerateTypeElement(xmlTypeMapping); + } + else if (xmlMapping is XmlMembersMapping xmlMembersMapping) + { + return GenerateMembersElement(xmlMembersMapping); + } else + { throw new ArgumentException(SR.Format(SR.XmlInternalError, "xmlMapping")); + } } - private object GenerateMembersElement(XmlMembersMapping xmlMapping) + private object GenerateMembersElement(XmlMembersMapping xmlMembersMapping) { - // #10675: we should implement this method. WCF is the major customer of the method - // as WCF uses XmlReflectionImporter.ImportMembersMapping and generates special - // serializers for OperationContracts. - throw new NotImplementedException(); + if (xmlMembersMapping.Accessor.IsSoap) + { + return GenerateEncodedMembersElement(xmlMembersMapping); + } + else + { + return GenerateLiteralMembersElement(xmlMembersMapping); + } } - private object GenerateTypeElement(XmlTypeMapping xmlTypeMapping) + private object GenerateLiteralMembersElement(XmlMembersMapping xmlMembersMapping) { - ElementAccessor element = xmlTypeMapping.Accessor; - TypeMapping mapping = element.Mapping; - + ElementAccessor element = xmlMembersMapping.Accessor; + MemberMapping[] mappings = ((MembersMapping)element.Mapping).Members; + bool hasWrapperElement = ((MembersMapping)element.Mapping).HasWrapperElement; Reader.MoveToContent(); - MemberMapping member = new MemberMapping(); - member.TypeDesc = mapping.TypeDesc; - member.Elements = new ElementAccessor[] { element }; + object[] p = new object[mappings.Length]; + InitializeValueTypes(p, mappings); - UnknownNodeAction elementElseAction = UnknownNodeAction.CreateUnknownNodeException; - UnknownNodeAction elseAction = UnknownNodeAction.ReadUnknownNode; + if (hasWrapperElement) + { + string elementName = element.Name; + string elementNs = element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty; + Reader.MoveToContent(); + while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) + { + if (Reader.IsStartElement(element.Name, elementNs)) + { + if (!GenerateLiteralMembersElementInternal(mappings, hasWrapperElement, p)) + { + continue; + } - object o = null; - Member tempMember = null; - var currentMember = new Member(member); - WriteMemberElements(ref o, null/*collectionMember*/, out tempMember, new Member[] { currentMember }, elementElseAction, elseAction, element.Any ? currentMember : null, null); - if (element.IsSoap) + ReadEndElement(); + } + else + { + + UnknownNode(null, $"{elementNs}:{elementName}"); + } + + Reader.MoveToContent(); + } + } + else { - Referenced(o); - ReadReferencedElements(); + GenerateLiteralMembersElementInternal(mappings, hasWrapperElement, p); } - return o; + return p; } - private void WriteMemberElements(ref object o, CollectionMember collectionMember, out Member member, Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup = null, object masterObject = null) + private bool GenerateLiteralMembersElementInternal(MemberMapping[] mappings, bool hasWrapperElement, object[] p) { - if (Reader.NodeType == XmlNodeType.Element) + Member anyText = null; + Member anyElement = null; + Member anyAttribute = null; + + var membersList = new List(); + var textOrArrayMembersList = new List(); + var attributeMembersList = new List(); + + int pLength = p.Length; + for (int i = 0; i < mappings.Length; i++) { - WriteMemberElementsIf(ref o, collectionMember, out member, expectedMembers, anyElement, elementElseAction, fixup: fixup, masterObject: masterObject); + int index = i; + MemberMapping mapping = mappings[index]; + Action source = (o) => p[index] = o; + + Member member = new Member(mapping); + Member anyMember = new Member(mapping); + + if (mapping.Xmlns != null) + { + var xmlns = new XmlSerializerNamespaces(); + p[index] = xmlns; + member.XmlnsSource = (ns, name) => xmlns.Add(ns, name); + } + + member.Source = source; + anyMember.Source = source; + + if (mapping.CheckSpecified == SpecifiedAccessor.ReadWrite) + { + string nameSpecified = mapping.Name + "Specified"; + for (int j = 0; j < mappings.Length; j++) + { + if (mappings[j].Name == nameSpecified) + { + int indexJ = j; + member.CheckSpecifiedSource = (o) => p[indexJ] = o; + } + } + } + + bool foundAnyElement = false; + if (mapping.Text != null) + { + anyText = anyMember; + } + + if (mapping.Attribute != null && mapping.Attribute.Any) + { + anyMember.Collection = new CollectionMember(); + anyMember.ArraySource = anyMember.Source; + anyMember.Source = (item) => + { + anyMember.Collection.Add(item); + }; + + anyAttribute = anyMember; + } + + if (mapping.Attribute != null || mapping.Xmlns != null) + { + attributeMembersList.Add(member); + } + else if (mapping.Text != null) + { + textOrArrayMembersList.Add(member); + } + + if (!mapping.IsSequence) + { + for (int j = 0; j < mapping.Elements.Length; j++) + { + if (mapping.Elements[j].Any && mapping.Elements[j].Name.Length == 0) + { + anyElement = anyMember; + if (mapping.Attribute == null && mapping.Text == null) + { + anyMember.Collection = new CollectionMember(); + anyMember.ArraySource = (item) => + { + anyMember.Collection.Add(item); + }; + + textOrArrayMembersList.Add(anyMember); + } + + foundAnyElement = true; + break; + } + } + } + + if (mapping.Attribute != null || mapping.Text != null || foundAnyElement) + { + membersList.Add(anyMember); + } + else if (mapping.TypeDesc.IsArrayLike + && !(mapping.Elements.Length == 1 && mapping.Elements[0].Mapping is ArrayMapping)) + { + anyMember.Collection = new CollectionMember(); + anyMember.ArraySource = (item) => + { + anyMember.Collection.Add(item); + }; + + membersList.Add(anyMember); + textOrArrayMembersList.Add(anyMember); + } + else + { + membersList.Add(member); + } } - else if (anyText != null && anyText.Mapping != null && WriteMemberText(out o, anyText)) + + Member[] members = membersList.ToArray(); + Member[] textOrArrayMembers = textOrArrayMembersList.ToArray(); + + if (members.Length > 0 && members[0].Mapping.IsReturnValue) + IsReturnValue = true; + + if (attributeMembersList.Count > 0) { - member = anyText; + Member[] attributeMembers = attributeMembersList.ToArray(); + object tempObject = null; + WriteAttributes(attributeMembers, anyAttribute, UnknownNode, ref tempObject); + Reader.MoveToElement(); } - else + + if (hasWrapperElement) { - member = null; - ProcessUnknownNode(elseAction); + if (Reader.IsEmptyElement) + { + Reader.Skip(); + Reader.MoveToContent(); + return false; + } + + Reader.ReadStartElement(); } - } - private void ProcessUnknownNode(UnknownNodeAction action) - { - if (UnknownNodeAction.ReadUnknownNode == action) + Reader.MoveToContent(); + while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) { - UnknownNode(null); + WriteMemberElements(members, UnknownNode, UnknownNode, anyElement, anyText, null); + Reader.MoveToContent(); } - else + + foreach (Member member in textOrArrayMembers) + { + object value = null; + SetCollectionObjectWithCollectionMember(ref value, member.Collection, member.Mapping.TypeDesc.Type); + member.Source(value); + } + + if (anyAttribute != null) { - CreateUnknownNodeException(); + object value = null; + SetCollectionObjectWithCollectionMember(ref value, anyAttribute.Collection, anyAttribute.Mapping.TypeDesc.Type); + anyAttribute.ArraySource(value); } + + return true; } - private void WriteMembers(ref object o, Member[] members, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText) + private void InitializeValueTypes(object[] p, MemberMapping[] mappings) { + for (int i = 0; i < mappings.Length; i++) + { + if (!mappings[i].TypeDesc.IsValueType) + continue; + + + if (mappings[i].TypeDesc.IsOptionalValue && mappings[i].TypeDesc.BaseTypeDesc.UseReflection) + { + p[i] = null; + } + else + { + p[i] = ReflectionCreateObject(mappings[i].TypeDesc.Type); + } + } + } + + private object GenerateEncodedMembersElement(XmlMembersMapping xmlMembersMapping) + { + ElementAccessor element = xmlMembersMapping.Accessor; + var membersMapping = (MembersMapping)element.Mapping; + MemberMapping[] mappings = membersMapping.Members; + bool hasWrapperElement = membersMapping.HasWrapperElement; + bool writeAccessors = membersMapping.WriteAccessors; + Reader.MoveToContent(); - var collectionMemberToBeSet = new HashSet(); - while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) + object[] p = new object[mappings.Length]; + InitializeValueTypes(p, mappings); + + bool isEmptyWrapper = true; + if (hasWrapperElement) { - object value = null; - Member member; - WriteMemberElements(ref value, null, out member, members, elementElseAction, elseAction, anyElement, anyText, masterObject: o); - if (member != null) + Reader.MoveToContent(); + while (Reader.NodeType == XmlNodeType.Element) { - PropertyInfo pi = member.Mapping.MemberInfo as PropertyInfo; - if (pi != null && typeof(IList).IsAssignableFrom(pi.PropertyType) - && (pi.SetMethod == null || !pi.SetMethod.IsPublic)) + string root = Reader.GetAttribute("root", Soap.Encoding); + if (root == null || XmlConvert.ToBoolean(root)) + break; + + ReadReferencedElement(); + Reader.MoveToContent(); + } + + if (membersMapping.ValidateRpcWrapperElement) + { + string name = element.Name; + string ns = element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty; + if (!XmlNodeEqual(Reader, name, ns)) { - var getOnlyList = (IList)pi.GetValue(o); + throw CreateUnknownNodeException(); + } + } - var valueList = value as IList; - if (valueList != null) - { - foreach (var i in valueList) - { - getOnlyList.Add(i); - } - } - else + isEmptyWrapper = Reader.IsEmptyElement; + Reader.ReadStartElement(); + } + + Member[] members = new Member[mappings.Length]; + for (int i = 0; i < mappings.Length; i++) + { + int index = i; + MemberMapping mapping = mappings[index]; + var member = new Member(mapping); + member.Source = (value) => p[index] = value; + members[index] = member; + if (mapping.CheckSpecified == SpecifiedAccessor.ReadWrite) + { + string nameSpecified = mapping.Name + "Specified"; + for (int j = 0; j < mappings.Length; j++) + { + if (mappings[j].Name == nameSpecified) { - getOnlyList.Add(value); + int indexOfSpecifiedMember = j; + member.CheckSpecifiedSource = (value) => p[indexOfSpecifiedMember] = value; + break; } } - else if (member.Collection != null) + } + + } + + Fixup fixup = WriteMemberFixupBegin(members, p); + if (members.Length > 0 && members[0].Mapping.IsReturnValue) + { + IsReturnValue = true; + } + + List checkTypeHrefSource = null; + if (!hasWrapperElement && !writeAccessors) + { + checkTypeHrefSource = new List(); + } + + Reader.MoveToContent(); + while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) + { + UnknownNodeAction unrecognizedElementSource; + if (checkTypeHrefSource == null) + { + unrecognizedElementSource = (_) => UnknownNode(p); + } + else + { + unrecognizedElementSource = (_) => + { + if (Reader.GetAttribute("id", null) != null) + { + ReadReferencedElement(); + } + else + { + UnknownNode(p); + }; + }; + } + + WriteMemberElements(members, unrecognizedElementSource, (_) => UnknownNode(p), null, null, fixup: fixup, checkTypeHrefsSource: checkTypeHrefSource); + Reader.MoveToContent(); + } + + if (!isEmptyWrapper) + { + ReadEndElement(); + } + + if (checkTypeHrefSource != null) + { + foreach (CheckTypeSource currentySource in checkTypeHrefSource) + { + bool isReferenced = true; + bool isObject = currentySource.IsObject; + object refObj = isObject ? currentySource.RefObject : GetTarget((string)currentySource.RefObject); + if (refObj == null) { - member.Collection.Add(value); - collectionMemberToBeSet.Add(member); + continue; } - else + + var checkTypeSource = new CheckTypeSource() + { + RefObject = refObj, + Type = refObj.GetType(), + Id = null + }; + WriteMemberElementsIf(members, null, (_) => isReferenced = false, fixup, checkTypeSource); + + if (isObject && isReferenced) { - SetMemberValue(o, value, member.Mapping.Name); + Referenced(refObj); } } + } - Reader.MoveToContent(); + ReadReferencedElements(); + return p; + } + + private object GenerateTypeElement(XmlTypeMapping xmlTypeMapping) + { + ElementAccessor element = xmlTypeMapping.Accessor; + TypeMapping mapping = element.Mapping; + + Reader.MoveToContent(); + var memberMapping = new MemberMapping(); + memberMapping.TypeDesc = mapping.TypeDesc; + memberMapping.Elements = new ElementAccessor[] { element }; + + object o = null; + var holder = new ObjectHolder(); + var member = new Member(memberMapping); + member.Source = (value) => holder.Object = value; + member.GetSource = () => holder.Object; + UnknownNodeAction elementElseAction = CreateUnknownNodeException; + UnknownNodeAction elseAction = UnknownNode; + WriteMemberElements(new Member[] { member }, elementElseAction, elseAction, element.Any ? member : null, null); + o = holder.Object; + + if (element.IsSoap) + { + Referenced(o); + ReadReferencedElements(); } - foreach (var member in collectionMemberToBeSet) + return o; + } + + private void WriteMemberElements(Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup = null, List checkTypeHrefsSource = null) + { + bool checkType = checkTypeHrefsSource != null; + if (Reader.NodeType == XmlNodeType.Element) { - if (member.Collection != null) + if (checkType) + { + if (Reader.GetAttribute("root", Soap.Encoding) == "0") + { + elementElseAction(null); + return; + } + + WriteMemberElementsCheckType(checkTypeHrefsSource); + } + else { - MemberInfo[] memberInfos = o.GetType().GetMember(member.Mapping.Name); - var memberInfo = memberInfos[0]; - object collection = null; - SetCollectionObjectWithCollectionMember(ref collection, member.Collection, member.Mapping.TypeDesc.Type); - SetMemberValue(o, collection, memberInfo); + WriteMemberElementsIf(expectedMembers, anyElement, elementElseAction, fixup: fixup); } } + else if (anyText != null && anyText.Mapping != null && WriteMemberText(anyText)) + { + } + else + { + ProcessUnknownNode(elseAction); + } + } + + private void WriteMemberElementsCheckType(List checkTypeHrefsSource) + { + object RefElememnt = ReadReferencingElement(null, null, true, out string refElemId); + var source = new CheckTypeSource(); + if (refElemId != null) + { + source.RefObject = refElemId; + source.IsObject = false; + checkTypeHrefsSource.Add(source); + } + else if (RefElememnt != null) + { + source.RefObject = RefElememnt; + source.IsObject = true; + checkTypeHrefsSource.Add(source); + } + } + + private void ProcessUnknownNode(UnknownNodeAction action) + { + action?.Invoke(null); + } + + private void WriteMembers(ref object o, Member[] members, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText) + { + Reader.MoveToContent(); + + while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) + { + WriteMemberElements(members, elementElseAction, elseAction, anyElement, anyText); + Reader.MoveToContent(); + } } private void SetCollectionObjectWithCollectionMember(ref object collection, CollectionMember collectionMember, Type collectionType) @@ -200,14 +560,13 @@ private void SetCollectionObjectWithCollectionMember(ref object collection, Coll if (collectionType.IsArray) { Array a; - Type elementType = collectionType.GetElementType(); - var currentArray = collection as Array; - if (currentArray != null && currentArray.Length == collectionMember.Count) + if (collection is Array currentArray && currentArray.Length == collectionMember.Count) { a = currentArray; } else { + Type elementType = collectionType.GetElementType(); a = Array.CreateInstance(elementType, collectionMember.Count); } @@ -231,8 +590,7 @@ private void SetCollectionObjectWithCollectionMember(ref object collection, Coll private static void AddObjectsIntoTargetCollection(object targetCollection, List sourceCollection, Type targetCollectionType) { - var targetList = targetCollection as IList; - if (targetList != null) + if (targetCollection is IList targetList) { foreach (object item in sourceCollection) { @@ -244,10 +602,10 @@ private static void AddObjectsIntoTargetCollection(object targetCollection, List MethodInfo addMethod = targetCollectionType.GetMethod("Add"); if (addMethod == null) { - throw new InvalidOperationException("addMethod == null"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - var arguments = new object[1]; + object[] arguments = new object[1]; foreach (object item in sourceCollection) { arguments[0] = item; @@ -259,47 +617,43 @@ private static void AddObjectsIntoTargetCollection(object targetCollection, List private static void SetMemberValue(object o, object value, string memberName) { MemberInfo[] memberInfos = o.GetType().GetMember(memberName); - var memberInfo = memberInfos[0]; + MemberInfo memberInfo = memberInfos[0]; SetMemberValue(o, value, memberInfo); } private static void SetMemberValue(object o, object value, MemberInfo memberInfo) { - if (memberInfo is PropertyInfo) + if (memberInfo is PropertyInfo propInfo) { - var propInfo = (PropertyInfo)memberInfo; propInfo.SetValue(o, value); } - else if (memberInfo is FieldInfo) + else if (memberInfo is FieldInfo fieldInfo) { - var fieldInfo = (FieldInfo)memberInfo; fieldInfo.SetValue(o, value); } else { - throw new InvalidOperationException("InvalidMember"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } } private object GetMemberValue(object o, MemberInfo memberInfo) { - var memberProperty = memberInfo as PropertyInfo; - if (memberProperty != null) + if (memberInfo is PropertyInfo propertyInfo) { - return memberProperty.GetValue(o); + return propertyInfo.GetValue(o); } - - var memberField = memberInfo as FieldInfo; - if (memberField != null) + else if (memberInfo is FieldInfo fieldInfo) { - return memberField.GetValue(o); + return fieldInfo.GetValue(o); } - throw new InvalidOperationException("unknown member type"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - private bool WriteMemberText(out object o, Member anyText) + private bool WriteMemberText(Member anyText) { + object value; MemberMapping anyTextMapping = anyText.Mapping; if ((Reader.NodeType == XmlNodeType.Text || Reader.NodeType == XmlNodeType.CDATA || @@ -307,13 +661,11 @@ private bool WriteMemberText(out object o, Member anyText) Reader.NodeType == XmlNodeType.SignificantWhitespace)) { TextAccessor text = anyTextMapping.Text; - - if (text.Mapping is SpecialMapping) + if (text.Mapping is SpecialMapping special) { - SpecialMapping special = (SpecialMapping)text.Mapping; if (special.TypeDesc.Kind == TypeKind.Node) { - o = Document.CreateTextNode(ReadString()); + value = Document.CreateTextNode(ReadString()); } else { @@ -326,48 +678,43 @@ private bool WriteMemberText(out object o, Member anyText) { if (text.Mapping.TypeDesc.CollapseWhitespace) { - o = CollapseWhitespace(ReadString()); + value = CollapseWhitespace(ReadString()); } else { - o = ReadString(); + value = ReadString(); } } else { if (text.Mapping.TypeDesc == StringTypeDesc || text.Mapping.TypeDesc.FormatterName == "String") { - o = ReadString(null, text.Mapping.TypeDesc.CollapseWhitespace); + value = ReadString(null, text.Mapping.TypeDesc.CollapseWhitespace); } else { - o = WritePrimitive(text.Mapping, () => ReadString()); + value = WritePrimitive(text.Mapping, () => ReadString()); } } } + anyText.Source(value); return true; } - o = null; return false; } private bool IsSequence(Member[] members) { - // #10586: Currently the reflection based method treat this kind of type as normal types. - // But potentially we can do some optimization for types that have ordered properties. - - //for (int i = 0; i < members.Length; i++) - //{ - // if (members[i].Mapping.IsParticle && members[i].Mapping.IsSequence) - // return true; - //} + // #10586: Currently the reflection based method treat this kind of type as normal types. + // But potentially we can do some optimization for types that have ordered properties. return false; } - private void WriteMemberElementsIf(ref object o, CollectionMember collectionMember, out Member member, Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Fixup fixup = null, object masterObject = null) + private void WriteMemberElementsIf(Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Fixup fixup = null, CheckTypeSource checkTypeSource = null) { + bool checkType = checkTypeSource != null; bool isSequence = IsSequence(expectedMembers); if (isSequence) { @@ -376,10 +723,10 @@ private void WriteMemberElementsIf(ref object o, CollectionMember collectionMemb } ElementAccessor e = null; - member = null; + Member member = null; bool foundElement = false; int elementIndex = -1; - foreach (var m in expectedMembers) + foreach (Member m in expectedMembers) { if (m.Mapping.Xmlns != null) continue; @@ -390,13 +737,36 @@ private void WriteMemberElementsIf(ref object o, CollectionMember collectionMemb for (int i = 0; i < m.Mapping.Elements.Length; i++) { - var ele = m.Mapping.Elements[i]; - if (ele.Name == Reader.LocalName && ele.Namespace == Reader.NamespaceURI) + ElementAccessor ele = m.Mapping.Elements[i]; + string ns = ele.Form == XmlSchemaForm.Qualified ? ele.Namespace : string.Empty; + if (checkType) + { + Type elementType; + if (ele.Mapping is NullableMapping nullableMapping) + { + TypeDesc td = nullableMapping.BaseMapping.TypeDesc; + elementType = td.Type; + } + else + { + elementType = ele.Mapping.TypeDesc.Type; + } + + if (elementType.IsAssignableFrom(checkTypeSource.Type)) + { + foundElement = true; + } + } + else if (ele.Name == Reader.LocalName && ns == Reader.NamespaceURI) + { + foundElement = true; + } + + if (foundElement) { e = ele; member = m; elementIndex = i; - foundElement = true; break; } } @@ -407,27 +777,36 @@ private void WriteMemberElementsIf(ref object o, CollectionMember collectionMemb if (foundElement) { - ChoiceIdentifierAccessor choice = member.Mapping.ChoiceIdentifier; - string ns = e.Form == XmlSchemaForm.Qualified ? e.Namespace : ""; - bool isList = member.Mapping.TypeDesc.IsArrayLike && !member.Mapping.TypeDesc.IsArray; - WriteElement(ref o, collectionMember, e, choice, member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite, isList && member.Mapping.TypeDesc.IsNullable, member.Mapping.ReadOnly, ns, member.FixupIndex, elementIndex, fixup, masterObject, member); + if (checkType) + { + member.Source(checkTypeSource.RefObject); + + if (member.FixupIndex >= 0) + { + fixup.Ids[member.FixupIndex] = checkTypeSource.Id; + } + } + else + { + string ns = e.Form == XmlSchemaForm.Qualified ? e.Namespace : string.Empty; + bool isList = member.Mapping.TypeDesc.IsArrayLike && !member.Mapping.TypeDesc.IsArray; + WriteElement(e, member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite, isList && member.Mapping.TypeDesc.IsNullable, member.Mapping.ReadOnly, ns, member.FixupIndex, elementIndex, fixup, member); + } } else { if (anyElementMember != null && anyElementMember.Mapping != null) { - var anyElement = anyElementMember.Mapping; - + MemberMapping anyElement = anyElementMember.Mapping; member = anyElementMember; - ChoiceIdentifierAccessor choice = member.Mapping.ChoiceIdentifier; ElementAccessor[] elements = anyElement.Elements; for (int i = 0; i < elements.Length; i++) { ElementAccessor element = elements[i]; if (element.Any && element.Name.Length == 0) { - string ns = element.Form == XmlSchemaForm.Qualified ? element.Namespace : ""; - WriteElement(ref o, collectionMember, element, choice, anyElement.CheckSpecified == SpecifiedAccessor.ReadWrite, false, false, ns, fixup: fixup, masterObject: masterObject); + string ns = element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty; + WriteElement(element, anyElement.CheckSpecified == SpecifiedAccessor.ReadWrite, false, false, ns, fixup: fixup, member: member); break; } } @@ -440,24 +819,16 @@ private void WriteMemberElementsIf(ref object o, CollectionMember collectionMemb } } - private void WriteElement(ref object o, CollectionMember collectionMember, ElementAccessor element, ChoiceIdentifierAccessor choice, bool checkSpecified, bool checkForNull, bool readOnly, string defaultNamespace, int fixupIndex = -1, int elementIndex = -1, Fixup fixup = null, object masterObject = null, Member member = null) + private object WriteElement(ElementAccessor element, bool checkSpecified, bool checkForNull, bool readOnly, string defaultNamespace, int fixupIndex = -1, int elementIndex = -1, Fixup fixup = null, Member member = null) { object value = null; - if (element.Mapping is ArrayMapping) + if (element.Mapping is ArrayMapping arrayMapping) { - if (collectionMember != null) - { - WriteArray(ref value, (ArrayMapping)element.Mapping, readOnly, element.IsNullable, defaultNamespace, fixupIndex, fixup, member); - } - else - { - WriteArray(ref o, (ArrayMapping)element.Mapping, readOnly, element.IsNullable, defaultNamespace, fixupIndex, fixup, member); - value = o; - } + value = WriteArray(arrayMapping, readOnly, element.IsNullable, defaultNamespace, fixupIndex, fixup, member); } - else if (element.Mapping is NullableMapping) + else if (element.Mapping is NullableMapping nullableMapping) { - value = WriteNullableMethod((NullableMapping)element.Mapping, true, defaultNamespace); + value = WriteNullableMethod(nullableMapping, true, defaultNamespace); } else if (!element.Mapping.IsSoap && (element.Mapping is PrimitiveMapping)) { @@ -480,7 +851,9 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme else { if (element.Mapping.TypeDesc == QnameTypeDesc) + { value = ReadElementQualifiedName(); + } else { if (element.Mapping.TypeDesc.FormatterName == "ByteArrayBase64") @@ -494,7 +867,6 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme else { Func readFunc = () => Reader.ReadElementContentAsString(); - value = WritePrimitive(element.Mapping, readFunc); } } @@ -519,16 +891,16 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme { if (member == null) { - throw new InvalidOperationException("member == null"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - SetMemberValue(o, value, member.Mapping.MemberInfo); - return; + member.Source(value); + return value; } } else { - if (checkForNull && o == null) + if (checkForNull && (member.Source == null && member.ArraySource == null)) { Reader.Skip(); } @@ -543,13 +915,12 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme } } } - else if (element.Mapping is SpecialMapping) + else if (element.Mapping is SpecialMapping specialMapping) { - SpecialMapping special = (SpecialMapping)element.Mapping; - switch (special.TypeDesc.Kind) + switch (specialMapping.TypeDesc.Kind) { case TypeKind.Node: - bool isDoc = special.TypeDesc.FullName == typeof(XmlDocument).FullName; + bool isDoc = specialMapping.TypeDesc.FullName == typeof(XmlDocument).FullName; if (isDoc) { value = ReadXmlDocument(!element.Any); @@ -599,48 +970,41 @@ private void WriteElement(ref object o, CollectionMember collectionMember, Eleme throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - if (choice != null && masterObject != null) - { - foreach (var name in choice.MemberIds) - { - if (name == element.Name) - { - object choiceValue = Enum.Parse(choice.Mapping.TypeDesc.Type, name); - SetOrAddValueToMember(masterObject, choiceValue, choice.MemberInfo); + member?.ChoiceSource?.Invoke(element.Name); - break; - } - } - } - - if (collectionMember != null) + if (member?.ArraySource != null) { - collectionMember.Add(value); + member?.ArraySource(value); } else { - o = value; + member?.Source?.Invoke(value); + member?.CheckSpecifiedSource?.Invoke(true); } + + return value; } private XmlSerializationReadCallback CreateXmlSerializationReadCallback(TypeMapping mapping) { - if (mapping is StructMapping) + if (mapping is StructMapping structMapping) { - return () => WriteStructMethod((StructMapping)mapping, mapping.TypeDesc.IsNullable, true, defaultNamespace: null); + return () => WriteStructMethod(structMapping, mapping.TypeDesc.IsNullable, true, defaultNamespace: null); } - else if (mapping is EnumMapping) + else if (mapping is EnumMapping enumMapping) { - return () => WriteEnumMethodSoap((EnumMapping)mapping); + return () => WriteEnumMethodSoap(enumMapping); } - else if (mapping is ArrayMapping) - { - return DummyReadArrayMethod; - } - else + else if (mapping is NullableMapping nullableMapping) { - throw new NotImplementedException(); + return () => WriteNullableMethod(nullableMapping, false, null); } + + return DummyReadArrayMethod; + } + + private static void NoopAction(object o) + { } private object DummyReadArrayMethod() @@ -653,17 +1017,17 @@ private static Type GetMemberType(MemberInfo memberInfo) { Type memberType; - if (memberInfo is FieldInfo) + if (memberInfo is FieldInfo fieldInfo) { - memberType = ((FieldInfo)memberInfo).FieldType; + memberType = fieldInfo.FieldType; } - else if (memberInfo is PropertyInfo) + else if (memberInfo is PropertyInfo propertyInfo) { - memberType = ((PropertyInfo)memberInfo).PropertyType; + memberType = propertyInfo.PropertyType; } else { - throw new InvalidOperationException("unknown member type"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } return memberType; @@ -671,17 +1035,18 @@ private static Type GetMemberType(MemberInfo memberInfo) private static bool IsWildcard(SpecialMapping mapping) { - if (mapping is SerializableMapping) - return ((SerializableMapping)mapping).IsAny; + if (mapping is SerializableMapping serializableMapping) + return serializableMapping.IsAny; + return mapping.TypeDesc.CanBeElementValue; } - private void WriteArray(ref object o, ArrayMapping arrayMapping, bool readOnly, bool isNullable, string defaultNamespace, int fixupIndex = -1, Fixup fixup = null, Member member = null) + private object WriteArray(ArrayMapping arrayMapping, bool readOnly, bool isNullable, string defaultNamespace, int fixupIndex = -1, Fixup fixup = null, Member member = null) { + object o = null; if (arrayMapping.IsSoap) { object rre; - if (fixupIndex >= 0) { rre = ReadReferencingElement(arrayMapping.TypeName, arrayMapping.Namespace, out fixup.Ids[fixupIndex]); @@ -696,34 +1061,39 @@ private void WriteArray(ref object o, ArrayMapping arrayMapping, bool readOnly, { if (rre != null) { - throw new NotImplementedException(); + WriteAddCollectionFixup(member.GetSource, member.Source, rre, td, readOnly); } } else { if (member == null) { - throw new InvalidOperationException("member == null"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - SetMemberValue(o, rre, member.Mapping.Name); + member.Source(rre); } + + // member.Source has been set at this point. + // Setting the source to no-op to avoid setting the + // source again. + member.Source = NoopAction; + + o = rre; } else { if (!ReadNull()) { - MemberMapping memberMapping = new MemberMapping(); - memberMapping.Elements = arrayMapping.Elements; - memberMapping.TypeDesc = arrayMapping.TypeDesc; - memberMapping.ReadOnly = readOnly; + var memberMapping = new MemberMapping() + { + Elements = arrayMapping.Elements, + TypeDesc = arrayMapping.TypeDesc, + ReadOnly = readOnly + }; Type collectionType = memberMapping.TypeDesc.Type; - - if (o == null) - { - o = ReflectionCreateObject(memberMapping.TypeDesc.Type); - } + o = ReflectionCreateObject(memberMapping.TypeDesc.Type); if (memberMapping.ChoiceIdentifier != null) { @@ -731,7 +1101,13 @@ private void WriteArray(ref object o, ArrayMapping arrayMapping, bool readOnly, throw new NotImplementedException("memberMapping.ChoiceIdentifier != null"); } - var collectionMember = new CollectionMember(); + var arrayMember = new Member(memberMapping); + arrayMember.Collection = new CollectionMember(); + arrayMember.ArraySource = (item) => + { + arrayMember.Collection.Add(item); + }; + if ((readOnly && o == null) || Reader.IsEmptyElement) { Reader.Skip(); @@ -740,33 +1116,26 @@ private void WriteArray(ref object o, ArrayMapping arrayMapping, bool readOnly, { Reader.ReadStartElement(); Reader.MoveToContent(); - UnknownNodeAction unknownNode = UnknownNodeAction.ReadUnknownNode; while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) { - Member temp; - WriteMemberElements(ref o, collectionMember, out temp, new Member[] { new Member(memberMapping) }, unknownNode, unknownNode, null, null); + WriteMemberElements(new Member[] { arrayMember }, UnknownNode, UnknownNode, null, null); Reader.MoveToContent(); } ReadEndElement(); } - SetCollectionObjectWithCollectionMember(ref o, collectionMember, collectionType); + SetCollectionObjectWithCollectionMember(ref o, arrayMember.Collection, collectionType); } } + + return o; } private object WritePrimitive(TypeMapping mapping, Func readFunc) { - if (mapping is EnumMapping) + if (mapping is EnumMapping enumMapping) { - if (mapping.IsSoap) - { - // #10676: As all SOAP relates APIs are not in CoreCLR yet, the reflection based method - // currently throws PlatformNotSupportedException when types require SOAP serialization. - throw new PlatformNotSupportedException(); - } - - return WriteEnumMethod((EnumMapping)mapping, readFunc); + return WriteEnumMethod(enumMapping, readFunc); } else if (mapping.TypeDesc == StringTypeDesc) { @@ -874,7 +1243,7 @@ private object WriteNullableMethod(NullableMapping nullableMapping, bool checkTy element.Any = false; element.IsNullable = nullableMapping.BaseMapping.TypeDesc.IsNullable; - WriteElement(ref o, null, element, null, false, false, false, defaultNamespace); + o = WriteElement(element, false, false, false, defaultNamespace); } return o; @@ -902,7 +1271,7 @@ private object WriteEnumMethod(EnumMapping mapping, string source) } else { - foreach (var c in mapping.Constants) + foreach (ConstantMapping c in mapping.Constants) { if (string.Equals(c.XmlName, source)) { @@ -917,9 +1286,7 @@ private object WriteEnumMethod(EnumMapping mapping, string source) private Hashtable WriteHashtable(EnumMapping mapping, string name) { var h = new Hashtable(); - ConstantMapping[] constants = mapping.Constants; - for (int i = 0; i < constants.Length; i++) { h.Add(constants[i].XmlName, constants[i].Value); @@ -930,8 +1297,7 @@ private Hashtable WriteHashtable(EnumMapping mapping, string name) private object ReflectionCreateObject(Type type) { - object obj = null; - + object obj; if (type.IsArray) { obj = Activator.CreateInstance(type, 32); @@ -963,13 +1329,14 @@ private ConstructorInfo GetDefaultConstructor(Type type) private static ConstructorInfo FindDefaultConstructor(TypeInfo ti) { - foreach (var ci in ti.DeclaredConstructors) + foreach (ConstructorInfo ci in ti.DeclaredConstructors) { if (!ci.IsStatic && ci.GetParameters().Length == 0) { return ci; } } + return null; } @@ -979,7 +1346,6 @@ private object WriteEncodedStructMethod(StructMapping structMapping) return null; Member[] members = null; - Fixup fixup = null; if (structMapping.TypeDesc.IsAbstract) { @@ -995,13 +1361,17 @@ private object WriteEncodedStructMethod(StructMapping structMapping) { MemberMapping mapping = mappings[i]; var member = new Member(mapping); + member.Source = (value) => + { + SetMemberValue(o, value, member.Mapping.MemberInfo); + }; + members[i] = member; } - fixup = WriteMemberFixupBegin(members, o); - + Fixup fixup = WriteMemberFixupBegin(members, o); Action unknownNodeAction = (n) => UnknownNode(n); - WriteAttributes(mappings, null, unknownNodeAction, ref o); + WriteAttributes(members, null, unknownNodeAction, ref o); Reader.MoveToElement(); if (Reader.IsEmptyElement) { @@ -1010,11 +1380,10 @@ private object WriteEncodedStructMethod(StructMapping structMapping) } Reader.ReadStartElement(); - + Reader.MoveToContent(); while (Reader.NodeType != XmlNodeType.EndElement && Reader.NodeType != XmlNodeType.None) { - Member tempMember; - WriteMemberElements(ref o, null, out tempMember, members, UnknownNodeAction.ReadUnknownNode, UnknownNodeAction.ReadUnknownNode, null, null, fixup: fixup); + WriteMemberElements(members, UnknownNode, UnknownNode, null, null, fixup: fixup); Reader.MoveToContent(); } @@ -1026,7 +1395,7 @@ private object WriteEncodedStructMethod(StructMapping structMapping) private Fixup WriteMemberFixupBegin(Member[] members, object o) { int fixupCount = 0; - foreach (var member in members) + foreach (Member member in members) { if (member.Mapping.Elements.Length == 0) continue; @@ -1060,7 +1429,7 @@ private XmlSerializationFixupCallback CreateWriteFixupMethod(Member[] members) var fixup = (Fixup)fixupObject; object o = fixup.Source; string[] ids = fixup.Ids; - foreach (var member in members) + foreach (Member member in members) { if (member.MultiRef) { @@ -1087,7 +1456,14 @@ private void WriteAddCollectionFixup(object o, Member member, object memberValue { TypeDesc typeDesc = member.Mapping.TypeDesc; bool readOnly = member.Mapping.ReadOnly; - object memberSource = GetMemberValue(o, member.Mapping.MemberInfo); + Func getSource = () => GetMemberValue(o, member.Mapping.MemberInfo); + Action setSource = (value) => SetMemberValue(o, value, member.Mapping.MemberInfo); + WriteAddCollectionFixup(getSource, setSource, memberValue, typeDesc, readOnly); + } + + private object WriteAddCollectionFixup(Func getSource, Action setSource, object memberValue, TypeDesc typeDesc, bool readOnly) + { + object memberSource = getSource(); if (memberSource == null) { if (readOnly) @@ -1096,7 +1472,7 @@ private void WriteAddCollectionFixup(object o, Member member, object memberValue } memberSource = ReflectionCreateObject(typeDesc.Type); - SetMemberValue(o, memberSource, member.Mapping.MemberInfo); + setSource(memberSource); } var collectionFixup = new CollectionFixup( @@ -1105,6 +1481,7 @@ private void WriteAddCollectionFixup(object o, Member member, object memberValue memberValue); AddFixup(collectionFixup); + return memberSource; } private XmlSerializationCollectionFixupCallback GetCreateCollectionOfObjectsCallback(Type collectionType) @@ -1118,8 +1495,7 @@ private XmlSerializationCollectionFixupCallback GetCreateCollectionOfObjectsCall return; var listOfItems = new List(); - var enumerableItems = collectionItems as IEnumerable; - if (enumerableItems != null) + if (collectionItems is IEnumerable enumerableItems) { foreach (var item in enumerableItems) { @@ -1128,7 +1504,7 @@ private XmlSerializationCollectionFixupCallback GetCreateCollectionOfObjectsCall } else { - throw new NotImplementedException(); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } AddObjectsIntoTargetCollection(collection, listOfItems, collectionType); @@ -1149,8 +1525,9 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull if (structMapping.TypeDesc.IsRoot && isNull) { if (xsiType != null) + { return ReadTypedNull(xsiType); - + } else { if (structMapping.TypeDesc.IsValueType) @@ -1202,7 +1579,7 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull if (structMapping.TypeDesc.Type != null && typeof(XmlSchemaObject).IsAssignableFrom(structMapping.TypeDesc.Type)) { // #10589: To Support Serializing XmlSchemaObject - throw new NotImplementedException("typeof(XmlSchemaObject)"); + throw new NotImplementedException(nameof(XmlSchemaObject)); } object o = ReflectionCreateObject(structMapping.TypeDesc.Type); @@ -1210,7 +1587,7 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull MemberMapping[] mappings = TypeScope.GetSettableMembers(structMapping); MemberMapping anyText = null; MemberMapping anyElement = null; - MemberMapping anyAttribute = null; + Member anyAttribute = null; Member anyElementMember = null; Member anyTextMember = null; @@ -1228,11 +1605,22 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull for (int i = 0; i < mappings.Length; i++) { MemberMapping mapping = mappings[i]; + var member = new Member(mapping); if (mapping.Text != null) + { anyText = mapping; - if (mapping.Attribute != null && mapping.Attribute.Any) - anyAttribute = mapping; + } + + if (mapping.Attribute != null) + { + member.Source = (value) => SetOrAddValueToMember(o, value, member.Mapping.MemberInfo); + if (mapping.Attribute.Any) + { + anyAttribute = member; + } + } + if (!isSequence) { // find anyElement if present. @@ -1252,18 +1640,99 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull throw new InvalidOperationException(SR.Format(SR.XmlSequenceHierarchy, structMapping.TypeDesc.FullName, mapping.Name, declaringMapping.TypeDesc.FullName, "Order")); } - var member = new Member(mapping); if (mapping.TypeDesc.IsArrayLike) { - if (mapping.TypeDesc.IsArrayLike && !(mapping.Elements.Length == 1 && mapping.Elements[0].Mapping is ArrayMapping)) + if (member.Source == null && mapping.TypeDesc.IsArrayLike && !(mapping.Elements.Length == 1 && mapping.Elements[0].Mapping is ArrayMapping)) { - member.Collection = new CollectionMember(); + member.Source = (item) => + { + if (member.Collection == null) + { + member.Collection = new CollectionMember(); + } + + member.Collection.Add(item); + }; + member.ArraySource = member.Source; } else if (!mapping.TypeDesc.IsArray) { + + } + } + + if (member.Source == null) + { + var pi = member.Mapping.MemberInfo as PropertyInfo; + if (pi != null && typeof(IList).IsAssignableFrom(pi.PropertyType) + && (pi.SetMethod == null || !pi.SetMethod.IsPublic)) + { + member.Source = (value) => + { + var getOnlyList = (IList)pi.GetValue(o); + if (value is IList valueList) + { + foreach (var v in valueList) + { + getOnlyList.Add(v); + } + } + else + { + getOnlyList.Add(value); + } + }; + } + else + { + if (member.Mapping.Xmlns != null) + { + var xmlSerializerNamespaces = new XmlSerializerNamespaces(); + SetMemberValue(o, xmlSerializerNamespaces, member.Mapping.Name); + member.XmlnsSource = (ns, name) => + { + xmlSerializerNamespaces.Add(ns, name); + }; + } + else + { + member.Source = (value) => SetMemberValue(o, value, member.Mapping.Name); + } } } + if (member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite) + { + member.CheckSpecifiedSource = (_) => + { + string specifiedMemberName = member.Mapping.Name + "Specified"; + MethodInfo specifiedMethodInfo = o.GetType().GetMethod("set_" + specifiedMemberName); + if (specifiedMethodInfo != null) + { + specifiedMethodInfo.Invoke(o, new object[] { true }); + } + }; + } + + ChoiceIdentifierAccessor choice = mapping.ChoiceIdentifier; + if (choice != null && o != null) + { + member.ChoiceSource = (elementNameObject) => + { + string elementName = elementNameObject as string; + foreach (var name in choice.MemberIds) + { + if (name == elementName) + { + object choiceValue = Enum.Parse(choice.Mapping.TypeDesc.Type, name); + SetOrAddValueToMember(o, choiceValue, choice.MemberInfo); + + break; + } + } + }; + } + allMemberMappingList.Add(mapping); allMembersList.Add(member); @@ -1277,11 +1746,11 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull } } - var allMembers = allMembersList.ToArray(); - var allMemberMappings = allMemberMappingList.ToArray(); + Member[] allMembers = allMembersList.ToArray(); + MemberMapping[] allMemberMappings = allMemberMappingList.ToArray(); Action unknownNodeAction = (n) => UnknownNode(n); - WriteAttributes(allMemberMappings, anyAttribute, unknownNodeAction, ref o); + WriteAttributes(allMembers, anyAttribute, unknownNodeAction, ref o); Reader.MoveToElement(); if (Reader.IsEmptyElement) @@ -1298,8 +1767,19 @@ private object WriteLiteralStructMethod(StructMapping structMapping, bool isNull // But potentially we can do some optimization for types that have ordered properties. } - UnknownNodeAction unknownNode = UnknownNodeAction.ReadUnknownNode; - WriteMembers(ref o, allMembers, unknownNode, unknownNode, anyElementMember, anyTextMember); + WriteMembers(ref o, allMembers, UnknownNode, UnknownNode, anyElementMember, anyTextMember); + + foreach (Member member in allMembers) + { + if (member.Collection != null) + { + MemberInfo[] memberInfos = o.GetType().GetMember(member.Mapping.Name); + MemberInfo memberInfo = memberInfos[0]; + object collection = null; + SetCollectionObjectWithCollectionMember(ref collection, member.Collection, member.Mapping.TypeDesc.Type); + SetMemberValue(o, collection, memberInfo); + } + } ReadEndElement(); return o; @@ -1310,13 +1790,12 @@ private bool WriteEnumAndArrayTypes(out object o, StructMapping mapping, XmlQual { foreach (var m in _mapping.Scope.TypeMappings) { - var em = m as EnumMapping; - if (em != null) + if (m is EnumMapping enumMapping) { - if (QNameEqual(xsiType, em.TypeName, em.Namespace, defaultNamespace)) + if (QNameEqual(xsiType, enumMapping.TypeName, enumMapping.Namespace, defaultNamespace)) { Reader.ReadStartElement(); - o = WriteEnumMethod(em, () => (CollapseWhitespace(this.ReadString()))); + o = WriteEnumMethod(enumMapping, () => (CollapseWhitespace(ReadString()))); ReadEndElement(); return true; } @@ -1324,13 +1803,11 @@ private bool WriteEnumAndArrayTypes(out object o, StructMapping mapping, XmlQual continue; } - var am = m as ArrayMapping; - if (am != null) + if (m is ArrayMapping arrayMapping) { - if (QNameEqual(xsiType, am.TypeName, am.Namespace, defaultNamespace)) + if (QNameEqual(xsiType, arrayMapping.TypeName, arrayMapping.Namespace, defaultNamespace)) { - o = null; - WriteArray(ref o, am, false, false, defaultNamespace); + o = WriteArray(arrayMapping, false, false, defaultNamespace); return true; } @@ -1362,25 +1839,30 @@ private bool WriteDerivedTypes(out object o, StructMapping mapping, XmlQualified return false; } - private void WriteAttributes(MemberMapping[] members, MemberMapping anyAttribute, Action elseCall, ref object o) + private void WriteAttributes(Member[] members, Member anyAttribute, Action elseCall, ref object o) { - MemberMapping xmlnsMember = null; + Member xmlnsMember = null; var attributes = new List(); + foreach (Member member in members) + { + if (member.Mapping.Xmlns != null) + { + xmlnsMember = member; + break; + } + } while (Reader.MoveToNextAttribute()) { bool memberFound = false; - foreach (var member in members) + foreach (Member member in members) { - if (member.Xmlns != null) + if (member.Mapping.Xmlns != null || member.Mapping.Ignore) { - xmlnsMember = member; continue; } - if (member.Ignore) - continue; - AttributeAccessor attribute = member.Attribute; + AttributeAccessor attribute = member.Mapping.Attribute; if (attribute == null) continue; if (attribute.Any) continue; @@ -1392,11 +1874,13 @@ private void WriteAttributes(MemberMapping[] members, MemberMapping anyAttribute memberFound = XmlNodeEqual(Reader, attribute.Name, XmlReservedNs.NsXml); } else - memberFound = XmlNodeEqual(Reader, attribute.Name, attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : ""); + { + memberFound = XmlNodeEqual(Reader, attribute.Name, attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : string.Empty); + } if (memberFound) { - WriteAttribute(o, member); + WriteAttribute(member); memberFound = true; break; } @@ -1412,21 +1896,8 @@ private void WriteAttributes(MemberMapping[] members, MemberMapping anyAttribute { if (IsXmlnsAttribute(Reader.Name)) { - if (GetMemberType(xmlnsMember.MemberInfo) == typeof(XmlSerializerNamespaces)) - { - var xmlnsMemberSource = GetMemberValue(o, xmlnsMember.MemberInfo) as XmlSerializerNamespaces; - if (xmlnsMemberSource == null) - { - xmlnsMemberSource = new XmlSerializerNamespaces(); - SetMemberValue(o, xmlnsMemberSource, xmlnsMember.MemberInfo); - } - - xmlnsMemberSource.Add(Reader.Name.Length == 5 ? "" : Reader.LocalName, Reader.Value); - } - else - { - throw new InvalidOperationException("xmlnsMemberSource is not of type XmlSerializerNamespaces"); - } + Debug.Assert(xmlnsMember.XmlnsSource != null, "Xmlns member's source was not set."); + xmlnsMember.XmlnsSource(Reader.Name.Length == 5 ? string.Empty : Reader.LocalName, Reader.Value); } else { @@ -1444,7 +1915,7 @@ private void WriteAttributes(MemberMapping[] members, MemberMapping anyAttribute { var attr = Document.ReadNode(Reader) as XmlAttribute; ParseWsdlArrayType(attr); - WriteAttribute(o, anyAttribute, attr); + WriteAttribute(anyAttribute, attr); } else { @@ -1454,14 +1925,12 @@ private void WriteAttributes(MemberMapping[] members, MemberMapping anyAttribute } } - private void WriteAttribute(object o, MemberMapping member, object attr = null) + private void WriteAttribute(Member member, object attr = null) { - AttributeAccessor attribute = member.Attribute; + AttributeAccessor attribute = member.Mapping.Attribute; object value = null; - if (attribute.Mapping is SpecialMapping) + if (attribute.Mapping is SpecialMapping special) { - SpecialMapping special = (SpecialMapping)attribute.Mapping; - if (special.TypeDesc.Kind == TypeKind.Attribute) { value = attr; @@ -1480,7 +1949,7 @@ private void WriteAttribute(object o, MemberMapping member, object attr = null) { string listValues = Reader.Value; string[] vals = listValues.Split(null); - Array arrayValue = Array.CreateInstance(member.TypeDesc.Type.GetElementType(), vals.Length); + Array arrayValue = Array.CreateInstance(member.Mapping.TypeDesc.Type.GetElementType(), vals.Length); for (int i = 0; i < vals.Length; i++) { arrayValue.SetValue(WritePrimitive(attribute.Mapping, () => vals[i]), i); @@ -1494,17 +1963,12 @@ private void WriteAttribute(object o, MemberMapping member, object attr = null) } } - SetOrAddValueToMember(o, value, member.MemberInfo); + member.Source(value); - if (member.CheckSpecified == SpecifiedAccessor.ReadWrite) + if (member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite) { // #10591: we need to add tests for this block. - string specifiedMemberName = member.Name + "Specified"; - MethodInfo specifiedMethodInfo = o.GetType().GetMethod("set_" + specifiedMemberName); - if (specifiedMethodInfo != null) - { - specifiedMethodInfo.Invoke(o, new object[] { true }); - } + member.CheckSpecifiedSource?.Invoke(null); } } @@ -1528,10 +1992,7 @@ private void SetOrAddValueToMember(object o, object value, MemberInfo memberInfo private void AddItemInArrayMember(object o, MemberInfo memberInfo, Type memberType, object item) { - Debug.Assert(memberType.IsArray); - - Array currentArray = (Array)GetMemberValue(o, memberInfo); - + var currentArray = (Array)GetMemberValue(o, memberInfo); int length; if (currentArray == null) { @@ -1563,6 +2024,11 @@ private bool QNameEqual(XmlQualifiedName xsiType, string name, string ns, string return xsiType.Name == name && string.Equals(xsiType.Namespace, defaultNamespace); } + private void CreateUnknownNodeException(object o) + { + CreateUnknownNodeException(); + } + internal class CollectionMember : List { } @@ -1573,17 +2039,35 @@ internal class Member public CollectionMember Collection; public int FixupIndex = -1; public bool MultiRef = false; + public Action Source; + public Func GetSource; + public Action ArraySource; + public Action CheckSpecifiedSource; + public Action ChoiceSource; + public Action XmlnsSource; public Member(MemberMapping mapping) { Mapping = mapping; } + + public Member(MemberMapping mapping, CollectionMember collectionMember) : this(mapping) + { + Collection = collectionMember; + } + } + + internal class CheckTypeSource + { + public string Id { get; set; } + public bool IsObject { get; set; } + public Type Type { get; set; } + public object RefObject { get; set; } } - private enum UnknownNodeAction + internal class ObjectHolder { - CreateUnknownNodeException, - ReadUnknownNode + public object Object; } } } diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs index daa54c38a194..a4f7dea3cded 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/ReflectionXmlSerializationWriter.cs @@ -67,13 +67,13 @@ protected override void InitCallbacks() public void WriteObject(object o) { XmlMapping xmlMapping = _mapping; - if (xmlMapping is XmlTypeMapping) + if (xmlMapping is XmlTypeMapping xmlTypeMapping) { - WriteObjectOfTypeElement(o, (XmlTypeMapping)xmlMapping); + WriteObjectOfTypeElement(o, xmlTypeMapping); } - else if (xmlMapping is XmlMembersMapping) + else if (xmlMapping is XmlMembersMapping xmlMembersMapping) { - WriteMembersElement(o, (XmlMembersMapping)xmlMapping); + GenerateMembersElement(o, xmlMembersMapping); } } @@ -90,20 +90,21 @@ private void GenerateTypeElement(object o, XmlTypeMapping xmlMapping) WriteStartDocument(); if (o == null) { + string ns = (element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty); if (element.IsNullable) - { + { if (mapping.IsSoap) { - throw new PlatformNotSupportedException(); + WriteNullTagEncoded(element.Name, ns); } else { - WriteNullTagLiteral(element.Name, (element.Form == XmlSchemaForm.Qualified ? element.Namespace : "")); + WriteNullTagLiteral(element.Name, ns); } } else { - WriteEmptyTag(element.Name, (element.Form == XmlSchemaForm.Qualified ? element.Namespace : "")); + WriteEmptyTag(element.Name, ns); } return; @@ -114,15 +115,14 @@ private void GenerateTypeElement(object o, XmlTypeMapping xmlMapping) TopLevelElement(); } - WriteMember(o, null, new ElementAccessor[] { element }, null, null, mapping.TypeDesc, !element.IsSoap, xmlMapping); - + WriteMember(o, null, new ElementAccessor[] { element }, null, null, mapping.TypeDesc, !element.IsSoap); if (mapping.IsSoap) { WriteReferencedElements(); } } - private void WriteMember(object o, object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, bool writeAccessors, XmlMapping parentMapping = null) + private void WriteMember(object o, object choiceSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc memberTypeDesc, bool writeAccessors) { if (memberTypeDesc.IsArrayLike && !(elements.Length == 1 && elements[0].Mapping is ArrayMapping)) @@ -131,7 +131,7 @@ private void WriteMember(object o, object choiceSource, ElementAccessor[] elemen } else { - WriteElements(o, choiceSource, elements, text, choice, "a", writeAccessors, memberTypeDesc.IsNullable, parentMapping); + WriteElements(o, choiceSource, elements, text, choice, writeAccessors, memberTypeDesc.IsNullable); } } @@ -161,30 +161,30 @@ private void WriteArray(object o, object choiceSource, ElementAccessor[] element private void WriteArrayItems(ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, TypeDesc arrayTypeDesc, object o) { TypeDesc arrayElementTypeDesc = arrayTypeDesc.ArrayElementTypeDesc; - var a = o as IEnumerable; // #10593: This assert may not be true. We need more tests for this method. Debug.Assert(a != null); - var e = a.GetEnumerator(); - + IEnumerator e = a.GetEnumerator(); if (e != null) { while (e.MoveNext()) { object ai = e.Current; - WriteElements(ai, null/*choiceName + "i"*/, elements, text, choice, (string)null/*arrayName + "a"*/, true, true); + WriteElements(ai, null/*choiceName + "i"*/, elements, text, choice, true, true); } } } - private void WriteElements(object o, object enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, string arrayName, bool writeAccessors, bool isNullable, XmlMapping parentMapping = null) + private void WriteElements(object o, object enumSource, ElementAccessor[] elements, TextAccessor text, ChoiceIdentifierAccessor choice, bool writeAccessors, bool isNullable) { - if (elements.Length == 0 && text == null) return; + if (elements.Length == 0 && text == null) + return; + if (elements.Length == 1 && text == null) { - WriteElement(o, elements[0], arrayName, writeAccessors, parentMapping); + WriteElement(o, elements[0], writeAccessors); } else { @@ -196,7 +196,7 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen int anyCount = 0; var namedAnys = new List(); ElementAccessor unnamedAny = null; // can only have one - string enumTypeName = choice == null ? null : choice.Mapping.TypeDesc.FullName; + string enumTypeName = choice?.Mapping.TypeDesc.FullName; for (int i = 0; i < elements.Length; i++) { @@ -214,7 +214,7 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen { if (o != null && o.GetType() == element.Mapping.TypeDesc.Type) { - WriteElement(o, element, arrayName, writeAccessors); + WriteElement(o, element, writeAccessors); return; } } @@ -223,7 +223,7 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen TypeDesc td = element.IsUnbounded ? element.Mapping.TypeDesc.CreateArrayTypeDesc() : element.Mapping.TypeDesc; if (o.GetType() == td.Type) { - WriteElement(o, element, arrayName, writeAccessors); + WriteElement(o, element, writeAccessors); return; } } @@ -231,14 +231,13 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen if (anyCount > 0) { - var elem = o as XmlElement; - if (elem != null) + if (o is XmlElement elem) { foreach (ElementAccessor element in namedAnys) { if (element.Name == elem.Name && element.Namespace == elem.NamespaceURI) { - WriteElement(elem, element, arrayName, writeAccessors); + WriteElement(elem, element, writeAccessors); return; } } @@ -250,7 +249,7 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen if (unnamedAny != null) { - WriteElement(elem, unnamedAny, arrayName, writeAccessors); + WriteElement(elem, unnamedAny, writeAccessors); return; } @@ -275,36 +274,34 @@ private void WriteElements(object o, object enumSource, ElementAccessor[] elemen private void WriteText(object o, TextAccessor text) { - if (text.Mapping is PrimitiveMapping) + if (text.Mapping is PrimitiveMapping primitiveMapping) { - PrimitiveMapping mapping = (PrimitiveMapping)text.Mapping; string stringValue; - if (text.Mapping is EnumMapping) + if (text.Mapping is EnumMapping enumMapping) { - stringValue = WriteEnumMethod((EnumMapping)mapping, o); + stringValue = WriteEnumMethod(enumMapping, o); } else { - if (!WritePrimitiveValue(mapping.TypeDesc, o, false, out stringValue)) + if (!WritePrimitiveValue(primitiveMapping.TypeDesc, o, false, out stringValue)) { // #10593: Add More Tests for Serialization Code Debug.Assert(o is byte[]); } } - if (o is byte[]) + if (o is byte[] byteArray) { - WriteValue((byte[])o); + WriteValue(byteArray); } else { WriteValue(stringValue); } } - else if (text.Mapping is SpecialMapping) + else if (text.Mapping is SpecialMapping specialMapping) { - SpecialMapping mapping = (SpecialMapping)text.Mapping; - switch (mapping.TypeDesc.Kind) + switch (specialMapping.TypeDesc.Kind) { case TypeKind.Node: ((XmlNode)o).WriteTo(Writer); @@ -315,18 +312,18 @@ private void WriteText(object o, TextAccessor text) } } - private void WriteElement(object o, ElementAccessor element, string arrayName, bool writeAccessor, XmlMapping parentMapping = null) + private void WriteElement(object o, ElementAccessor element, bool writeAccessor) { string name = writeAccessor ? element.Name : element.Mapping.TypeName; - string ns = element.Any && element.Name.Length == 0 ? null : (element.Form == XmlSchemaForm.Qualified ? (writeAccessor ? element.Namespace : element.Mapping.Namespace) : ""); + string ns = element.Any && element.Name.Length == 0 ? null : (element.Form == XmlSchemaForm.Qualified ? (writeAccessor ? element.Namespace : element.Mapping.Namespace) : string.Empty); - if (element.Mapping is NullableMapping) + if (element.Mapping is NullableMapping nullableMapping) { if (o != null) { ElementAccessor e = element.Clone(); - e.Mapping = ((NullableMapping)element.Mapping).BaseMapping; - WriteElement(o, e, arrayName, writeAccessor); + e.Mapping = nullableMapping.BaseMapping; + WriteElement(o, e, writeAccessor); } else if (element.IsNullable) { @@ -335,11 +332,10 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b } else if (element.Mapping is ArrayMapping) { - var mapping = (ArrayMapping)element.Mapping; - + var mapping = element.Mapping as ArrayMapping; if (element.IsNullable && o == null) { - WriteNullTagLiteral(element.Name, element.Form == XmlSchemaForm.Qualified ? element.Namespace : ""); + WriteNullTagLiteral(element.Name, element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty); } else if (mapping.IsSoap) { @@ -348,11 +344,6 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b throw new InvalidOperationException(SR.XmlInternalError); } - var itemElement = mapping.Elements[0]; - var itemMapping = itemElement.Mapping as StructMapping; - var itemName = writeAccessor ? itemElement.Name : itemMapping.TypeName; - var itemNamespace = itemElement.Any && itemElement.Name.Length == 0 ? null : (itemElement.Form == XmlSchemaForm.Qualified ? (writeAccessor ? itemElement.Namespace : itemMapping.Namespace) : ""); - if (!writeAccessor) { WritePotentiallyReferencingElement(name, ns, o, mapping.TypeDesc.Type, true, element.IsNullable); @@ -365,12 +356,11 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b else if (element.IsUnbounded) { TypeDesc arrayTypeDesc = mapping.TypeDesc.CreateArrayTypeDesc(); - var enumerable = (IEnumerable)o; foreach (var e in enumerable) { element.IsUnbounded = false; - WriteElement(e, element, arrayName, writeAccessor); + WriteElement(e, element, writeAccessor); element.IsUnbounded = true; } } @@ -399,7 +389,7 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b } else if (element.Mapping is PrimitiveMapping) { - PrimitiveMapping mapping = (PrimitiveMapping)element.Mapping; + var mapping = element.Mapping as PrimitiveMapping; if (mapping.TypeDesc == QnameTypeDesc) { WriteQualifiedNameElement(name, ns, element.Default, (XmlQualifiedName)o, element.IsNullable, mapping.IsSoap, mapping); @@ -416,14 +406,14 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b } else if (element.Mapping is StructMapping) { - var mapping = (StructMapping)element.Mapping; + var mapping = element.Mapping as StructMapping; if (mapping.IsSoap) { WritePotentiallyReferencingElement(name, ns, o, !writeAccessor ? mapping.TypeDesc.Type : null, !writeAccessor, element.IsNullable); } else { - WriteStructMethod(mapping, name, ns, o, element.IsNullable, needType: false, parentMapping: parentMapping); + WriteStructMethod(mapping, name, ns, o, element.IsNullable, needType: false); } } else if (element.Mapping is SpecialMapping) @@ -435,8 +425,7 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b else { // XmlNode, XmlElement - var node = o as XmlNode; - if (node != null) + if (o is XmlNode node) { WriteElementLiteral(node, name, ns, element.IsNullable, element.Any); } @@ -454,17 +443,23 @@ private void WriteElement(object o, ElementAccessor element, string arrayName, b private XmlSerializationWriteCallback CreateXmlSerializationWriteCallback(TypeMapping mapping, string name, string ns, bool isNullable) { - var structMapping = mapping as StructMapping; - if (structMapping != null) + if (mapping is StructMapping structMapping) { return (o) => { WriteStructMethod(structMapping, name, ns, o, isNullable, needType: false); }; } + else if (mapping is EnumMapping enumMapping) + { + return (o) => + { + WriteEnumMethod(enumMapping, o); + }; + } else { - throw new NotImplementedException(); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } } @@ -476,20 +471,29 @@ private void WriteQualifiedNameElement(string name, string ns, object defaultVal if (isSoap) { - throw new PlatformNotSupportedException(); - } - - if (nullable) - { - WriteNullableQualifiedNameLiteral(name, ns, o); + if (nullable) + { + WriteNullableQualifiedNameEncoded(name, ns, o, new XmlQualifiedName(mapping.TypeName, mapping.Namespace)); + } + else + { + WriteElementQualifiedName(name, ns, o, new XmlQualifiedName(mapping.TypeName, mapping.Namespace)); + } } else { - WriteElementQualifiedName(name, ns, o); + if (nullable) + { + WriteNullableQualifiedNameLiteral(name, ns, o); + } + else + { + WriteElementQualifiedName(name, ns, o); + } } } - private void WriteStructMethod(StructMapping mapping, string n, string ns, object o, bool isNullable, bool needType, XmlMapping parentMapping = null) + private void WriteStructMethod(StructMapping mapping, string n, string ns, object o, bool isNullable, bool needType) { if (mapping.IsSoap && mapping.TypeDesc.IsRoot) return; @@ -511,7 +515,7 @@ private void WriteStructMethod(StructMapping mapping, string n, string ns, objec if (mapping.TypeDesc.IsRoot) { - if (WriteEnumAndArrayTypes(mapping, o, n, ns, parentMapping)) + if (WriteEnumAndArrayTypes(mapping, o, n, ns)) { return; } @@ -626,7 +630,7 @@ private void WriteStructMethod(StructMapping mapping, string n, string ns, objec if (isSpecified && shouldPersist) { - WriteMember(memberValue, choiceSource, m.ElementsSortedByDerivation, m.Text, m.ChoiceIdentifier, m.TypeDesc, true, parentMapping); + WriteMember(memberValue, choiceSource, m.ElementsSortedByDerivation, m.Text, m.ChoiceIdentifier, m.TypeDesc, true); } } if (!mapping.IsSoap) @@ -639,18 +643,17 @@ private void WriteStructMethod(StructMapping mapping, string n, string ns, objec private object GetMemberValue(object o, string memberName) { MemberInfo[] memberInfos = o.GetType().GetMember(memberName); - if (memberInfos == null) { - throw new InvalidOperationException("cannot find member:" + memberName); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError, memberName)); } - var memberInfo = memberInfos[0]; + MemberInfo memberInfo = memberInfos[0]; object memberValue = GetMemberValue(o, memberInfo); return memberValue; } - private bool WriteEnumAndArrayTypes(StructMapping structMapping, object o, string n, string ns, XmlMapping parentMapping) + private bool WriteEnumAndArrayTypes(StructMapping structMapping, object o, string n, string ns) { if (o is Enum) { @@ -658,17 +661,17 @@ private bool WriteEnumAndArrayTypes(StructMapping structMapping, object o, strin EnumMapping enumMapping = null; Type enumType = o.GetType(); - foreach (var m in parentMapping.Scope.TypeMappings) + foreach (var m in _mapping.Scope.TypeMappings) { - var em = m as EnumMapping; - if (em != null && em.TypeDesc.Type == enumType) + if (m is EnumMapping em && em.TypeDesc.Type == enumType) { enumMapping = em; break; } } - Debug.Assert(enumMapping != null); + if (enumMapping == null) + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); WriteXsiType(enumMapping.TypeName, ns); Writer.WriteString(WriteEnumMethod(enumMapping, o)); @@ -678,21 +681,21 @@ private bool WriteEnumAndArrayTypes(StructMapping structMapping, object o, strin if (o is Array) { - Debug.Assert(parentMapping != null); Writer.WriteStartElement(n, ns); ArrayMapping arrayMapping = null; Type arrayType = o.GetType(); - foreach (var m in parentMapping.Scope.TypeMappings) + foreach (var m in _mapping.Scope.TypeMappings) { - var am = m as ArrayMapping; - if (am != null && am.TypeDesc.Type == arrayType) + if (m is ArrayMapping am && am.TypeDesc.Type == arrayType) { arrayMapping = am; break; } } - Debug.Assert(arrayMapping != null); + if (arrayMapping == null) + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); + WriteXsiType(arrayMapping.TypeName, ns); WriteMember(o, null, arrayMapping.ElementsSortedByDerivation, null, null, arrayMapping.TypeDesc, true); Writer.WriteEndElement(); @@ -765,22 +768,19 @@ private string WriteEnumMethod(EnumMapping mapping, object v) private object GetMemberValue(object o, MemberInfo memberInfo) { - PropertyInfo memberProperty = memberInfo as PropertyInfo; - if (memberProperty != null) + if (memberInfo is PropertyInfo memberProperty) { return memberProperty.GetValue(o); } - - FieldInfo memberField = memberInfo as FieldInfo; - if (memberField != null) + else if (memberInfo is FieldInfo memberField) { return memberField.GetValue(o); } - throw new InvalidOperationException(); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } - private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDesc memberTypeDesc, object parent) + private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDesc memberTypeDesc, object container) { if (memberTypeDesc.IsAbstract) return; if (memberTypeDesc.IsArrayLike) @@ -792,7 +792,7 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe { if (canOptimizeWriteListSequence) { - Writer.WriteStartAttribute(null, attribute.Name, attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : String.Empty); + Writer.WriteStartAttribute(null, attribute.Name, attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : string.Empty); } } @@ -810,9 +810,9 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe if (attribute.IsList) { string stringValue; - if (attribute.Mapping is EnumMapping) + if (attribute.Mapping is EnumMapping enumMapping) { - stringValue = WriteEnumMethod((EnumMapping)attribute.Mapping, ai); + stringValue = WriteEnumMethod(enumMapping, ai); } else { @@ -852,7 +852,7 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe } else { - WriteAttribute(ai, attribute, parent); + WriteAttribute(ai, attribute, container); } shouldAppendWhitespace = true; @@ -869,7 +869,7 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe { if (sb.Length != 0) { - string ns = attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : String.Empty; + string ns = attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : string.Empty; WriteAttribute(attribute.Name, ns, sb.ToString()); } } @@ -879,33 +879,34 @@ private void WriteMember(object memberValue, AttributeAccessor attribute, TypeDe } else { - WriteAttribute(memberValue, attribute, parent); + WriteAttribute(memberValue, attribute, container); } } - private bool CanOptimizeWriteListSequence(TypeDesc listElementTypeDesc) - { + private bool CanOptimizeWriteListSequence(TypeDesc listElementTypeDesc) { // check to see if we can write values of the attribute sequentially // currently we have only one data type (XmlQualifiedName) that we can not write "inline", // because we need to output xmlns:qx="..." for each of the qnames return (listElementTypeDesc != null && listElementTypeDesc != QnameTypeDesc); } - private void WriteAttribute(object memberValue, AttributeAccessor attribute, object parent) + private void WriteAttribute(object memberValue, AttributeAccessor attribute, object container) { - if (attribute.Mapping is SpecialMapping) + // TODO: this block is never hit by our tests. + if (attribute.Mapping is SpecialMapping special) { - SpecialMapping special = (SpecialMapping)attribute.Mapping; if (special.TypeDesc.Kind == TypeKind.Attribute || special.TypeDesc.CanBeAttributeValue) { - WriteXmlAttribute((XmlNode)memberValue, parent); + WriteXmlAttribute((XmlNode)memberValue, container); } else + { throw new InvalidOperationException(SR.XmlInternalError); + } } else { - string ns = attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : ""; + string ns = attribute.Form == XmlSchemaForm.Qualified ? attribute.Namespace : string.Empty; WritePrimitive(WritePrimitiveMethodRequirement.WriteAttribute, attribute.Name, ns, attribute.Default, memberValue, attribute.Mapping, false, false, false); } } @@ -916,8 +917,10 @@ private int FindXmlnsIndex(MemberMapping[] members) { if (members[i].Xmlns == null) continue; + return i; } + return -1; } @@ -951,7 +954,7 @@ private void WritePrimitive(WritePrimitiveMethodRequirement method, string name, { if (((EnumMapping)mapping).IsFlags) { - var defaultEnumFlagValues = defaultValue.ToString().Split(null).Where((s) => !string.IsNullOrWhiteSpace(s)); + IEnumerable defaultEnumFlagValues = defaultValue.ToString().Split((char[])null, StringSplitOptions.RemoveEmptyEntries); string defaultEnumFlagString = string.Join(", ", defaultEnumFlagValues); if (o.ToString() == defaultEnumFlagString) @@ -980,9 +983,9 @@ private void WritePrimitive(WritePrimitiveMethodRequirement method, string name, string stringValue = null; bool hasValidStringValue = false; - if (mapping is EnumMapping) + if (mapping is EnumMapping enumMapping) { - stringValue = WriteEnumMethod((EnumMapping)mapping, o); + stringValue = WriteEnumMethod(enumMapping, o); hasValidStringValue = true; } else @@ -1039,9 +1042,8 @@ private void WritePrimitive(WritePrimitiveMethodRequirement method, string name, Debug.Assert(false); } } - else if (o is byte[]) + else if (o is byte[] a) { - byte[] a = (byte[])o; if (hasRequirement(method, WritePrimitiveMethodRequirement.WriteElementString | WritePrimitiveMethodRequirement.Raw)) { WriteElementStringRaw(name, ns, FromByteArrayBase64(a)); @@ -1165,7 +1167,7 @@ private bool WritePrimitiveValue(TypeDesc typeDesc, object o, bool isElement, ou } else { - throw new InvalidOperationException("Unknown type's HasCustomFormatter=true"); + throw new InvalidOperationException(SR.Format(SR.XmlInternalError)); } } @@ -1232,12 +1234,145 @@ private string CovertPrimitiveToString(object o, TypeDesc typeDesc) return stringValue; } - private void WriteMembersElement(object o, XmlMembersMapping mapping) + private void GenerateMembersElement(object o, XmlMembersMapping xmlMembersMapping) { - // #10675: we should implement this method. WCF is the major customer of the method - // as WCF uses XmlReflectionImporter.ImportMembersMapping and generates special - // serializers for OperationContracts. - throw new NotImplementedException(); + ElementAccessor element = xmlMembersMapping.Accessor; + MembersMapping mapping = (MembersMapping)element.Mapping; + bool hasWrapperElement = mapping.HasWrapperElement; + bool writeAccessors = mapping.WriteAccessors; + bool isRpc = xmlMembersMapping.IsSoap && writeAccessors; + + WriteStartDocument(); + + if (!mapping.IsSoap) + { + TopLevelElement(); + } + + object[] p = (object[])o; + int pLength = p.Length; + + if (hasWrapperElement) + { + WriteStartElement(element.Name, (element.Form == XmlSchemaForm.Qualified ? element.Namespace : string.Empty), mapping.IsSoap); + + int xmlnsMember = FindXmlnsIndex(mapping.Members); + if (xmlnsMember >= 0) + { + MemberMapping member = mapping.Members[xmlnsMember]; + var source = (XmlSerializerNamespaces)p[xmlnsMember]; + + if (pLength > xmlnsMember) + { + WriteNamespaceDeclarations(source); + } + } + + for (int i = 0; i < mapping.Members.Length; i++) + { + MemberMapping member = mapping.Members[i]; + if (member.Attribute != null && !member.Ignore) + { + object source = p[i]; + bool? specifiedSource = null; + if (member.CheckSpecified != SpecifiedAccessor.None) + { + string memberNameSpecified = member.Name + "Specified"; + for (int j = 0; j < Math.Min(pLength, mapping.Members.Length); j++) + { + if (mapping.Members[j].Name == memberNameSpecified) + { + specifiedSource = (bool) p[j]; + break; + } + } + } + + if (pLength > i && (specifiedSource == null || specifiedSource.Value)) + { + WriteMember(source, member.Attribute, member.TypeDesc, null); + } + } + } + } + + for (int i = 0; i < mapping.Members.Length; i++) + { + MemberMapping member = mapping.Members[i]; + if (member.Xmlns != null) + continue; + + if (member.Ignore) + continue; + + bool? specifiedSource = null; + if (member.CheckSpecified != SpecifiedAccessor.None) + { + string memberNameSpecified = member.Name + "Specified"; + for (int j = 0; j < Math.Min(pLength, mapping.Members.Length); j++) + { + if (mapping.Members[j].Name == memberNameSpecified) + { + specifiedSource = (bool)p[j]; + break; + } + } + } + + if (pLength > i) + { + if (specifiedSource == null || specifiedSource.Value) + { + + object source = p[i]; + object enumSource = null; + if (member.ChoiceIdentifier != null) + { + for (int j = 0; j < mapping.Members.Length; j++) + { + if (mapping.Members[j].Name == member.ChoiceIdentifier.MemberName) + { + enumSource = p[j]; + break; + } + } + } + + if (isRpc && member.IsReturnValue && member.Elements.Length > 0) + { + WriteRpcResult(member.Elements[0].Name, string.Empty); + } + + // override writeAccessors choice when we've written a wrapper element + WriteMember(source, enumSource, member.ElementsSortedByDerivation, member.Text, member.ChoiceIdentifier, member.TypeDesc, writeAccessors || hasWrapperElement); + } + } + } + + if (hasWrapperElement) + { + WriteEndElement(); + } + + if (element.IsSoap) + { + if (!hasWrapperElement && !writeAccessors) + { + // doc/bare case -- allow extra members + if (pLength > mapping.Members.Length) + { + for (int i = mapping.Members.Length; i < pLength; i++) + { + if (p[i] != null) + { + WritePotentiallyReferencingElement(null, null, p[i], p[i].GetType(), true, false); + } + } + } + } + + WriteReferencedElements(); + } } [Flags] diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs index 8662c59ba0dd..9a97c4f3a5b6 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs @@ -440,7 +440,7 @@ public void Serialize(XmlWriter xmlWriter, object o, XmlSerializerNamespaces nam SerializePrimitive(xmlWriter, o, namespaces); } #if !uapaot - else if (ShouldUseReflectionBasedSerialization()) + else if (ShouldUseReflectionBasedSerialization(_mapping)) { XmlMapping mapping; if (_mapping != null && _mapping.GenerateSerializer) @@ -587,7 +587,7 @@ public object Deserialize(XmlReader xmlReader, string encodingStyle, XmlDeserial return DeserializePrimitive(xmlReader, events); } #if !uapaot - else if (ShouldUseReflectionBasedSerialization()) + else if (ShouldUseReflectionBasedSerialization(_mapping)) { XmlMapping mapping; if (_mapping != null && _mapping.GenerateSerializer) @@ -682,10 +682,10 @@ public object Deserialize(XmlReader xmlReader, string encodingStyle, XmlDeserial } } - private bool ShouldUseReflectionBasedSerialization() + private static bool ShouldUseReflectionBasedSerialization(XmlMapping mapping) { return Mode == SerializationMode.ReflectionOnly - || (_mapping != null && _mapping.IsSoap); + || (mapping != null && mapping.IsSoap); } /// @@ -736,18 +736,25 @@ public static XmlSerializer[] FromMappings(XmlMapping[] mappings) public static XmlSerializer[] FromMappings(XmlMapping[] mappings, Type type) { if (mappings == null || mappings.Length == 0) return Array.Empty(); - #if uapaot - var serializers = new XmlSerializer[mappings.Length]; - for(int i=0;i\r\n\r\n Two Three\r\n", + () => serializer); + + Assert.NotNull(actual); + Assert.StrictEqual(value.EnumProperty, actual.EnumProperty); + + + value = new TypeWithEnumFlagPropertyHavingDefaultValue(); + actual = SerializeAndDeserialize( + value, + "\r\n\r\n One Four\r\n", + () => serializer); + + Assert.NotNull(actual); + Assert.StrictEqual(value.EnumProperty, actual.EnumProperty); + } + [Fact] public static void Xml_TypeWithXmlQualifiedName() { @@ -1992,6 +2018,26 @@ public static void Xml_TypeWithXmlQualifiedName() Assert.StrictEqual(value.Value, actual.Value); } + [Fact] + public static void Xml_Soap_TypeWithXmlQualifiedName() + { + var mapping = new SoapReflectionImporter().ImportTypeMapping(typeof(TypeWithXmlQualifiedName)); + var serializer = new XmlSerializer(mapping); + + var value = new TypeWithXmlQualifiedName() + { + Value = new XmlQualifiedName("FooName") + }; + + var actual = SerializeAndDeserialize( + value, + "\r\n\r\n FooName\r\n", + () => serializer); + + Assert.NotNull(actual); + Assert.StrictEqual(value.Value, actual.Value); + } + [Fact] public static void Xml_TypeWithShouldSerializeMethod_WithDefaultValue() { @@ -2522,42 +2568,22 @@ public static void SoapAttributeTests() } [Fact] - public static void SoapEncodedSerializationTest_ComplexField() + public static void Xml_Soap_ComplexField() { XmlTypeMapping typeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SoapEncodedTestType2)); - var ser = new XmlSerializer(typeMapping); + var serializer = new XmlSerializer(typeMapping); var value = new SoapEncodedTestType2(); value.TestType3 = new SoapEncodedTestType3() { StringValue = "foo" }; + string baseline = "foo"; + var actual = SerializeAndDeserializeWithWrapper(value, serializer, baseline); - using (var ms = new MemoryStream()) - { - var writer = new XmlTextWriter(ms, Encoding.UTF8); - writer.WriteStartElement("root"); - ser.Serialize(writer, value); - writer.WriteEndElement(); - writer.Flush(); - ms.Position = 0; - - string expectedOutput = "foo"; - string actualOutput = new StreamReader(ms).ReadToEnd(); - Utils.CompareResult result = Utils.Compare(expectedOutput, actualOutput); - Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", - Environment.NewLine, result.ErrorMessage, value, expectedOutput, actualOutput)); - - ms.Position = 0; - using (var reader = new XmlTextReader(ms)) - { - reader.ReadStartElement("root"); - var actual = (SoapEncodedTestType2)ser.Deserialize(reader); - Assert.NotNull(actual); - Assert.NotNull(actual.TestType3); - Assert.Equal(value.TestType3.StringValue, actual.TestType3.StringValue); - } - } + Assert.NotNull(actual); + Assert.NotNull(actual.TestType3); + Assert.Equal(value.TestType3.StringValue, actual.TestType3.StringValue); } [Fact] - public static void SoapEncodedSerializationTest_Basic() + public static void Xml_Soap_Basic() { XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SoapEncodedTestType1)); var ser = new XmlSerializer(myTypeMapping); @@ -2582,7 +2608,100 @@ public static void SoapEncodedSerializationTest_Basic() } [Fact] - public static void SoapEncodedSerializationTest_With_SoapIgnore() + public static void Xml_Soap_TypeWithNullableFields() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SoapEncodedTestType4)); + var ser = new XmlSerializer(myTypeMapping); + var value = new SoapEncodedTestType4() + { + IntValue = 11, + DoubleValue = 12.0 + }; + + var actual = SerializeAndDeserialize( + value: value, + baseline: "\r\n\r\n 11\r\n 12\r\n", + serializerFactory: () => ser); + + Assert.NotNull(actual); + Assert.Equal(value.IntValue, actual.IntValue); + Assert.Equal(value.DoubleValue, actual.DoubleValue); + + value = new SoapEncodedTestType4() + { + IntValue = null, + DoubleValue = null + }; + + actual = SerializeAndDeserialize( + value: value, + baseline: "\r\n\r\n \r\n \r\n", + serializerFactory: () => ser); + + Assert.NotNull(actual); + Assert.Equal(value.IntValue, actual.IntValue); + Assert.Equal(value.DoubleValue, actual.DoubleValue); + } + + [Fact] + public static void Xml_Soap_Nullable() + { + XmlTypeMapping intMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(int?)); + int? value = 11; + + var actual = SerializeAndDeserialize( + value: value, + baseline: "\r\n11", + serializerFactory: () => new XmlSerializer(intMapping)); + Assert.Equal(value, actual); + + XmlTypeMapping structMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SomeStruct?)); + SomeStruct? structValue = new SomeStruct() { A = 1, B = 2 }; + + var structActual = SerializeAndDeserialize( + value: structValue, + baseline: "\r\n\r\n 1\r\n 2\r\n", + serializerFactory: () => new XmlSerializer(structMapping)); + Assert.NotNull(structActual); + Assert.Equal(structValue.Value.A, structActual.Value.A); + Assert.Equal(structValue.Value.B, structActual.Value.B); + + structActual = SerializeAndDeserialize( + value: (SomeStruct?)null, + baseline: "\r\n", + serializerFactory: () => new XmlSerializer(structMapping)); + Assert.NotNull(structActual); + Assert.Equal(0, structActual.Value.A); + Assert.Equal(0, structActual.Value.B); + } + + [Fact] + public static void Xml_Soap_Basic_FromMappings() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SoapEncodedTestType1)); + var ser = XmlSerializer.FromMappings(new XmlMapping[] { myTypeMapping }); + var value = new SoapEncodedTestType1() + { + IntValue = 11, + DoubleValue = 12.0, + StringValue = "abc", + DateTimeValue = new DateTime(1000) + }; + + var actual = SerializeAndDeserialize( + value, + "\r\n\r\n 11\r\n 12\r\n abc\r\n 0001-01-01T00:00:00.0001\r\n", + () => ser[0]); + + Assert.NotNull(actual); + Assert.Equal(value.IntValue, actual.IntValue); + Assert.Equal(value.DoubleValue, actual.DoubleValue); + Assert.Equal(value.StringValue, actual.StringValue); + Assert.Equal(value.DateTimeValue, actual.DateTimeValue); + } + + [Fact] + public static void Xml_Soap_With_SoapIgnore() { var soapAttributes = new SoapAttributes(); soapAttributes.SoapIgnore = true; @@ -2613,7 +2732,7 @@ public static void SoapEncodedSerializationTest_With_SoapIgnore() } [Fact] - public static void SoapEncodedSerializationTest_With_SoapElement() + public static void Xml_Soap_With_SoapElement() { var soapAttributes = new SoapAttributes(); var soapElement = new SoapElementAttribute("MyStringValue"); @@ -2645,7 +2764,7 @@ public static void SoapEncodedSerializationTest_With_SoapElement() } [Fact] - public static void SoapEncodedSerializationTest_With_SoapType() + public static void Xml_Soap_With_SoapType() { var soapAttributes = new SoapAttributes(); var soapType = new SoapTypeAttribute(); @@ -2678,7 +2797,7 @@ public static void SoapEncodedSerializationTest_With_SoapType() } [Fact] - public static void SoapEncodedSerializationTest_Enum() + public static void Xml_Soap_Enum() { XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(SoapEncodedTestEnum)); var ser = new XmlSerializer(myTypeMapping); @@ -2693,7 +2812,7 @@ public static void SoapEncodedSerializationTest_Enum() } [Fact] - public static void SoapEncodedSerializationTest_Enum_With_SoapEnumOverrides() + public static void Xml_Soap_Enum_With_SoapEnumOverrides() { var soapAtts = new SoapAttributes(); var soapEnum = new SoapEnumAttribute(); @@ -2782,33 +2901,17 @@ public static void SoapEncodedSerialization_CircularLink() XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(MyCircularLink)); var ser = new XmlSerializer(myTypeMapping); var value = new MyCircularLink(true); - var ms = new MemoryStream(); - using (var writer = new XmlTextWriter(ms, Encoding.UTF8)) - { - writer.Formatting = Formatting.Indented; - writer.WriteStartElement("wrapper"); - ser.Serialize(writer, value); - writer.WriteEndElement(); - writer.Flush(); - ms.Position = 0; - string actualOutput = new StreamReader(ms).ReadToEnd(); - string baseline = "\r\n \r\n \r\n 0\r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n 2\r\n \r\n"; - Utils.Compare(actualOutput, baseline); - ms.Position = 0; - using (var reader = new XmlTextReader(ms)) - { - reader.ReadStartElement("wrapper"); - var deserialized = (MyCircularLink)ser.Deserialize(reader); - Assert.NotNull(deserialized); - Assert.Equal(value.Link.IntValue, deserialized.Link.IntValue); - Assert.Equal(value.Link.Link.IntValue, deserialized.Link.Link.IntValue); - Assert.Equal(value.Link.Link.Link.IntValue, deserialized.Link.Link.Link.IntValue); - } - } + + string baseline = "\r\n \r\n \r\n 0\r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n 2\r\n \r\n"; + var deserialized = SerializeAndDeserializeWithWrapper(value, ser, baseline); + Assert.NotNull(deserialized); + Assert.Equal(value.Link.IntValue, deserialized.Link.IntValue); + Assert.Equal(value.Link.Link.IntValue, deserialized.Link.Link.IntValue); + Assert.Equal(value.Link.Link.Link.IntValue, deserialized.Link.Link.Link.IntValue); } [Fact] - public static void SoapEncodedSerializationTest_Array() + public static void Xml_Soap_Array() { XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(MyGroup)); XmlSerializer ser = new XmlSerializer(myTypeMapping); @@ -2819,35 +2922,18 @@ public static void SoapEncodedSerializationTest_Array() MyItems = things }; - var ms = new MemoryStream(); - using (var writer = new XmlTextWriter(ms, Encoding.UTF8)) + string baseline = "\r\n \r\n MyName\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n AAA\r\n \r\n \r\n BBB\r\n \r\n"; + var actual = SerializeAndDeserializeWithWrapper(value, ser, baseline); + Assert.Equal(value.GroupName, actual.GroupName); + Assert.Equal(value.MyItems.Count(), actual.MyItems.Count()); + for (int i = 0; i < value.MyItems.Count(); i++) { - writer.Formatting = Formatting.Indented; - writer.WriteStartElement("wrapper"); - ser.Serialize(writer, value); - writer.WriteEndElement(); - writer.Flush(); - ms.Position = 0; - string actualOutput = new StreamReader(ms).ReadToEnd(); - string baseline = "\r\n \r\n MyName\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n AAA\r\n \r\n \r\n BBB\r\n \r\n"; - Utils.Compare(actualOutput, baseline); - ms.Position = 0; - using (var reader = new XmlTextReader(ms)) - { - reader.ReadStartElement("wrapper"); - var actual = (MyGroup)ser.Deserialize(reader); - Assert.Equal(value.GroupName, actual.GroupName); - Assert.Equal(value.MyItems.Count(), actual.MyItems.Count()); - for(int i = 0; i < value.MyItems.Count(); i++) - { - Assert.Equal(value.MyItems[i].ItemName, actual.MyItems[i].ItemName); - } - } + Assert.Equal(value.MyItems[i].ItemName, actual.MyItems[i].ItemName); } } [Fact] - public static void SoapEncodedSerializationTest_List() + public static void Xml_Soap_List() { XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(MyGroup2)); var ser = new XmlSerializer(myTypeMapping); @@ -2858,41 +2944,92 @@ public static void SoapEncodedSerializationTest_List() MyItems = things }; - var ms = new MemoryStream(); - using (var writer = new XmlTextWriter(ms, Encoding.UTF8)) + string baseline = "\r\n \r\n MyName\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n AAA\r\n \r\n \r\n BBB\r\n \r\n"; + var actual = SerializeAndDeserializeWithWrapper(value, ser, baseline); + + Assert.Equal(value.GroupName, actual.GroupName); + Assert.Equal(value.MyItems.Count(), actual.MyItems.Count()); + for (int i = 0; i < value.MyItems.Count(); i++) { - writer.Formatting = Formatting.Indented; - writer.WriteStartElement("wrapper"); - ser.Serialize(writer, value); - writer.WriteEndElement(); - writer.Flush(); + Assert.Equal(value.MyItems[i].ItemName, actual.MyItems[i].ItemName); + } + } + + [Fact] + public static void Xml_Soap_MyCollection() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(MyCollection)); + var serializer = new XmlSerializer(myTypeMapping); + var value = new MyCollection("a1", "a2"); + + string baseline = "a1a2"; + MyCollection actual; + + using (var ms = new MemoryStream()) + { + var writer = new XmlTextWriter(ms, Encoding.UTF8); + serializer.Serialize(writer, value, null, "http://www.w3.org/2003/05/soap-encoding"); + ms.Position = 0; string actualOutput = new StreamReader(ms).ReadToEnd(); - string baseline = "\r\n \r\n MyName\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n AAA\r\n \r\n \r\n BBB\r\n \r\n"; - Utils.Compare(actualOutput, baseline); + + Utils.CompareResult result = Utils.Compare(baseline, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); + ms.Position = 0; using (var reader = new XmlTextReader(ms)) { - reader.ReadStartElement("wrapper"); - var actual = (MyGroup2)ser.Deserialize(reader); - Assert.Equal(value.GroupName, actual.GroupName); - Assert.Equal(value.MyItems.Count(), actual.MyItems.Count()); - for (int i = 0; i < value.MyItems.Count(); i++) - { - Assert.Equal(value.MyItems[i].ItemName, actual.MyItems[i].ItemName); - } + actual = (MyCollection)serializer.Deserialize(reader, "http://www.w3.org/2003/05/soap-encoding"); } } + + Assert.NotNull(actual); + Assert.Equal(value.Count, actual.Count); + Assert.True(value.SequenceEqual(actual)); + } + + [Fact] + public static void Xml_Soap_WithNullables() + { + var mapping = new SoapReflectionImporter().ImportTypeMapping(typeof(WithNullables)); + var serializer = new XmlSerializer(mapping); + + var value = new WithNullables() { Optional = IntEnum.Option1, OptionalInt = 42, Struct1 = new SomeStruct { A = 1, B = 2 } }; + string baseline = "Option14212"; + + WithNullables actual = SerializeAndDeserializeWithWrapper(value, serializer, baseline); + + Assert.StrictEqual(value.OptionalInt, actual.OptionalInt); + Assert.StrictEqual(value.Optional, actual.Optional); + Assert.StrictEqual(value.Optionull, actual.Optionull); + Assert.StrictEqual(value.OptionullInt, actual.OptionullInt); + Assert.Null(actual.Struct2); + Assert.Null(actual.Struct1); // This behavior doesn't seem right. But this is the behavior on desktop. + } + + [Fact] + public static void Xml_Soap_Enums() + { + var mapping = new SoapReflectionImporter().ImportTypeMapping(typeof(WithEnums)); + var serializer = new XmlSerializer(mapping); + var item = new WithEnums() { Int = IntEnum.Option1, Short = ShortEnum.Option2 }; + var actual = SerializeAndDeserialize( + item, + "\r\n\r\n Option1\r\n Option2\r\n", + () => serializer); + Assert.StrictEqual(item.Short, actual.Short); + Assert.StrictEqual(item.Int, actual.Int); } [Fact] - public static void SoapEncodedSerializationTest_Dictionary() + public static void Xml_Soap_Dictionary() { Assert.Throws(() => { new SoapReflectionImporter().ImportTypeMapping(typeof(MyGroup3)); }); } [Fact] - public static void SoapEncodedSerializationTest_NestedPublicType() + public static void Xml_Soap_NestedPublicType() { XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(TypeWithNestedPublicType.LevelData)); var ser = new XmlSerializer(myTypeMapping); @@ -2905,6 +3042,55 @@ public static void SoapEncodedSerializationTest_NestedPublicType() Assert.Equal(value.Name, actual.Name); } + [Fact] + public static void Xml_Soap_ObjectAsRoot() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(object)); + var ser = new XmlSerializer(myTypeMapping); + Assert.Equal( + 1, + SerializeAndDeserialize( + 1, + "\r\n1", + () => ser)); + + Assert.Equal( + true, + SerializeAndDeserialize( + true, + "\r\ntrue", + () => ser)); + + Assert.Equal( + "abc", + SerializeAndDeserialize( + "abc", + "\r\nabc", + () => ser)); + + var nullDeserialized = SerializeAndDeserialize( + null, + "\r\n", + () => ser); + Assert.NotNull(nullDeserialized); + Assert.True(typeof(object) == nullDeserialized.GetType()); + } + + [Fact] + public static void Xml_Soap_ObjectAsRoot_Nullable() + { + XmlTypeMapping nullableTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(TypeWithNullableObject)); + var ser = new XmlSerializer(nullableTypeMapping); + + var value = new TypeWithNullableObject { MyObject = null }; + TypeWithNullableObject actual = SerializeAndDeserialize( + value, + "\r\n\r\n \r\n", + () => ser); + Assert.NotNull(actual); + Assert.Null(actual.MyObject); + } + [Fact] public static void XmlSerializationReaderWriterTest() { @@ -3004,9 +3190,6 @@ public static void XmlSerializationGeneratedCodeTest() Assert.NotNull(cg); } -#if ReflectionOnly - [ActiveIssue(10675)] -#endif [Fact] public static void XmlMembersMapping_PrimitiveValue() { @@ -3018,23 +3201,18 @@ public static void XmlMembersMapping_PrimitiveValue() Assert.Equal(getDataRequestBodyValue, getDataRequestBodyActual); } -#if ReflectionOnly - [ActiveIssue(10675)] -#endif [Fact] public static void XmlMembersMapping_SimpleType() { string memberName = "GetData"; var getDataRequestBodyValue = new GetDataRequestBody(3); - var getDataRequestBodyActual = RoundTripWithXmlMembersMapping(getDataRequestBodyValue, memberName, "\r\n\r\n 3\r\n"); + var getDataRequestBodyActual = RoundTripWithXmlMembersMapping(getDataRequestBodyValue, memberName, + "\r\n\r\n 3\r\n"); Assert.NotNull(getDataRequestBodyActual); Assert.Equal(getDataRequestBodyValue.value, getDataRequestBodyActual.value); } -#if ReflectionOnly - [ActiveIssue(10675)] -#endif [Fact] public static void XmlMembersMapping_CompositeType() { @@ -3046,7 +3224,7 @@ public static void XmlMembersMapping_CompositeType() Assert.Equal(requestBodyValue.composite.BoolValue, requestBodyActual.composite.BoolValue); Assert.Equal(requestBodyValue.composite.StringValue, requestBodyActual.composite.StringValue); } - + #if ReflectionOnly [ActiveIssue(18076)] #endif @@ -3228,6 +3406,41 @@ public static void Xml_SerializeClassNestedInStaticClassTest() Assert.Equal(value.LastName, actual.LastName); } + [Fact] + public static void XmlMembersMapping_SimpleType_HasWrapperElement() + { + string memberName = "GetData"; + var getDataRequestBodyValue = new GetDataRequestBody(3); + var getDataRequestBodyActual = RoundTripWithXmlMembersMapping(getDataRequestBodyValue, memberName, + "\r\n\r\n \r\n 3\r\n \r\n", + wrapperName: "wrapper"); + + Assert.NotNull(getDataRequestBodyActual); + Assert.Equal(getDataRequestBodyValue.value, getDataRequestBodyActual.value); + } + + [Fact] + public static void XmlMembersMapping_SimpleType_SpecifiedField_MissingSpecifiedValue() + { + var member1 = GetReflectionMember("GetData"); + var member2 = GetReflectionMember("GetDataSpecified"); + + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + var value = new object[] { getDataRequestBody }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n 3\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: null); + + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.True((bool)actual[1]); + } + [Fact] public static void Xml_XSCoverTest() { @@ -3356,65 +3569,749 @@ public static void Xml_XSCoverTest() Assert.Equal(myPet.Comment2, actual2.Comment2); } - private static T RoundTripWithXmlMembersMapping(object requestBodyValue, string memberName, string baseline, bool skipStringCompare = false) + [Fact] + public static void XmlMembersMapping_SimpleType_SpecifiedField_True_Wrapper() { - var member = new XmlReflectionMember(); - member.MemberName = memberName; - member.MemberType = typeof(T); - member.XmlAttributes = new XmlAttributes(); - var elementAttribute = new XmlElementAttribute(); - elementAttribute.ElementName = memberName; - string ns = "http://tempuri.org/"; - elementAttribute.Namespace = ns; - member.XmlAttributes.XmlElements.Add(elementAttribute); + var member1 = GetReflectionMember("GetData"); + var member2 = GetReflectionMember("GetDataSpecified"); - var importer = new XmlReflectionImporter(null, ns); - var membersMapping = importer.ImportMembersMapping(null, ns, new XmlReflectionMember[] { member }, false); - var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; - using (var ms = new MemoryStream()) - { - object[] value = new object[] { requestBodyValue }; - serializer.Serialize(ms, value); - ms.Flush(); - ms.Position = 0; - string actualOutput = new StreamReader(ms).ReadToEnd(); - if (!skipStringCompare) - { - Utils.CompareResult result = Utils.Compare(baseline, actualOutput); - Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", - Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); - } + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + var value = new object[] { getDataRequestBody, true }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n \r\n 3\r\n \r\n true\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper"); - ms.Position = 0; - var actual = serializer.Deserialize(ms) as object[]; - Assert.NotNull(actual); - Assert.Equal(value.Length, actual.Length); - return (T)actual[0]; - } + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.True((bool)actual[1]); } - private static Stream GenerateStreamFromString(string s) + [Fact] + public static void XmlMembersMapping_SimpleType_SpecifiedField_True_IgnoreSpecifiedField_Wrapper() { - var stream = new MemoryStream(); - var writer = new StreamWriter(stream); - writer.Write(s); - writer.Flush(); - stream.Position = 0; - return stream; + var member1 = GetReflectionMember("GetData"); + var member2 = GetReflectionMember("GetDataSpecified"); + member2.XmlAttributes.XmlIgnore = true; + + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + var value = new object[] { getDataRequestBody, true }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n \r\n 3\r\n \r\n ", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.True((bool)actual[1]); } - private static T SerializeAndDeserialize(T value, string baseline, Func serializerFactory = null, - bool skipStringCompare = false, XmlSerializerNamespaces xns = null) + + [Fact] + public static void XmlMembersMapping_SimpleType_SpecifiedField_False_Wrapper() { - XmlSerializer serializer = new XmlSerializer(typeof(T)); - if (serializerFactory != null) - { - serializer = serializerFactory(); - } + var member1 = GetReflectionMember("value"); + var member2 = GetReflectionMember("valueSpecified"); - using (MemoryStream ms = new MemoryStream()) - { - if (xns == null) - { + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + var value = new object[] { getDataRequestBody, false }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n false\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + Assert.Null(actual[0]); + Assert.False((bool)actual[1]); + } + + [Fact] + public static void XmlMembersMapping_SimpleType_SpecifiedField_False() + { + var member1 = GetReflectionMember("value"); + var member2 = GetReflectionMember("valueSpecified"); + var value = new object[] { new GetDataRequestBody() { value = 3 }, false }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\nfalse", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: null); + + Assert.NotNull(actual); + Assert.Null(actual[0]); + Assert.False((bool)actual[1]); + } + + [Fact] + public static void XmlMembersMapping_IntArray() + { + string memberName = "IntArray"; + var requestBodyValue = new int[] { 1, 2, 3 }; + var requestBodyActual = RoundTripWithXmlMembersMapping(requestBodyValue, memberName, + "\r\n\r\n 1\r\n 2\r\n 3\r\n", + wrapperName: "wrapper"); + + Assert.NotNull(requestBodyActual); + Assert.Equal(requestBodyValue.Length, requestBodyActual.Length); + Assert.True(Enumerable.SequenceEqual(requestBodyValue, requestBodyActual)); + } + + [Fact] + public static void XmlMembersMapping_IntList() + { + string memberName = "IntArray"; + List requestBodyValue = new List { 1, 2, 3 }; + var requestBodyActual = RoundTripWithXmlMembersMapping>(requestBodyValue, memberName, + "\r\n\r\n 1\r\n 2\r\n 3\r\n", + wrapperName: "wrapper"); + + Assert.NotNull(requestBodyActual); + Assert.Equal(requestBodyValue.Count(), requestBodyActual.Count()); + Assert.True(Enumerable.SequenceEqual(requestBodyValue, requestBodyActual)); + } + + [Fact] + public static void XmlMembersMapping_TypeHavingIntArray() + { + string memberName = "data"; + var requestBodyValue = new XmlMembersMappingTypeHavingIntArray() { IntArray = new int[] { 1, 2, 3 } }; + var requestBodyActual = RoundTripWithXmlMembersMapping(requestBodyValue, memberName, + "\r\n\r\n \r\n \r\n 1\r\n 2\r\n 3\r\n \r\n \r\n", + wrapperName: "wrapper"); + + Assert.NotNull(requestBodyActual); + Assert.NotNull(requestBodyActual.IntArray); + Assert.Equal(requestBodyValue.IntArray.Length, requestBodyActual.IntArray.Length); + Assert.True(Enumerable.SequenceEqual(requestBodyValue.IntArray, requestBodyActual.IntArray)); + } + + [Fact] + public static void XmlMembersMapping_TypeWithXmlAttributes() + { + string memberName = "data"; + string ns = s_defaultNs; + XmlReflectionMember member = GetReflectionMember(memberName, ns); + var members = new XmlReflectionMember[] { member }; + + TypeWithXmlAttributes value = new TypeWithXmlAttributes { MyName = "fooname", Today = DateTime.Now }; + var actual = RoundTripWithXmlMembersMapping(value, + memberName, + "\r\n\r\n \r\n", + skipStringCompare: false, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + } + + [Fact] + public static void XmlMembersMapping_Xmlns_True() + { + string memberName = "MyXmlNs"; + string ns = s_defaultNs; + XmlReflectionMember member = GetReflectionMemberNoXmlElement(memberName, ns); + member.XmlAttributes.Xmlns = true; + var members = new XmlReflectionMember[] { member }; + var xmlns = new XmlSerializerNamespaces(); + xmlns.Add("MyNS", "myNS.tempuri.org"); + xmlns.Add("common", "common.tempuri.org"); + var value = new object[] { xmlns }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n", + skipStringCompare: false, + members: members, + wrapperName: "wrapper"); + + var xmlnsActual = (XmlSerializerNamespaces)actual[0]; + Assert.NotNull(xmlnsActual); + var xmlnsActualArray = xmlnsActual.ToArray(); + foreach (var nsString in xmlns.ToArray()) + { + bool existInActualArray = false; + foreach (var actualNs in xmlnsActualArray) + { + if (nsString.Equals(actualNs)) + { + existInActualArray = true; + break; + } + } + + Assert.True(existInActualArray); + } + } + + [Fact] + public static void XmlMembersMapping_Member_With_XmlAnyAttribute() + { + string memberName1 = "StringMember"; + XmlReflectionMember member1 = GetReflectionMember(memberName1, s_defaultNs); + string memberName2 = "XmlAttributes"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, s_defaultNs); + member2.XmlAttributes.XmlAnyAttribute = new XmlAnyAttributeAttribute(); + + var members = new XmlReflectionMember[] { member1, member2 }; + + var importer = new XmlReflectionImporter(null, s_defaultNs); + var membersMapping = importer.ImportMembersMapping("wrapper", s_defaultNs, members, true); + var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; + var ms = new MemoryStream(); + + string output = + "\r\n\r\n string value\r\n "; + var sw = new StreamWriter(ms); + sw.Write(output); + sw.Flush(); + ms.Position = 0; + var deserialized = serializer.Deserialize(ms) as object[]; + Assert.True(deserialized != null, "deserialized was null."); + Assert.Equal("string value", (string)deserialized[0]); + var xmlAttributes = deserialized[1] as XmlAttribute[]; + Assert.True(xmlAttributes != null, "xmlAttributes was null."); + Assert.Equal(2, xmlAttributes.Length); + Assert.Equal("myattribute1", xmlAttributes[0].Name); + Assert.Equal("myattribute2", xmlAttributes[1].Name); + + ms = new MemoryStream(); + serializer.Serialize(ms, deserialized); + ms.Flush(); + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + + Utils.CompareResult result = Utils.Compare(output, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, deserialized, output, actualOutput)); + } + + [Fact] + public static void XmlMembersMapping_Member_With_XmlAnyAttribute_Specified_True() + { + string memberName1 = "StringMember"; + XmlReflectionMember member1 = GetReflectionMember(memberName1, s_defaultNs); + string memberName2 = "XmlAttributes"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, s_defaultNs); + member2.XmlAttributes.XmlAnyAttribute = new XmlAnyAttributeAttribute(); + string memberName3 = "XmlAttributesSpecified"; + XmlReflectionMember member3 = GetReflectionMemberNoXmlElement(memberName3, s_defaultNs); + + var members = new XmlReflectionMember[] { member1, member2, member3 }; + + var importer = new XmlReflectionImporter(null, s_defaultNs); + var membersMapping = importer.ImportMembersMapping("wrapper", s_defaultNs, members, true); + var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; + var ms = new MemoryStream(); + + string output = + "\r\n\r\n string value\r\n true"; + var sw = new StreamWriter(ms); + sw.Write(output); + sw.Flush(); + ms.Position = 0; + var deserialized = serializer.Deserialize(ms) as object[]; + Assert.NotNull(deserialized); + Assert.Equal("string value", (string)deserialized[0]); + var xmlAttributes = deserialized[1] as XmlAttribute[]; + Assert.NotNull(xmlAttributes); + Assert.Equal(2, xmlAttributes.Length); + Assert.Equal("myattribute1", xmlAttributes[0].Name); + Assert.Equal("myattribute2", xmlAttributes[1].Name); + Assert.Equal(true, deserialized[2]); + + ms = new MemoryStream(); + serializer.Serialize(ms, deserialized); + ms.Flush(); + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + + Utils.CompareResult result = Utils.Compare(output, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, deserialized, output, actualOutput)); + } + + [Fact] + public static void XmlMembersMapping_Member_With_XmlAnyAttribute_Specified_False() + { + string memberName1 = "StringMember"; + XmlReflectionMember member1 = GetReflectionMember(memberName1, s_defaultNs); + string memberName2 = "XmlAttributes"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, s_defaultNs); + member2.XmlAttributes.XmlAnyAttribute = new XmlAnyAttributeAttribute(); + string memberName3 = "XmlAttributesSpecified"; + XmlReflectionMember member3 = GetReflectionMemberNoXmlElement(memberName3, s_defaultNs); + + var members = new XmlReflectionMember[] { member1, member2, member3 }; + + var importer = new XmlReflectionImporter(null, s_defaultNs); + var membersMapping = importer.ImportMembersMapping("wrapper", s_defaultNs, members, true); + var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; + var ms = new MemoryStream(); + + string output = + "\r\n\r\n string value\r\n false"; + var sw = new StreamWriter(ms); + sw.Write(output); + sw.Flush(); + ms.Position = 0; + var deserialized = serializer.Deserialize(ms) as object[]; + Assert.NotNull(deserialized); + Assert.Equal("string value", (string)deserialized[0]); + var xmlAttributes = deserialized[1] as XmlAttribute[]; + Assert.NotNull(xmlAttributes); + Assert.Equal(2, xmlAttributes.Length); + Assert.Equal("myattribute1", xmlAttributes[0].Name); + Assert.Equal("myattribute2", xmlAttributes[1].Name); + Assert.Equal(false, deserialized[2]); + + ms = new MemoryStream(); + serializer.Serialize(ms, deserialized); + ms.Flush(); + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + + string expectedOutput = + "\r\n\r\n string value\r\n false\r\n"; + Utils.CompareResult result = Utils.Compare(expectedOutput, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, deserialized, expectedOutput, actualOutput)); + } + + [Fact] + public static void XmlMembersMapping_With_ChoiceIdentifier() + { + string ns = s_defaultNs; + string memberName1 = "items"; + XmlReflectionMember member1 = GetReflectionMemberNoXmlElement(memberName1, ns); + PropertyInfo itemProperty = typeof(TypeWithPropertyHavingChoice).GetProperty("ManyChoices"); + member1.XmlAttributes = new XmlAttributes(itemProperty); + + string memberName2 = "ChoiceArray"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, ns); + member2.XmlAttributes.XmlIgnore = true; + + var members = new XmlReflectionMember[] { member1, member2 }; + + object[] items = { "Food", 5 }; + var itemChoices = new MoreChoices[] { MoreChoices.Item, MoreChoices.Amount }; + object[] value = { items, itemChoices }; + + object[] actual = RoundTripWithXmlMembersMapping(value, + "\r\n\r\n Food\r\n 5\r\n", + false, + members, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + var actualItems = actual[0] as object[]; + Assert.NotNull(actualItems); + Assert.True(items.SequenceEqual(actualItems)); + } + + [Fact] + public static void XmlMembersMapping_MultipleMembers() + { + var member1 = GetReflectionMember("GetData"); + var member2 = GetReflectionMember("IntValue"); + + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + int intValue = 11; + var value = new object[] { getDataRequestBody, intValue }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n \r\n 3\r\n \r\n 11\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.Equal(intValue, (int)actual[1]); + } + + [Fact] + public static void XmlMembersMapping_Soap_PrimitiveValue() + { + string memberName = "value"; + var getDataRequestBodyValue = 3; + var getDataRequestBodyActual = RoundTripWithXmlMembersMappingSoap(getDataRequestBodyValue, memberName, "\r\n3"); + + Assert.NotNull(getDataRequestBodyActual); + Assert.Equal(getDataRequestBodyValue, getDataRequestBodyActual); + } + + [Fact] + public static void XmlMembersMapping_Soap_SimpleType() + { + string memberName = "GetData"; + var getDataRequestBodyValue = new GetDataRequestBody(3); + var getDataRequestBodyActual = RoundTripWithXmlMembersMappingSoap(getDataRequestBodyValue, memberName, + "\r\n\r\n 3\r\n"); + + Assert.NotNull(getDataRequestBodyActual); + Assert.Equal(getDataRequestBodyValue.value, getDataRequestBodyActual.value); + } + + [Fact] + public static void XmlMembersMapping_Soap_PrimitiveValue_HasWrapperElement() + { + string memberName = "value"; + var getDataRequestBodyValue = 3; + var getDataRequestBodyActual = RoundTripWithXmlMembersMappingSoap(getDataRequestBodyValue, + memberName, + "\r\n\r\n 3\r\n", + wrapperName: "wrapper"); + + Assert.NotNull(getDataRequestBodyActual); + Assert.Equal(getDataRequestBodyValue, getDataRequestBodyActual); + } + + [Fact] + public static void XmlMembersMapping_Soap_PrimitiveValue_HasWrapperElement_Validate() + { + string memberName = "value"; + var getDataRequestBodyValue = 3; + var getDataRequestBodyActual = RoundTripWithXmlMembersMappingSoap(getDataRequestBodyValue, + memberName, + "\r\n\r\n 3\r\n", + wrapperName: "wrapper", + validate: true); + + Assert.NotNull(getDataRequestBodyActual); + Assert.Equal(getDataRequestBodyValue, getDataRequestBodyActual); + } + + [Fact] + public static void XmlMembersMapping_Soap_MemberSpecified_True() + { + string memberName1 = "StringMember"; + XmlReflectionMember member1 = GetReflectionMember(memberName1, s_defaultNs); + string memberName2 = "StringMemberSpecified"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, s_defaultNs); + + var members = new XmlReflectionMember[] { member1, member2 }; + + object[] value = { "string value", true }; + object[] actual = RoundTripWithXmlMembersMappingSoap( + value, + "\r\n\r\n string value\r\n true\r\n", + skipStringCompare: false, + members: members, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + Assert.Equal(value.Length, actual.Length); + Assert.Equal(value[0], actual[0]); + } + + [Fact] + public static void XmlMembersMapping_Soap_MemberSpecified_False() + { + string memberName1 = "StringMember"; + XmlReflectionMember member1 = GetReflectionMember(memberName1, s_defaultNs); + string memberName2 = "StringMemberSpecified"; + XmlReflectionMember member2 = GetReflectionMemberNoXmlElement(memberName2, s_defaultNs); + + var members = new XmlReflectionMember[] { member1, member2 }; + + object[] value = { "string value", false }; + object[] actual = RoundTripWithXmlMembersMappingSoap( + value, + "\r\n\r\n false\r\n", + skipStringCompare: false, + members: members, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + Assert.Equal(value.Length, actual.Length); + Assert.Null(actual[0]); + } + + [Fact] + public static void XmlMembersMapping_MultipleMembers_XmlAnyElement() + { + var member1 = GetReflectionMember("GetData"); + var member2 = GetReflectionMember("IntValue"); + var member3 = GetReflectionMember("XmlElementArray"); + member3.XmlAttributes.XmlAnyElements.Add(new XmlAnyElementAttribute()); + + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + int intValue = 11; + + XmlDocument xDoc = new XmlDocument(); + xDoc.LoadXml(@""); + XmlElement element1 = xDoc.CreateElement("name1", "ns1"); + element1.InnerText = "Element innertext1"; + XmlElement element2 = xDoc.CreateElement("name2", "ns2"); + element2.InnerText = "Element innertext2"; + + XmlElement[] xmlElementArray = { element1, element2 }; + var value = new object[] { getDataRequestBody, intValue, xmlElementArray }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n \r\n 3\r\n \r\n 11\r\n \r\n Element innertext1\r\n \r\n \r\n Element innertext2\r\n \r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2, member3 }, + wrapperName: "wrapper"); + + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.Equal(intValue, (int)actual[1]); + XmlElement[] actualXmlElementArray = actual[2] as XmlElement[]; + Assert.NotNull(actualXmlElementArray); + + for (int i = 0; i < xmlElementArray.Length; i++) + { + Assert.Equal(xmlElementArray[i].Name, actualXmlElementArray[i].Name); + Assert.Equal(xmlElementArray[i].NamespaceURI, actualXmlElementArray[i].NamespaceURI); + Assert.Equal(xmlElementArray[i].InnerText, actualXmlElementArray[i].InnerText); + } + } + + [Fact] + public static void XmlMembersMapping_MultipleMembers_IsReturnValue() + { + var member1 = GetReflectionMember("GetData", null); + member1.IsReturnValue = true; + + var member2 = GetReflectionMember("IntValue", null); + + var getDataRequestBody = new GetDataRequestBody() { value = 3 }; + int intValue = 11; + var value = new object[] { getDataRequestBody, intValue }; + var actual = RoundTripWithXmlMembersMapping( + value, + "\r\n\r\n \r\n 3\r\n \r\n 11\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper", + rpc: true); + + Assert.NotNull(actual); + + var getDataRequestBodyActual = (GetDataRequestBody)actual[0]; + Assert.Equal(getDataRequestBody.value, getDataRequestBodyActual.value); + Assert.Equal(intValue, (int)actual[1]); + } + + [Fact] + public static void XmlMembersMapping_Soap_MultipleMembers_IsReturnValue() + { + var member1 = GetReflectionMember("IntReturnValue", null); + member1.IsReturnValue = true; + + var member2 = GetReflectionMember("IntValue", null); + + int intReturnValue = 3; + int intValue = 11; + var value = new object[] { intReturnValue, intValue }; + var actual = RoundTripWithXmlMembersMappingSoap( + value, + "\r\n\r\n 3\r\n 11\r\n", + skipStringCompare: false, + members: new XmlReflectionMember[] { member1, member2 }, + wrapperName: "wrapper", + writeAccessors: true); + + Assert.NotNull(actual); + + var intReturnValueActual = (int)actual[0]; + Assert.Equal(intReturnValue, intReturnValueActual); + Assert.Equal(intValue, (int)actual[1]); + } + + + [Fact] + public static void Xml_TypeWithMyCollectionField() + { + var value = new TypeWithMyCollectionField(); + value.Collection = new MyCollection() { "s1", "s2" }; + var actual = SerializeAndDeserializeWithWrapper(value, new XmlSerializer(typeof(TypeWithMyCollectionField)), "s1s2"); + Assert.NotNull(actual); + Assert.NotNull(actual.Collection); + Assert.True(value.Collection.SequenceEqual(actual.Collection)); + } + + [Fact] + public static void Xml_Soap_TypeWithMyCollectionField() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(TypeWithMyCollectionField)); + var serializer = new XmlSerializer(myTypeMapping); + var value = new TypeWithMyCollectionField(); + value.Collection = new MyCollection() { "s1", "s2" }; + var actual = SerializeAndDeserializeWithWrapper(value, serializer, "s1s2"); + Assert.NotNull(actual); + Assert.NotNull(actual.Collection); + Assert.True(value.Collection.SequenceEqual(actual.Collection)); + } + + public static void Xml_TypeWithReadOnlyMyCollectionProperty() + { + var value = new TypeWithReadOnlyMyCollectionProperty(); + value.Collection.Add("s1"); + value.Collection.Add("s2"); + var actual = SerializeAndDeserializeWithWrapper(value, new XmlSerializer(typeof(TypeWithReadOnlyMyCollectionProperty)), "s1s2"); + Assert.NotNull(actual); + Assert.NotNull(actual.Collection); + Assert.True(value.Collection.SequenceEqual(actual.Collection)); + } + + [Fact] + public static void Xml_Soap_TypeWithReadOnlyMyCollectionProperty() + { + XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(TypeWithReadOnlyMyCollectionProperty)); + var serializer = new XmlSerializer(myTypeMapping); + var value = new TypeWithReadOnlyMyCollectionProperty(); + value.Collection.Add("s1"); + value.Collection.Add("s2"); + var actual = SerializeAndDeserializeWithWrapper(value, serializer, "s1s2"); + Assert.NotNull(actual); + Assert.NotNull(actual.Collection); + Assert.True(value.Collection.SequenceEqual(actual.Collection)); + } + + private static readonly string s_defaultNs = "http://tempuri.org/"; + private static T RoundTripWithXmlMembersMapping(object requestBodyValue, string memberName, string baseline, bool skipStringCompare = false, string wrapperName = null) + { + string ns = s_defaultNs; + object[] value = new object[] { requestBodyValue }; + XmlReflectionMember member = GetReflectionMember(memberName, ns); + var members = new XmlReflectionMember[] { member }; + object[] actual = RoundTripWithXmlMembersMapping(value, baseline, skipStringCompare, members: members, wrapperName: wrapperName); + Assert.Equal(value.Length, actual.Length); + return (T)actual[0]; + } + + private static object[] RoundTripWithXmlMembersMapping(object[] value, string baseline, bool skipStringCompare, XmlReflectionMember[] members, string ns = null, string wrapperName = null, bool rpc = false) + { + ns = ns ?? s_defaultNs; + var importer = new XmlReflectionImporter(null, ns); + var membersMapping = importer.ImportMembersMapping(wrapperName, ns, members, wrapperName != null, rpc: rpc); + var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; + using (var ms = new MemoryStream()) + { + + serializer.Serialize(ms, value); + ms.Flush(); + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + if (!skipStringCompare) + { + Utils.CompareResult result = Utils.Compare(baseline, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); + } + + ms.Position = 0; + var actual = serializer.Deserialize(ms) as object[]; + Assert.NotNull(actual); + + return actual; + } + } + + private static T RoundTripWithXmlMembersMappingSoap(object item, string memberName, string baseline, bool skipStringCompare = false, string wrapperName = null, bool validate = false) + { + string ns = s_defaultNs; + object[] value = new object[] { item }; + XmlReflectionMember member = GetReflectionMember(memberName, ns); + var members = new XmlReflectionMember[] { member }; + object[] actual = RoundTripWithXmlMembersMappingSoap(value, baseline, skipStringCompare, members: members, wrapperName: wrapperName, validate: validate); + Assert.Equal(value.Length, actual.Length); + return (T)actual[0]; + } + + private static object[] RoundTripWithXmlMembersMappingSoap(object[] value, string baseline, bool skipStringCompare, XmlReflectionMember[] members, string ns = null, string wrapperName = null, bool writeAccessors = false, bool validate = false) + { + ns = ns ?? s_defaultNs; + var importer = new SoapReflectionImporter(null, ns); + var membersMapping = importer.ImportMembersMapping(wrapperName, ns, members, hasWrapperElement: wrapperName != null, writeAccessors: writeAccessors, validate: validate); + var serializer = XmlSerializer.FromMappings(new XmlMapping[] { membersMapping })[0]; + using (var ms = new MemoryStream()) + { + + serializer.Serialize(ms, value); + ms.Flush(); + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + if (!skipStringCompare) + { + Utils.CompareResult result = Utils.Compare(baseline, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); + } + + ms.Position = 0; + var actual = serializer.Deserialize(ms) as object[]; + Assert.NotNull(actual); + + return actual; + } + } + + private static XmlReflectionMember GetReflectionMember(string memberName) + { + return GetReflectionMember(memberName, s_defaultNs); + } + + private static XmlReflectionMember GetReflectionMember(string memberName, string ns) + { + var member = new XmlReflectionMember(); + member.MemberName = memberName; + member.MemberType = typeof(T); + member.XmlAttributes = new XmlAttributes(); + var elementAttribute = new XmlElementAttribute(); + elementAttribute.ElementName = memberName; + elementAttribute.Namespace = ns; + member.XmlAttributes.XmlElements.Add(elementAttribute); + return member; + } + + private static XmlReflectionMember GetReflectionMemberNoXmlElement(string memberName, string ns = null) + { + ns = ns ?? s_defaultNs; + var member = new XmlReflectionMember(); + member.MemberName = memberName; + member.MemberType = typeof(T); + member.XmlAttributes = new XmlAttributes(); + return member; + } + + private static Stream GenerateStreamFromString(string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + + private static T SerializeAndDeserialize(T value, string baseline, Func serializerFactory = null, + bool skipStringCompare = false, XmlSerializerNamespaces xns = null) + { + XmlSerializer serializer = new XmlSerializer(typeof(T)); + if (serializerFactory != null) + { + serializer = serializerFactory(); + } + + using (MemoryStream ms = new MemoryStream()) + { + if (xns == null) + { serializer.Serialize(ms, value); } else @@ -3439,4 +4336,32 @@ private static T SerializeAndDeserialize(T value, string baseline, Func(T value, XmlSerializer serializer, string baseline) + { + T actual; + using (var ms = new MemoryStream()) + { + var writer = new XmlTextWriter(ms, Encoding.UTF8); + writer.WriteStartElement("root"); + serializer.Serialize(writer, value); + writer.WriteEndElement(); + writer.Flush(); + + ms.Position = 0; + string actualOutput = new StreamReader(ms).ReadToEnd(); + Utils.CompareResult result = Utils.Compare(baseline, actualOutput); + Assert.True(result.Equal, string.Format("{1}{0}Test failed for input: {2}{0}Expected: {3}{0}Actual: {4}", + Environment.NewLine, result.ErrorMessage, value, baseline, actualOutput)); + + ms.Position = 0; + using (var reader = new XmlTextReader(ms)) + { + reader.ReadStartElement("root"); + actual = (T)serializer.Deserialize(reader); + } + } + + return actual; + } } diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 02e734c5f65e..3acfb2397fb5 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -437,6 +437,23 @@ public ICollection RO2 } } + public class TypeWithMyCollectionField + { + public MyCollection Collection; + } + + public class TypeWithReadOnlyMyCollectionProperty + { + private MyCollection _ro = new MyCollection(); + public MyCollection Collection + { + get + { + return _ro; + } + } + } + public class MyList : IList { private List _items = new List(); @@ -2807,6 +2824,22 @@ public enum MoreChoices { Amount } + public class TypeWithPropertyHavingChoice + { + // The ManyChoices field can contain an array + // of choices. Each choice must be matched to + // an array item in the ChoiceArray field. + [XmlChoiceIdentifier("ChoiceArray")] + [XmlElement("Item", typeof(string))] + [XmlElement("Amount", typeof(int))] + public object[] ManyChoices { get; set; } + + // TheChoiceArray field contains the enumeration + // values, one for each item in the ManyChoices array. + [XmlIgnore] + public MoreChoices[] ChoiceArray; + } + public class TypeWithFieldsOrdered { [XmlElement(Order = 0)] @@ -4052,6 +4085,14 @@ public class SoapEncodedTestType3 public string StringValue; } +public class SoapEncodedTestType4 +{ + [SoapElement(IsNullable = true)] + public int? IntValue; + [SoapElement(IsNullable = true)] + public double? DoubleValue; +} + public class SoapEncodedTestType5 { public string Name; @@ -4182,6 +4223,26 @@ public string StringValue } } +public class XmlMembersMappingTypeHavingIntArray +{ + public int[] IntArray; +} + +public class TypeWithXmlAttributes +{ + [XmlAttribute(Namespace = "http://www.MyNs.org")] + public string MyName; + + [XmlAttribute(DataType = "date", AttributeName = "CreationDate")] + public DateTime Today; +} + +public class TypeWithNullableObject +{ + [SoapElement(IsNullable = true)] + public object MyObject; +} + public delegate void MyDelegate(); [Serializable] @@ -4848,4 +4909,4 @@ public class DerivedType : BaseType { [DataMember] public string StrDerived = "derived"; -} \ No newline at end of file +} From 0bedd4c9b8b8cbbcfbd6cf65ef7a29be9f7fdd88 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Wed, 19 Apr 2017 19:24:49 -0700 Subject: [PATCH 247/336] Use precise StartTime and duration on .NET Desktop --- ...blyInfo.Net46.cs => AssemblyInfo.netfx.cs} | 0 ...System.Diagnostics.DiagnosticSource.csproj | 6 +++- .../Diagnostics/Activity.DateTime.corefx.cs | 14 ++++++++ .../Diagnostics/Activity.DateTime.netfx.cs | 35 +++++++++++++++++++ .../src/System/Diagnostics/Activity.cs | 8 +++-- .../tests/ActivityDateTimeTests.cs | 24 +++++++++++++ ....Diagnostics.DiagnosticSource.Tests.csproj | 1 + 7 files changed, 85 insertions(+), 3 deletions(-) rename src/System.Diagnostics.DiagnosticSource/src/{AssemblyInfo.Net46.cs => AssemblyInfo.netfx.cs} (100%) create mode 100644 src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs create mode 100644 src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs create mode 100644 src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs diff --git a/src/System.Diagnostics.DiagnosticSource/src/AssemblyInfo.Net46.cs b/src/System.Diagnostics.DiagnosticSource/src/AssemblyInfo.netfx.cs similarity index 100% rename from src/System.Diagnostics.DiagnosticSource/src/AssemblyInfo.Net46.cs rename to src/System.Diagnostics.DiagnosticSource/src/AssemblyInfo.netfx.cs diff --git a/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj b/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj index 3fc1281f86ce..19cf56deb913 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj +++ b/src/System.Diagnostics.DiagnosticSource/src/System.Diagnostics.DiagnosticSource.csproj @@ -59,6 +59,9 @@ + + + @@ -78,7 +81,8 @@ - + + diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs new file mode 100644 index 000000000000..c485b41b7b7a --- /dev/null +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Diagnostics +{ + partial class Activity + { + private DateTime GetUtcNow() + { + return DateTime.UtcNow; + } + } +} \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs new file mode 100644 index 000000000000..d7e7ec349e2b --- /dev/null +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs @@ -0,0 +1,35 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Threading; + +namespace System.Diagnostics +{ + partial class Activity + { + private DateTime GetUtcNow() + { + // Timer ticks need to be converted to DateTime ticks + long dateTimeTicksDiff = (long)((Stopwatch.GetTimestamp() - syncStopwatchTicks) * 10000000L / + (double)Stopwatch.Frequency); + + // DateTime.AddSeconds (or Milliseconds) rounds value to 1 ms, use AddTicks to prevent it + return syncUtcNow.AddTicks(dateTimeTicksDiff); + } + + private static void Sync() + { + // wait for DateTime.UtcNow update to the next granular value + Thread.Sleep(1); + syncStopwatchTicks = Stopwatch.GetTimestamp(); + syncUtcNow = DateTime.UtcNow; + } + + private static DateTime syncUtcNow; + private static long syncStopwatchTicks; + + // sync DateTime and Stopwatch ticks every 2 hours + private static Timer syncTimeUpdater = new Timer(s => { Sync(); }, null, 0, 7200000); + } +} \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs index 6342582d2841..35f7083e301e 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs @@ -303,7 +303,9 @@ public Activity Start() } if (StartTimeUtc == default(DateTime)) - StartTimeUtc = DateTime.UtcNow; + { + StartTimeUtc = GetUtcNow(); + } Id = GenerateId(); Current = this; @@ -331,7 +333,9 @@ public void Stop() isFinished = true; if (Duration == TimeSpan.Zero) - SetEndTime(DateTime.UtcNow); + { + SetEndTime(GetUtcNow()); + } Current = Parent; } diff --git a/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs b/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs new file mode 100644 index 000000000000..feb17e2f13cd --- /dev/null +++ b/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs @@ -0,0 +1,24 @@ +using System.Threading; +using Xunit; + +namespace System.Diagnostics.Tests +{ + public class ActivityDateTimeTests + { + [Fact] + public void StartStopReturnsPreciseDuration() + { + var activity = new Activity("test"); + + var sw = Stopwatch.StartNew(); + + activity.Start(); + SpinWait.SpinUntil(() => sw.ElapsedMilliseconds > 1, 3); + activity.Stop(); + + sw.Stop(); + + Assert.True(activity.Duration.TotalMilliseconds > 1 && activity.Duration.TotalMilliseconds <= sw.ElapsedMilliseconds); + } + } +} \ No newline at end of file diff --git a/src/System.Diagnostics.DiagnosticSource/tests/System.Diagnostics.DiagnosticSource.Tests.csproj b/src/System.Diagnostics.DiagnosticSource/tests/System.Diagnostics.DiagnosticSource.Tests.csproj index 10c25899418c..b02dba964f12 100644 --- a/src/System.Diagnostics.DiagnosticSource/tests/System.Diagnostics.DiagnosticSource.Tests.csproj +++ b/src/System.Diagnostics.DiagnosticSource/tests/System.Diagnostics.DiagnosticSource.Tests.csproj @@ -31,6 +31,7 @@ + \ No newline at end of file From e56da3d109425fa272535e1ca36efa97375bb700 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Date: Wed, 19 Apr 2017 21:12:50 -0700 Subject: [PATCH 248/336] =?UTF-8?q?Add=20test=20for=20failfast=20in=20even?= =?UTF-8?q?t=20of=20corrupted=20state=20exception.=20Add=20test=E2=80=A6?= =?UTF-8?q?=20(#18622)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add test for failfast in event of corrupted state exception. Add test for Assembly.Load by AssemblyName when AssemblyName.CodeBase property is set * update * update --- .../tests/System.Runtime.Tests.csproj | 1 + .../tests/System/Reflection/AssemblyTests.cs | 9 ++++ .../HandleProcessCorruptedStateExceptions.cs | 46 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/System.Runtime/tests/System/Runtime/ExceptionServices/HandleProcessCorruptedStateExceptions.cs diff --git a/src/System.Runtime/tests/System.Runtime.Tests.csproj b/src/System.Runtime/tests/System.Runtime.Tests.csproj index c92de620a04a..103b33b634ae 100644 --- a/src/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/System.Runtime/tests/System.Runtime.Tests.csproj @@ -208,6 +208,7 @@ System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs + diff --git a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs index ad7ed4b0de10..9cb1262ec270 100644 --- a/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs +++ b/src/System.Runtime/tests/System/Reflection/AssemblyTests.cs @@ -479,6 +479,15 @@ public void GetFiles() Assert.Equal(typeof(AssemblyTests).Assembly.GetFiles()[0].Name, typeof(AssemblyTests).Assembly.Location); } + [Fact] + public static void Load_AssemblyNameWithCodeBase() + { + AssemblyName an = typeof(AssemblyTests).Assembly.GetName(); + Assert.NotNull(an.CodeBase); + Assembly a = Assembly.Load(an); + Assert.Equal(a, typeof(AssemblyTests).Assembly); + } + // Helpers private static Assembly GetGetCallingAssembly() { diff --git a/src/System.Runtime/tests/System/Runtime/ExceptionServices/HandleProcessCorruptedStateExceptions.cs b/src/System.Runtime/tests/System/Runtime/ExceptionServices/HandleProcessCorruptedStateExceptions.cs new file mode 100644 index 000000000000..8b7e86b7afe6 --- /dev/null +++ b/src/System.Runtime/tests/System/Runtime/ExceptionServices/HandleProcessCorruptedStateExceptions.cs @@ -0,0 +1,46 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics; +using System.Runtime; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using System.Threading; +using Xunit; + +namespace System.Runtime.ExceptionServices.Tests +{ + public class HandleProcessCorruptedStateExceptionsTests : RemoteExecutorTestBase + { + [DllImport("kernel32.dll")] + static extern void RaiseException(uint dwExceptionCode, uint dwExceptionFlags, uint nNumberOfArguments, IntPtr lpArguments); + + [HandleProcessCorruptedStateExceptions] + static void CauseAVInNative() + { + try + { + RaiseException(0xC0000005, 0, 0, IntPtr.Zero); + } + catch (AccessViolationException) + { + } + } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // Feature Corrupting Exceptions not present for Linux + public static void ProcessExit_Called() + { + using (Process p = RemoteInvoke(() => { CauseAVInNative(); return SuccessExitCode; }).Process) + { + p.WaitForExit(); + if (PlatformDetection.IsFullFramework) + Assert.Equal(SuccessExitCode, p.ExitCode); + else + Assert.NotEqual(SuccessExitCode, p.ExitCode); + } + } + } +} From 7b58c73bddb5246472702863f76ed68e1d2d8735 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Wed, 19 Apr 2017 21:15:30 -0700 Subject: [PATCH 249/336] Update CoreClr, CoreFx, ProjectNTfs, ProjectNTfsTestILC to preview1-25220-01, preview1-25220-01, beta-25220-00, beta-25220-00, respectively (#18645) --- dependencies.props | 18 +++++++++--------- external/test-runtime/optional.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dependencies.props b/dependencies.props index 6765709a773e..830690816c25 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,23 +9,23 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - e05b24243498a5094d3e70df440adc71d2268f09 - 67378614f8524b1328d7f5767246f5831db158d3 + 3fa734080bb1f42f20d76c7d1aa135bf1671063a + 3fa734080bb1f42f20d76c7d1aa135bf1671063a 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - 37660101ab061128da926a2bfa7743e360c53aa6 - 37660101ab061128da926a2bfa7743e360c53aa6 + 3fa734080bb1f42f20d76c7d1aa135bf1671063a + 3fa734080bb1f42f20d76c7d1aa135bf1671063a 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 49e7f51419ca3710afb6a59cc5154e13f6448445 - preview1-25219-04 - preview1-25219-05 + preview1-25220-01 + preview1-25220-01 beta-25016-01 - beta-25219-00 - beta-25219-00 - 1.0.0-beta-25219-00 + beta-25220-00 + beta-25220-00 + 1.0.0-beta-25220-00 2.0.0-preview1-25219-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index f4cfb86b7e91..fc756fda75e6 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25219-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25220-00" } } } From 12610f2c698354694fb8214089819ddaf4f8e2cc Mon Sep 17 00:00:00 2001 From: Hyeongseok Oh Date: Thu, 20 Apr 2017 17:33:08 +0900 Subject: [PATCH 250/336] Fix typo --- src/System.Numerics.Vectors/tests/Vector2Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Numerics.Vectors/tests/Vector2Tests.cs b/src/System.Numerics.Vectors/tests/Vector2Tests.cs index fe5e0d54caf1..c14299100d8b 100644 --- a/src/System.Numerics.Vectors/tests/Vector2Tests.cs +++ b/src/System.Numerics.Vectors/tests/Vector2Tests.cs @@ -488,7 +488,7 @@ public void Vector2TransformNormalTest() Vector2 actual; actual = Vector2.TransformNormal(v, m); - Assert.True(MathHelper.Equal(expected, actual), "Vector2f.Tranfrom did not return the expected value."); + Assert.True(MathHelper.Equal(expected, actual), "Vector2f.Tranform did not return the expected value."); } // A test for TransformNormal (Vector2f, Matrix3x2) From 92eb49f2b96c0f66cf4a33b9948df0e8ea1f654c Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Thu, 20 Apr 2017 02:23:48 -0700 Subject: [PATCH 251/336] Update CoreClr to preview1-25220-02 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 830690816c25..c68c615a500e 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 3fa734080bb1f42f20d76c7d1aa135bf1671063a - 3fa734080bb1f42f20d76c7d1aa135bf1671063a + f80e92bed783541d30deea237f4060fc79941e81 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 3fa734080bb1f42f20d76c7d1aa135bf1671063a 3fa734080bb1f42f20d76c7d1aa135bf1671063a @@ -21,7 +21,7 @@ preview1-25220-01 - preview1-25220-01 + preview1-25220-02 beta-25016-01 beta-25220-00 beta-25220-00 From 58b8ec6c96fa29bb902055f9f0148b32f4ec8e34 Mon Sep 17 00:00:00 2001 From: Hyeongseok Oh Date: Thu, 20 Apr 2017 18:32:14 +0900 Subject: [PATCH 252/336] [x86/Linux] Change CI docker image Change CI docker image to support clang-3.9 --- cross/x86_ci_script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/x86_ci_script.sh b/cross/x86_ci_script.sh index 59e07ec5d568..16b0593a5854 100755 --- a/cross/x86_ci_script.sh +++ b/cross/x86_ci_script.sh @@ -24,7 +24,7 @@ function cross_build_native_with_docker { __currentWorkingDirectory=`pwd` # choose Docker image - __dockerImage=" hseok82/dotnet-buildtools-prereqs:ubuntu1604_cross_prereqs_v3_x86" + __dockerImage=" hseok82/dotnet-buildtools-prereqs:ubuntu-16.04-crossx86-ef0ac75-20175511035548" __dockerEnvironmentVariables="-e ROOTFS_DIR=/crossrootfs/x86" __runtimeOS="ubuntu.16.04" From 10b58d02bb2d51bf7351665cef2da38c7bf657a2 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Thu, 20 Apr 2017 05:28:20 -0700 Subject: [PATCH 253/336] Another 556 System.Runtime.Test failures down. (#18618) No more "Multidimensional arrays of rank 1 are not supported..." --- src/System.Runtime/tests/System/ArrayTests.cs | 128 ++++++++++++------ 1 file changed, 85 insertions(+), 43 deletions(-) diff --git a/src/System.Runtime/tests/System/ArrayTests.cs b/src/System.Runtime/tests/System/ArrayTests.cs index d4cba990c104..21b51eb15a1e 100644 --- a/src/System.Runtime/tests/System/ArrayTests.cs +++ b/src/System.Runtime/tests/System/ArrayTests.cs @@ -353,11 +353,14 @@ public static void BinarySearch_SZArray(T[] array, int index, int length, T v // Basic: forward SZArray BinarySearch_Array(array, index, length, value, (IComparer)comparer, expected); - // Advanced: convert SZArray to an array with non-zero lower bound - const int lowerBound = 5; - Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, lowerBound); - int lowerBoundExpected = expected < 0 ? expected - lowerBound : expected + lowerBound; - BinarySearch_Array(nonZeroLowerBoundArray, index + lowerBound, length, value, (IComparer)comparer, lowerBoundExpected); + if (s_NonZeroLowerBoundsAvailable) + { + // Advanced: convert SZArray to an array with non-zero lower bound + const int lowerBound = 5; + Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, lowerBound); + int lowerBoundExpected = expected < 0 ? expected - lowerBound : expected + lowerBound; + BinarySearch_Array(nonZeroLowerBoundArray, index + lowerBound, length, value, (IComparer)comparer, lowerBoundExpected); + } } if (index == 0 && length == array.Length) @@ -640,14 +643,17 @@ public static void Clone(Array array) public static IEnumerable Copy_Array_Reliable_TestData() { - // Array -> SZArray - Array lowerBoundArray1 = Array.CreateInstance(typeof(int), new int[] { 1 }, new int[] { 1 }); - lowerBoundArray1.SetValue(2, lowerBoundArray1.GetLowerBound(0)); - yield return new object[] { lowerBoundArray1, lowerBoundArray1.GetLowerBound(0), new int[1], 0, 1, new int[] { 2 } }; - - // SZArray -> Array - Array lowerBoundArray2 = Array.CreateInstance(typeof(int), new int[] { 1 }, new int[] { 1 }); - yield return new object[] { new int[] { 2 }, 0, lowerBoundArray2, lowerBoundArray2.GetLowerBound(0), 1, lowerBoundArray1 }; + if (s_NonZeroLowerBoundsAvailable) + { + // Array -> SZArray + Array lowerBoundArray1 = Array.CreateInstance(typeof(int), new int[] { 1 }, new int[] { 1 }); + lowerBoundArray1.SetValue(2, lowerBoundArray1.GetLowerBound(0)); + yield return new object[] { lowerBoundArray1, lowerBoundArray1.GetLowerBound(0), new int[1], 0, 1, new int[] { 2 } }; + + // SZArray -> Array + Array lowerBoundArray2 = Array.CreateInstance(typeof(int), new int[] { 1 }, new int[] { 1 }); + yield return new object[] { new int[] { 2 }, 0, lowerBoundArray2, lowerBoundArray2.GetLowerBound(0), 1, lowerBoundArray1 }; + } // int[,] -> int[,] int[,] intRank2Array = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } }; @@ -911,11 +917,14 @@ public static void Copy_SZArray(Array sourceArray, int sourceIndex, Array destin // Basic: forward SZArray Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length, expected); - // Advanced: convert SZArray to an array with non-zero lower bound - const int LowerBound = 5; - Array nonZeroSourceArray = NonZeroLowerBoundArray(sourceArray, LowerBound); - Array nonZeroDestinationArray = sourceArray == destinationArray ? nonZeroSourceArray : NonZeroLowerBoundArray(destinationArray, LowerBound); - Copy(nonZeroSourceArray, sourceIndex + LowerBound, nonZeroDestinationArray, destinationIndex + LowerBound, length, NonZeroLowerBoundArray(expected, LowerBound)); + if (s_NonZeroLowerBoundsAvailable) + { + // Advanced: convert SZArray to an array with non-zero lower bound + const int LowerBound = 5; + Array nonZeroSourceArray = NonZeroLowerBoundArray(sourceArray, LowerBound); + Array nonZeroDestinationArray = sourceArray == destinationArray ? nonZeroSourceArray : NonZeroLowerBoundArray(destinationArray, LowerBound); + Copy(nonZeroSourceArray, sourceIndex + LowerBound, nonZeroDestinationArray, destinationIndex + LowerBound, length, NonZeroLowerBoundArray(expected, LowerBound)); + } if (sourceIndex == 0 && length == sourceArray.Length) { @@ -1607,8 +1616,11 @@ public static IEnumerable GetEnumerator_TestData() yield return new object[] { new char[] { '7', '8', '9' } }; - yield return new object[] { Array.CreateInstance(typeof(int), new int[] { 3 }, new int[] { 4 }) }; - yield return new object[] { Array.CreateInstance(typeof(int), new int[] { 3, 3 }, new int[] { 4, 5 }) }; + if (s_NonZeroLowerBoundsAvailable) + { + yield return new object[] { Array.CreateInstance(typeof(int), new int[] { 3 }, new int[] { 4 }) }; + yield return new object[] { Array.CreateInstance(typeof(int), new int[] { 3, 3 }, new int[] { 4, 5 }) }; + } } [Theory] @@ -1949,10 +1961,13 @@ public static void IndexOf_SZArray(T[] array, T value, int startIndex, int co // Basic: forward SZArray IndexOf_Array(array, value, startIndex, count, expected); - // Advanced: convert SZArray to an array with non-zero lower bound - const int LowerBound = 5; - Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, LowerBound); - IndexOf_Array(nonZeroLowerBoundArray, value, startIndex + LowerBound, count, expected + LowerBound); + if (s_NonZeroLowerBoundsAvailable) + { + // Advanced: convert SZArray to an array with non-zero lower bound + const int LowerBound = 5; + Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, LowerBound); + IndexOf_Array(nonZeroLowerBoundArray, value, startIndex + LowerBound, count, expected + LowerBound); + } } [Theory] @@ -2304,10 +2319,13 @@ public static void LastIndexOf_SZArray(T[] array, T value, int startIndex, in // Basic: forward SZArray LastIndexOf_Array(array, value, startIndex, count, expected); - // Advanced: convert SZArray to an array with non-zero lower bound - const int LowerBound = 5; - Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, LowerBound); - LastIndexOf_Array(nonZeroLowerBoundArray, value, startIndex + LowerBound, count, expected + LowerBound); + if (s_NonZeroLowerBoundsAvailable) + { + // Advanced: convert SZArray to an array with non-zero lower bound + const int LowerBound = 5; + Array nonZeroLowerBoundArray = NonZeroLowerBoundArray(array, LowerBound); + LastIndexOf_Array(nonZeroLowerBoundArray, value, startIndex + LowerBound, count, expected + LowerBound); + } } [Theory] @@ -2620,9 +2638,12 @@ public static void Reverse_SZArray(Array array, int index, int length, Array exp // Basic: forward SZArray Reverse(array, index, length, expected); - // Advanced: convert SZArray to an array with non-zero lower bound - const int LowerBound = 5; - Reverse(NonZeroLowerBoundArray(array, LowerBound), index + LowerBound, length, NonZeroLowerBoundArray(expected, LowerBound)); + if (s_NonZeroLowerBoundsAvailable) + { + // Advanced: convert SZArray to an array with non-zero lower bound + const int LowerBound = 5; + Reverse(NonZeroLowerBoundArray(array, LowerBound), index + LowerBound, length, NonZeroLowerBoundArray(expected, LowerBound)); + } } public static void Reverse(Array array, int index, int length, Array expected) @@ -2657,12 +2678,14 @@ public static void Reverse_MultidimensionalArray_ThrowsRankException() [Theory] [InlineData(0)] [InlineData(-1)] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Non-zero lower-bounded arrays not supported on UapAot")] public static void Reverse_IndexLessThanLowerBound_ThrowsArgumentOutOfRangeException(int lowerBound) { AssertExtensions.Throws("index", () => Array.Reverse(NonZeroLowerBoundArray(new int[0], lowerBound), lowerBound - 1, 0)); } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Non-zero lower-bounded arrays not supported on UapAot")] public static void Reverse_IndexLessThanPositiveLowerBound_ThrowsArgumentOutOfRangeException() { AssertExtensions.Throws("index", "length", () => Array.Reverse(NonZeroLowerBoundArray(new int[0], 1), 0, 0)); @@ -3040,9 +3063,12 @@ public static void Sort_Array_Array_Invalid() Assert.Throws(() => Array.Sort(new int[10, 10], new int[10])); // Keys is multidimensional Assert.Throws(() => Array.Sort(new int[10], new int[10, 10])); // Items is multidimensional - Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); - Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); - Assert.Throws(null, () => Array.Sort(keys, items)); // Keys and items have different lower bounds + if (s_NonZeroLowerBoundsAvailable) + { + Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); + Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); + Assert.Throws(null, () => Array.Sort(keys, items)); // Keys and items have different lower bounds + } // One or more objects in keys do not implement IComparable Assert.Throws(() => Array.Sort((Array)new object[] { "1", 2, new object() }, new object[3])); @@ -3063,9 +3089,12 @@ public static void Sort_Array_Array_IComparer_Invalid() Assert.Throws(() => Array.Sort(new int[10, 10], new int[10], null)); // Keys is multidimensional Assert.Throws(() => Array.Sort(new int[10], new int[10, 10], null)); // Items is multidimensional - Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); - Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); - Assert.Throws(null, () => Array.Sort(keys, items, null)); // Keys and items have different lower bounds + if (s_NonZeroLowerBoundsAvailable) + { + Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); + Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); + Assert.Throws(null, () => Array.Sort(keys, items, null)); // Keys and items have different lower bounds + } // One or more objects in keys do not implement IComparable Assert.Throws(() => Array.Sort((Array)new object[] { "1", 2, new object() }, new object[3], null)); @@ -3086,9 +3115,12 @@ public static void Sort_Array_Array_Int_Int_Invalid() Assert.Throws(() => Array.Sort(new int[10, 10], new int[10], 0, 0)); // Keys is multidimensional Assert.Throws(() => Array.Sort(new int[10], new int[10, 10], 0, 0)); // Items is multidimensional - Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); - Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); - Assert.Throws(null, () => Array.Sort(keys, items, 0, 1)); // Keys and items have different lower bounds + if (s_NonZeroLowerBoundsAvailable) + { + Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); + Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); + Assert.Throws(null, () => Array.Sort(keys, items, 0, 1)); // Keys and items have different lower bounds + } // One or more objects in keys do not implement IComparable Assert.Throws(() => Array.Sort((Array)new object[] { "1", 2, new object() }, new object[3], 0, 3)); @@ -3125,9 +3157,12 @@ public static void Sort_Array_Array_Int_Int_IComparer_Invalid() Assert.Throws(() => Array.Sort(new int[10, 10], new int[10], 0, 0, null)); // Keys is multidimensional Assert.Throws(() => Array.Sort(new int[10], new int[10, 10], 0, 0, null)); // Items is multidimensional - Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); - Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); - Assert.Throws(null, () => Array.Sort(keys, items, 0, 1, null)); // Keys and items have different lower bounds + if (s_NonZeroLowerBoundsAvailable) + { + Array keys = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 1 }); + Array items = Array.CreateInstance(typeof(object), new int[] { 1 }, new int[] { 2 }); + Assert.Throws(null, () => Array.Sort(keys, items, 0, 1, null)); // Keys and items have different lower bounds + } // One or more objects in keys do not implement IComparable Assert.Throws(() => Array.Sort((Array)new object[] { "1", 2, new object() }, new object[3], 0, 3, null)); @@ -3614,6 +3649,13 @@ public enum Int32Enum } public enum Int64Enum : long { } + + private static readonly bool s_NonZeroLowerBoundsAvailable = +#if uapaot + false; +#else + true; +#endif } } From 1f7e3f507afa6346c2ca5e82539e889bedc3d485 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Thu, 20 Apr 2017 07:11:56 -0700 Subject: [PATCH 254/336] Update CoreFx, Standard to preview1-25220-02, preview1-25220-01, respectively --- dependencies.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.props b/dependencies.props index c68c615a500e..5438a885db18 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,24 +9,24 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 3fa734080bb1f42f20d76c7d1aa135bf1671063a + c78210408e99e503c8166a37cbc1f885261c568b f80e92bed783541d30deea237f4060fc79941e81 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 3fa734080bb1f42f20d76c7d1aa135bf1671063a 3fa734080bb1f42f20d76c7d1aa135bf1671063a 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 49e7f51419ca3710afb6a59cc5154e13f6448445 + c78210408e99e503c8166a37cbc1f885261c568b - preview1-25220-01 + preview1-25220-02 preview1-25220-02 beta-25016-01 beta-25220-00 beta-25220-00 1.0.0-beta-25220-00 - 2.0.0-preview1-25219-01 + 2.0.0-preview1-25220-01 NETStandard.Library 4.4.0-beta-25007-02 From 6cc94d33dfea93d4e3d1c83dd23fea3557d604ce Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 10:30:52 -0400 Subject: [PATCH 255/336] Fix recently added KeepAlive test on desktop The WinHTTP implementation sends Connection: "keep-alive", the desktop implementation does not. Just change the test to validate whether Connection: "close" is sent or not. --- src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs index 3bf8d3445223..714c3ebd0afc 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs @@ -241,7 +241,9 @@ public void HttpWebRequest_KeepAlive_CorrectConnectionHeaderSent(bool? keepAlive string content = body.ReadToEnd(); if (!keepAlive.HasValue || keepAlive.Value) { - Assert.Contains("\"Connection\": \"Keep-Alive\"", content, StringComparison.OrdinalIgnoreCase); + // Validate that the request doesn't contain Connection: "close", but we can't validate + // that it does contain Connection: "keep-alive", as that's optional as of HTTP 1.1. + Assert.DoesNotContain("\"Connection\": \"close\"", content, StringComparison.OrdinalIgnoreCase); } else { From 15aea82f93b6d1c2a9e1a91cdd44a85df7ddf093 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 11:45:09 -0400 Subject: [PATCH 256/336] Fix/disable several System.Net.Security tests on desktop - SslStream_StreamToStream_WriteAsync_ReadAsync_Pending_Success was hanging / timing out on desktop because it relied on Read/WriteAsync not going through the base Stream's Read/WriteAsync, which serializes the delegated calls to Begin/EndRead/Write. Desktop's implementation calls directly to Begin/EndRead/Write whereas in core (by design) we call Read/WriteAsync (which will in turn use Begin/EndRead/Write if the Async method wasn't overridden), but the VirtualNetworkStream wasn't overriding Begin/EndReadWrite to avoid the serialization, and since the test requires non-serialization, it hung. - SslStream_StreamToStream_FlushAsync_Propagated and NegotiateStream_StreamToStream_FlushAsync_Propagated both rely on FlushAsync being overridden, which it's not in desktop. - NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails fails due to a known behavioral difference from desktop for which there's already an open issue. --- src/Common/tests/Common.Tests.csproj | 3 +++ .../Net/VirtualNetwork/VirtualNetworkStream.cs | 12 ++++++++++++ .../NegotiateStreamStreamToStreamTest.cs | 2 ++ .../FunctionalTests/SslStreamStreamToStreamTest.cs | 1 + .../FunctionalTests/System.Net.Security.Tests.csproj | 3 +++ 5 files changed, 21 insertions(+) diff --git a/src/Common/tests/Common.Tests.csproj b/src/Common/tests/Common.Tests.csproj index 338fd3b9dd2e..73b3f432bd08 100644 --- a/src/Common/tests/Common.Tests.csproj +++ b/src/Common/tests/Common.Tests.csproj @@ -85,6 +85,9 @@ + + ProductionCode\Common\System\Threading\Tasks\TaskToApm.cs + diff --git a/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs b/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs index 13efa3ae507c..e04eb54ace7a 100644 --- a/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs +++ b/src/Common/tests/System/Net/VirtualNetwork/VirtualNetworkStream.cs @@ -144,5 +144,17 @@ public override Task WriteAsync(byte[] buffer, int offset, int count, Cancellati Task.FromCanceled(cancellationToken) : Task.Run(() => Write(buffer, offset, count)); } + + public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state) => + TaskToApm.Begin(ReadAsync(buffer, offset, count), callback, state); + + public override int EndRead(IAsyncResult asyncResult) => + TaskToApm.End(asyncResult); + + public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state) => + TaskToApm.Begin(WriteAsync(buffer, offset, count), callback, state); + + public override void EndWrite(IAsyncResult asyncResult) => + TaskToApm.End(asyncResult); } } diff --git a/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamStreamToStreamTest.cs b/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamStreamToStreamTest.cs index aefa64ead072..0bb787983e3b 100644 --- a/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamStreamToStreamTest.cs +++ b/src/System.Net.Security/tests/FunctionalTests/NegotiateStreamStreamToStreamTest.cs @@ -126,6 +126,7 @@ public void NegotiateStream_StreamToStream_Authentication_TargetName_Success() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, ".NET Core difference in behavior: https://github.com/dotnet/corefx/issues/5241")] public void NegotiateStream_StreamToStream_Authentication_EmptyCredentials_Fails() { string targetName = "testTargetName"; @@ -272,6 +273,7 @@ public void NegotiateStream_StreamToStream_Flush_Propagated() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Relies on FlushAsync override not available in desktop")] public void NegotiateStream_StreamToStream_FlushAsync_Propagated() { VirtualNetwork network = new VirtualNetwork(); diff --git a/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs b/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs index 0df725b8d1bb..8766b85b92b6 100644 --- a/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs +++ b/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs @@ -335,6 +335,7 @@ public void SslStream_StreamToStream_Flush_Propagated() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Relies on FlushAsync override not available in desktop")] public void SslStream_StreamToStream_FlushAsync_Propagated() { VirtualNetwork network = new VirtualNetwork(); diff --git a/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj b/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj index 7e539386a9b8..be10b63edc4a 100644 --- a/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj +++ b/src/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj @@ -83,6 +83,9 @@ Common\System\Threading\Tasks\TaskTimeoutExtensions.cs + + ProductionCode\Common\System\Threading\Tasks\TaskToApm.cs + From 03b3d6aa1e9305269d146e5698e4a4b8297611a6 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 12:03:49 -0400 Subject: [PATCH 257/336] Fix System.Net.NameResolution tests on desktop A bunch of the unit tests try to validate that sockets were correctly initialized. They do so with fakes that intercept the calls. But on desktop, the real methods were being used, bypassing that interception. I've fixed it by making the unit tests on desktop compile like core so as to use the fakes. --- .../UnitTests/Fakes/FakeExceptionDispatchInfo.cs | 13 +++++++++++++ .../System.Net.NameResolution.Unit.Tests.csproj | 5 +++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/System.Net.NameResolution/tests/UnitTests/Fakes/FakeExceptionDispatchInfo.cs diff --git a/src/System.Net.NameResolution/tests/UnitTests/Fakes/FakeExceptionDispatchInfo.cs b/src/System.Net.NameResolution/tests/UnitTests/Fakes/FakeExceptionDispatchInfo.cs new file mode 100644 index 000000000000..1b00c5f69101 --- /dev/null +++ b/src/System.Net.NameResolution/tests/UnitTests/Fakes/FakeExceptionDispatchInfo.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Runtime.ExceptionServices +{ + internal class ExceptionDispatchInfo + { + public static ExceptionDispatchInfo Capture(Exception source) => null; + public static void Throw(Exception source) => throw source; + public void Throw() => throw null; + } +} diff --git a/src/System.Net.NameResolution/tests/UnitTests/System.Net.NameResolution.Unit.Tests.csproj b/src/System.Net.NameResolution/tests/UnitTests/System.Net.NameResolution.Unit.Tests.csproj index 05806efaefb4..de7448514d4c 100644 --- a/src/System.Net.NameResolution/tests/UnitTests/System.Net.NameResolution.Unit.Tests.csproj +++ b/src/System.Net.NameResolution/tests/UnitTests/System.Net.NameResolution.Unit.Tests.csproj @@ -5,6 +5,7 @@ {239347DB-D566-48C9-9551-28AB3AD12EC3} ../../src/Resources/Strings.resx true + 0436 @@ -20,14 +21,13 @@ - + ProductionCode\System\Net\IPHostEntry.cs ProductionCode\System\Net\DNS.cs - @@ -35,6 +35,7 @@ + From 95505ca609217aba962bf7547e2857010740fe5d Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Thu, 20 Apr 2017 10:56:10 -0700 Subject: [PATCH 258/336] review: initialize start timestamp and time --- .../src/System/Diagnostics/Activity.DateTime.corefx.cs | 4 ++++ .../src/System/Diagnostics/Activity.DateTime.netfx.cs | 10 ++++++++-- .../tests/ActivityDateTimeTests.cs | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs index c485b41b7b7a..ca167d0be930 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.corefx.cs @@ -6,8 +6,12 @@ namespace System.Diagnostics { partial class Activity { + /// + /// Returns high resolution (~1 usec) current UTC DateTime. + /// private DateTime GetUtcNow() { + // .NET Core CLR gives accurate UtcNow return DateTime.UtcNow; } } diff --git a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs index d7e7ec349e2b..dade796b3863 100644 --- a/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs +++ b/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.DateTime.netfx.cs @@ -8,8 +8,14 @@ namespace System.Diagnostics { partial class Activity { + /// + /// Returns high resolution (1 DateTime tick) current UTC DateTime. + /// private DateTime GetUtcNow() { + // DateTime.UtcNow accuracyon .NET Framework is 16ms, this method + // uses combination of Stopwatch and DateTime to calculate accurate UtcNow. + // Timer ticks need to be converted to DateTime ticks long dateTimeTicksDiff = (long)((Stopwatch.GetTimestamp() - syncStopwatchTicks) * 10000000L / (double)Stopwatch.Frequency); @@ -26,8 +32,8 @@ private static void Sync() syncUtcNow = DateTime.UtcNow; } - private static DateTime syncUtcNow; - private static long syncStopwatchTicks; + private static DateTime syncUtcNow = DateTime.UtcNow; + private static long syncStopwatchTicks = Stopwatch.GetTimestamp(); // sync DateTime and Stopwatch ticks every 2 hours private static Timer syncTimeUpdater = new Timer(s => { Sync(); }, null, 0, 7200000); diff --git a/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs b/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs index feb17e2f13cd..7aee8cd0f147 100644 --- a/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs +++ b/src/System.Diagnostics.DiagnosticSource/tests/ActivityDateTimeTests.cs @@ -13,7 +13,7 @@ public void StartStopReturnsPreciseDuration() var sw = Stopwatch.StartNew(); activity.Start(); - SpinWait.SpinUntil(() => sw.ElapsedMilliseconds > 1, 3); + SpinWait.SpinUntil(() => sw.ElapsedMilliseconds > 1, 2); activity.Stop(); sw.Stop(); From 68654996af26a058144c1c634b62b9179bded0fd Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Thu, 20 Apr 2017 11:18:59 -0700 Subject: [PATCH 259/336] Address Eric Erhardt's feedback --- Documentation/project-docs/dogfooding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/project-docs/dogfooding.md b/Documentation/project-docs/dogfooding.md index 2ddef6448865..fc3589ece6d0 100644 --- a/Documentation/project-docs/dogfooding.md +++ b/Documentation/project-docs/dogfooding.md @@ -243,14 +243,14 @@ In a future update to Visual Studio, it will no longer be necessary to make this The URL scheme for the runtime is as follows: ``` -https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/$version$/dotnet-win-x64.$version$.exe +https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/$version$/dotnet-$os$-$arch$.$version$.exe https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/2.0.0-preview1-001915-00/dotnet-win-x64.2.0.0-preview1-001915-00.exe ``` The URL scheme for the SDK & CLI is as follows: ``` -https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$version$/dotnet-dev-win-x86.$version$.exe +https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$version$/dotnet-dev-$os$-$arch.$version$.exe https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0-preview1-005791/dotnet-dev-win-x86.2.0.0-preview1-005791.exe ``` From dca66a0210d4ea1e487700ab6ad06340a70e9313 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Thu, 20 Apr 2017 11:20:55 -0700 Subject: [PATCH 260/336] =?UTF-8?q?Address=20Alexander=20K=C3=B6plinger's?= =?UTF-8?q?=20feedback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation/project-docs/dogfooding.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Documentation/project-docs/dogfooding.md b/Documentation/project-docs/dogfooding.md index fc3589ece6d0..016d4cea0a25 100644 --- a/Documentation/project-docs/dogfooding.md +++ b/Documentation/project-docs/dogfooding.md @@ -243,15 +243,13 @@ In a future update to Visual Studio, it will no longer be necessary to make this The URL scheme for the runtime is as follows: ``` -https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/$version$/dotnet-$os$-$arch$.$version$.exe -https://dotnetcli.blob.core.windows.net/dotnet/master/Installers/2.0.0-preview1-001915-00/dotnet-win-x64.2.0.0-preview1-001915-00.exe +https://dotnetcli.azureedge.net/dotnet/master/Installers/$version$/dotnet-$os$-$arch$.$version$.exe +https://dotnetcli.azureedge.net/dotnet/master/Installers/2.0.0-preview1-001915-00/dotnet-win-x64.2.0.0-preview1-001915-00.exe ``` The URL scheme for the SDK & CLI is as follows: ``` -https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$version$/dotnet-dev-$os$-$arch.$version$.exe -https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0-preview1-005791/dotnet-dev-win-x86.2.0.0-preview1-005791.exe +https://dotnetcli.azureedge.net/dotnet/Sdk/$version$/dotnet-dev-$os$-$arch.$version$.exe +https://dotnetcli.azureedge.net/dotnet/Sdk/2.0.0-preview1-005791/dotnet-dev-win-x86.2.0.0-preview1-005791.exe ``` - - From 39f206f6aafacde948d4b1494a16fd55a4cde9d0 Mon Sep 17 00:00:00 2001 From: Matt Connew Date: Thu, 20 Apr 2017 11:23:05 -0700 Subject: [PATCH 261/336] Move XmlSerializer perf tests into own project with correct naming --- .../Performance/Configurations.props | 9 ++++++ ...Xml.XmlSerializer.Performance.Tests.csproj | 29 +++++++++++++++++++ .../System.Xml.XmlSerializer.Tests.csproj | 2 -- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/System.Private.Xml/tests/XmlSerializer/Performance/Configurations.props create mode 100644 src/System.Private.Xml/tests/XmlSerializer/Performance/System.Xml.XmlSerializer.Performance.Tests.csproj diff --git a/src/System.Private.Xml/tests/XmlSerializer/Performance/Configurations.props b/src/System.Private.Xml/tests/XmlSerializer/Performance/Configurations.props new file mode 100644 index 000000000000..77a4b65bc94a --- /dev/null +++ b/src/System.Private.Xml/tests/XmlSerializer/Performance/Configurations.props @@ -0,0 +1,9 @@ + + + + + netstandard; + netcoreapp; + + + \ No newline at end of file diff --git a/src/System.Private.Xml/tests/XmlSerializer/Performance/System.Xml.XmlSerializer.Performance.Tests.csproj b/src/System.Private.Xml/tests/XmlSerializer/Performance/System.Xml.XmlSerializer.Performance.Tests.csproj new file mode 100644 index 000000000000..3034650f4d75 --- /dev/null +++ b/src/System.Private.Xml/tests/XmlSerializer/Performance/System.Xml.XmlSerializer.Performance.Tests.csproj @@ -0,0 +1,29 @@ + + + + + Properties + true + {9891F9AC-9A0A-47DF-8D96-92B21AFC3B93} + + + + + + + + + + + + CommonTest\System\PlatformDetection.cs + + + + + {69e46a6f-9966-45a5-8945-2559fe337827} + PerfRunner + + + + \ No newline at end of file diff --git a/src/System.Private.Xml/tests/XmlSerializer/System.Xml.XmlSerializer.Tests.csproj b/src/System.Private.Xml/tests/XmlSerializer/System.Xml.XmlSerializer.Tests.csproj index 4fc69e41a3b9..e5db808ca918 100644 --- a/src/System.Private.Xml/tests/XmlSerializer/System.Xml.XmlSerializer.Tests.csproj +++ b/src/System.Private.Xml/tests/XmlSerializer/System.Xml.XmlSerializer.Tests.csproj @@ -12,9 +12,7 @@ - - CommonTest\System\PlatformDetection.cs From 5b525f2a900f7fc7a61b3f9578b8109254520ff1 Mon Sep 17 00:00:00 2001 From: sepidehMS Date: Thu, 20 Apr 2017 11:45:35 -0700 Subject: [PATCH 262/336] Disable Xml quirk test on NetFx --- .../tests/XmlSchema/XmlSchemaValidatorApi/ValidateElement.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Private.Xml/tests/XmlSchema/XmlSchemaValidatorApi/ValidateElement.cs b/src/System.Private.Xml/tests/XmlSchema/XmlSchemaValidatorApi/ValidateElement.cs index fb47e7b2af14..99e42076344d 100644 --- a/src/System.Private.Xml/tests/XmlSchema/XmlSchemaValidatorApi/ValidateElement.cs +++ b/src/System.Private.Xml/tests/XmlSchema/XmlSchemaValidatorApi/ValidateElement.cs @@ -457,7 +457,7 @@ public void VerifyThatSubstitutionGroupMembersAreResolvedAndAddedToTheList() return; } - //Dev10_40497 + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "This checks a quirked behavior and Full Framework always gets old behavior as Xunit runner always targets 4.5.2 TFM ")] [Fact] public void StringPassedToValidateEndElementDoesNotSatisfyIdentityConstraints() { From 82f831648992db871cf8c75665914204d8f5c887 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Thu, 20 Apr 2017 11:51:50 -0700 Subject: [PATCH 263/336] Update CoreClr to preview1-25220-03 (#18675) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 5438a885db18..f0d8aa612599 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> c78210408e99e503c8166a37cbc1f885261c568b - f80e92bed783541d30deea237f4060fc79941e81 + fd7dffd304d150f1bd09712af13c648e0c099b9c 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 3fa734080bb1f42f20d76c7d1aa135bf1671063a 3fa734080bb1f42f20d76c7d1aa135bf1671063a @@ -21,7 +21,7 @@ preview1-25220-02 - preview1-25220-02 + preview1-25220-03 beta-25016-01 beta-25220-00 beta-25220-00 From b8bdb0145af05568e1dbb2910548ea95d915d6b5 Mon Sep 17 00:00:00 2001 From: Mandar Sahasrabuddhe Date: Fri, 21 Apr 2017 00:58:55 +0530 Subject: [PATCH 264/336] Issue #18572 Add ReadonlySpan CopyTo test (#18638) * Issue #18572 Add ReadonlySpan CopyTo test * Issue #18572 Fixed missed use of ReadOnlySpan --- .../tests/ReadOnlySpan/CopyTo.cs | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/System.Memory/tests/ReadOnlySpan/CopyTo.cs b/src/System.Memory/tests/ReadOnlySpan/CopyTo.cs index 0e3dbbc0d7b4..92036a72c3ea 100644 --- a/src/System.Memory/tests/ReadOnlySpan/CopyTo.cs +++ b/src/System.Memory/tests/ReadOnlySpan/CopyTo.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Runtime.CompilerServices; using Xunit; namespace System.SpanTests @@ -121,5 +122,68 @@ public static void Overlapping2() int[] expected = { 90, 92, 93, 94, 95, 96, 97, 97 }; Assert.Equal(expected, a); } + + // This test case tests the Span.CopyTo method for large buffers of size 4GB or more. In the fast path, + // the CopyTo method performs copy in chunks of size 4GB (uint.MaxValue) with final iteration copying + // the residual chunk of size (bufferSize % 4GB). The inputs sizes to this method, 4GB and 4GB+256B, + // test the two size selection paths in CoptyTo method - memory size that is multiple of 4GB or, + // a multiple of 4GB + some more size. + [Theory] + [OuterLoop] + [PlatformSpecific(TestPlatforms.Windows | TestPlatforms.OSX)] + [InlineData(4L * 1024L * 1024L * 1024L)] + [InlineData((4L * 1024L * 1024L * 1024L) + 256)] + public static void CopyToLargeSizeTest(long bufferSize) + { + // If this test is run in a 32-bit process, the large allocation will fail. + if (Unsafe.SizeOf() != sizeof(long)) + { + return; + } + + int GuidCount = (int)(bufferSize / Unsafe.SizeOf()); + bool allocatedFirst = false; + bool allocatedSecond = false; + IntPtr memBlockFirst = IntPtr.Zero; + IntPtr memBlockSecond = IntPtr.Zero; + + unsafe + { + try + { + allocatedFirst = AllocationHelper.TryAllocNative((IntPtr)bufferSize, out memBlockFirst); + allocatedSecond = AllocationHelper.TryAllocNative((IntPtr)bufferSize, out memBlockSecond); + + if (allocatedFirst && allocatedSecond) + { + ref Guid memoryFirst = ref Unsafe.AsRef(memBlockFirst.ToPointer()); + var spanFirst = new ReadOnlySpan(memBlockFirst.ToPointer(), GuidCount); + + ref Guid memorySecond = ref Unsafe.AsRef(memBlockSecond.ToPointer()); + var spanSecond = new Span(memBlockSecond.ToPointer(), GuidCount); + + Guid theGuid = Guid.Parse("900DBAD9-00DB-AD90-00DB-AD900DBADBAD"); + for (int count = 0; count < GuidCount; ++count) + { + Unsafe.Add(ref memoryFirst, count) = theGuid; + } + + spanFirst.CopyTo(spanSecond); + + for (int count = 0; count < GuidCount; ++count) + { + var guidfirst = Unsafe.Add(ref memoryFirst, count); + var guidSecond = Unsafe.Add(ref memorySecond, count); + Assert.Equal(guidfirst, guidSecond); + } + } + } + finally + { + if (allocatedFirst) AllocationHelper.ReleaseNative(ref memBlockFirst); + if (allocatedSecond) AllocationHelper.ReleaseNative(ref memBlockSecond); + } + } + } } } From 82a26c8d9f2065a5f4e91c6b09549edcbf1ae625 Mon Sep 17 00:00:00 2001 From: Julien Couvreur Date: Thu, 20 Apr 2017 13:44:14 -0700 Subject: [PATCH 265/336] Adding type-forwards for ValueTuple to desktop 4.7 (#18519) --- external/netfx/Configurations.props | 3 ++- external/netfx/netfx.depproj | 5 +++-- src/System.ValueTuple/ref/Configurations.props | 3 ++- src/System.ValueTuple/ref/System.ValueTuple.csproj | 10 +++++----- src/System.ValueTuple/src/Configurations.props | 1 + src/System.ValueTuple/src/System.ValueTuple.csproj | 10 +++++++--- src/Tools/GenerateProps/targetgroups.props | 7 +++++++ 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/external/netfx/Configurations.props b/external/netfx/Configurations.props index 166062996fb4..47bdffcb280b 100644 --- a/external/netfx/Configurations.props +++ b/external/netfx/Configurations.props @@ -9,9 +9,10 @@ net461; net462; net463; + net47; netfx; netcoreapp; uap; - \ No newline at end of file + diff --git a/external/netfx/netfx.depproj b/external/netfx/netfx.depproj index db115c32120a..db71e0bce907 100644 --- a/external/netfx/netfx.depproj +++ b/external/netfx/netfx.depproj @@ -19,7 +19,8 @@ - 1.0.1 + 1.0.1 + 1.0.0-prerelease @@ -33,4 +34,4 @@ - \ No newline at end of file + diff --git a/src/System.ValueTuple/ref/Configurations.props b/src/System.ValueTuple/ref/Configurations.props index e67ba19adf50..c1545db6caea 100644 --- a/src/System.ValueTuple/ref/Configurations.props +++ b/src/System.ValueTuple/ref/Configurations.props @@ -4,6 +4,7 @@ portable_net40+sl4+win8+wp8; netfx; + net47; $(PackageConfigurations); @@ -11,4 +12,4 @@ uap; - \ No newline at end of file + diff --git a/src/System.ValueTuple/ref/System.ValueTuple.csproj b/src/System.ValueTuple/ref/System.ValueTuple.csproj index ec922a68ce5c..fd405598a573 100644 --- a/src/System.ValueTuple/ref/System.ValueTuple.csproj +++ b/src/System.ValueTuple/ref/System.ValueTuple.csproj @@ -9,14 +9,14 @@ - - + + - + @@ -27,13 +27,13 @@ Common\System\Reflection\AssemblyMetadataAttribute.cs - + - + diff --git a/src/System.ValueTuple/src/Configurations.props b/src/System.ValueTuple/src/Configurations.props index 2dd59f63f9c5..2081e91679b7 100644 --- a/src/System.ValueTuple/src/Configurations.props +++ b/src/System.ValueTuple/src/Configurations.props @@ -5,6 +5,7 @@ portable_net40+sl4+win8+wp8; netstandard1.0; netfx; + net47; $(PackageConfigurations); diff --git a/src/System.ValueTuple/src/System.ValueTuple.csproj b/src/System.ValueTuple/src/System.ValueTuple.csproj index e625f88b3ee4..85de8ed7b133 100644 --- a/src/System.ValueTuple/src/System.ValueTuple.csproj +++ b/src/System.ValueTuple/src/System.ValueTuple.csproj @@ -5,14 +5,18 @@ {4C2655DB-BD9E-4C86-83A6-744ECDDBDF29} $(OutputPath)$(MSBuildProjectName).xml - true + true false + + false + + @@ -39,7 +43,7 @@ Common\System\Reflection\AssemblyMetadataAttribute.cs - + @@ -51,4 +55,4 @@ - \ No newline at end of file + diff --git a/src/Tools/GenerateProps/targetgroups.props b/src/Tools/GenerateProps/targetgroups.props index 282619e045a3..e9367be9869e 100644 --- a/src/Tools/GenerateProps/targetgroups.props +++ b/src/Tools/GenerateProps/targetgroups.props @@ -184,6 +184,13 @@ net462 netstandard2.0 + + Microsoft.TargetingPack.NETFramework.v4.7 + .NETFramework,Version=v4.7 + net47 + net462 + netstandard2.0 + Microsoft.TargetingPack.NETFramework.v4.6.1 .NETFramework,Version=v4.6.1 From c70ee2b67879452eb83d140fe55121f392c0e63f Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 20 Apr 2017 14:00:17 -0700 Subject: [PATCH 266/336] update DigestMethod to SHA256 --- .../Security/Cryptography/Xml/Reference.cs | 8 +-- .../Security/Cryptography/Xml/SignedXml.cs | 2 +- .../tests/ReferenceTest.cs | 5 +- .../tests/SignedXmlTest.cs | 50 +++++++++++++++++++ 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs index 1b4146202ddf..3dd70c1f5ffe 100644 --- a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs +++ b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs @@ -38,7 +38,7 @@ public Reference() _refTarget = null; _refTargetType = ReferenceTargetType.UriReference; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA1Url; + _digestMethod = SignedXml.XmlDsigSHA256Url; } public Reference(Stream stream) @@ -47,7 +47,7 @@ public Reference(Stream stream) _refTarget = stream; _refTargetType = ReferenceTargetType.Stream; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA1Url; + _digestMethod = SignedXml.XmlDsigSHA256Url; } public Reference(string uri) @@ -57,7 +57,7 @@ public Reference(string uri) _uri = uri; _refTargetType = ReferenceTargetType.UriReference; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA1Url; + _digestMethod = SignedXml.XmlDsigSHA256Url; } internal Reference(XmlElement element) @@ -66,7 +66,7 @@ internal Reference(XmlElement element) _refTarget = element; _refTargetType = ReferenceTargetType.XmlElement; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA1Url; + _digestMethod = SignedXml.XmlDsigSHA256Url; } // diff --git a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs index 9c743bb09288..37e55761174b 100644 --- a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs +++ b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs @@ -911,7 +911,7 @@ private void BuildDigestedReferences() { // If no DigestMethod has yet been set, default it to sha1 if (reference.DigestMethod == null) - reference.DigestMethod = XmlDsigSHA1Url; + reference.DigestMethod = XmlDsigSHA256Url; SignedXmlDebugLog.LogSigningReference(this, reference); diff --git a/src/System.Security.Cryptography.Xml/tests/ReferenceTest.cs b/src/System.Security.Cryptography.Xml/tests/ReferenceTest.cs index e1fafbc5b990..006e4bd3bda9 100644 --- a/src/System.Security.Cryptography.Xml/tests/ReferenceTest.cs +++ b/src/System.Security.Cryptography.Xml/tests/ReferenceTest.cs @@ -43,7 +43,7 @@ public void Ctor() public void Ctor_Uri(string uri) { Reference reference = new Reference(uri); - Assert.Equal("http://www.w3.org/2000/09/xmldsig#sha1", reference.DigestMethod); + Assert.Equal("http://www.w3.org/2001/04/xmlenc#sha256", reference.DigestMethod); Assert.Null(reference.DigestValue); Assert.Null(reference.Id); Assert.Null(reference.Type); @@ -61,7 +61,7 @@ public void Ctor_Stream(string data) using (MemoryStream memoryStream = data != null ? new MemoryStream(Encoding.UTF8.GetBytes(data)) : null) { Reference reference = new Reference(memoryStream); - Assert.Equal("http://www.w3.org/2000/09/xmldsig#sha1", reference.DigestMethod); + Assert.Equal("http://www.w3.org/2001/04/xmlenc#sha256", reference.DigestMethod); Assert.Null(reference.DigestValue); Assert.Null(reference.Id); Assert.Null(reference.Type); @@ -187,6 +187,7 @@ public void AddAllTransforms() Reference reference = new Reference(); // adding an empty hash value byte[] hash = new byte[20]; + reference.DigestMethod = SignedXml.XmlDsigSHA1Url; reference.DigestValue = hash; XmlElement xel = reference.GetXml(); // this is the minimal Reference (DigestValue)! diff --git a/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs b/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs index d04ad9cdf592..e6b9f5b4b36f 100644 --- a/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs +++ b/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs @@ -15,6 +15,7 @@ using System.Security.Cryptography.X509Certificates; using System.Text; using System.Xml; +using System.Xml.XPath; using Xunit; namespace System.Security.Cryptography.Xml.Tests @@ -660,6 +661,7 @@ public void DigestValue_CRLF() signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl; Reference reference = new Reference(); + reference.DigestMethod = SignedXml.XmlDsigSHA1Url; reference.Uri = ""; XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); @@ -717,6 +719,7 @@ public void DigestValue_LF() signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl; Reference reference = new Reference(); + reference.DigestMethod = SignedXml.XmlDsigSHA1Url; reference.Uri = ""; XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); @@ -956,6 +959,7 @@ static XmlDocument CreateSignedXml(X509Certificate2 cert, string canonicalizatio signedXml.SignedInfo.CanonicalizationMethod = canonicalizationMethod; Reference reference = new Reference(); + reference.DigestMethod = SignedXml.XmlDsigSHA1Url; reference.Uri = ""; XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); @@ -1543,5 +1547,51 @@ public void VerifyHMAC_HMACOutputLength_Invalid() SignedXml sign = GetSignedXml(xml); Assert.Throws(() => sign.CheckSignature(new HMACSHA1(Encoding.ASCII.GetBytes("no clue")))); } + + [Fact] + public void SignedXmlUsesSha256ByDefault() + { + const string expectedSignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"; + const string expectedDigestMethod = "http://www.w3.org/2001/04/xmlenc#sha256"; + + const string xml = @" + +some text node +"; + + var doc = new XmlDocument(); + doc.PreserveWhitespace = true; + doc.LoadXml(xml); + + using (RSA key = RSA.Create()) + { + var sxml = new SignedXml(doc) + { + SigningKey = key + }; + + Assert.Null(sxml.SignedInfo.SignatureMethod); + + var reference = new Reference(); + Assert.Equal(expectedDigestMethod, reference.DigestMethod); + + reference.Uri = ""; + reference.AddTransform(new XmlDsigEnvelopedSignatureTransform()); + sxml.AddReference(reference); + sxml.ComputeSignature(); + + XmlElement dsig = sxml.GetXml(); + XPathNavigator xp = dsig.CreateNavigator(); + + XmlNamespaceManager nsMgr = new XmlNamespaceManager(xp.NameTable); + nsMgr.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#"); + + Assert.Equal(expectedSignatureMethod, + xp.SelectSingleNode("/ds:SignedInfo/ds:SignatureMethod/@Algorithm", nsMgr)?.Value); + + Assert.Equal(expectedDigestMethod, + xp.SelectSingleNode("/ds:SignedInfo/ds:Reference/ds:DigestMethod/@Algorithm", nsMgr)?.Value); + } + } } } From 5c174d9e0552ae60842888ba2a3e2f950066c280 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 20 Apr 2017 14:10:43 -0700 Subject: [PATCH 267/336] update SignatureMethod to use SHA256 --- .../src/System/Security/Cryptography/Xml/SignedXml.cs | 2 +- src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs index 37e55761174b..9a4112fe9a72 100644 --- a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs +++ b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs @@ -401,7 +401,7 @@ public void ComputeSignature() { // Default to RSA-SHA1 if (SignedInfo.SignatureMethod == null) - SignedInfo.SignatureMethod = XmlDsigRSASHA1Url; + SignedInfo.SignatureMethod = XmlDsigRSASHA256Url; } else { diff --git a/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs b/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs index e6b9f5b4b36f..a156b8cbd507 100644 --- a/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs +++ b/src/System.Security.Cryptography.Xml/tests/SignedXmlTest.cs @@ -188,7 +188,7 @@ public void AsymmetricRSASignature() signedXml.ComputeSignature(); Assert.Null(signedXml.SigningKeyName); - Assert.Equal(SignedXml.XmlDsigRSASHA1Url, signedXml.SignatureMethod); + Assert.Equal(SignedXml.XmlDsigRSASHA256Url, signedXml.SignatureMethod); Assert.Equal(key.KeySize / 8, signedXml.SignatureValue.Length); Assert.Null(signedXml.SigningKeyName); @@ -659,6 +659,7 @@ public void DigestValue_CRLF() SignedXml signedXml = new SignedXml(doc); signedXml.SigningKey = cert.PrivateKey; signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl; + signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url; Reference reference = new Reference(); reference.DigestMethod = SignedXml.XmlDsigSHA1Url; @@ -716,6 +717,7 @@ public void DigestValue_LF() X509Certificate2 cert = new X509Certificate2(_pkcs12, "mono"); SignedXml signedXml = new SignedXml(doc); signedXml.SigningKey = cert.PrivateKey; + signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url; signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl; Reference reference = new Reference(); @@ -957,6 +959,7 @@ static XmlDocument CreateSignedXml(X509Certificate2 cert, string canonicalizatio SignedXml signedXml = new SignedXml(doc); signedXml.SigningKey = cert.PrivateKey; signedXml.SignedInfo.CanonicalizationMethod = canonicalizationMethod; + signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url; Reference reference = new Reference(); reference.DigestMethod = SignedXml.XmlDsigSHA1Url; From 061142238811ca1b59d61d1683196cd5028c2c55 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Wed, 19 Apr 2017 16:08:03 -0700 Subject: [PATCH 268/336] Root cause WebClient test failures on NETFX Finished investigation failures on .NET Framework for WebClient. Added some new tests to clarify the open issues. Added new bugs #18674 and #18680. Fixes #17882. --- .../tests/WebClientTest.cs | 69 ++++++++++++------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/src/System.Net.WebClient/tests/WebClientTest.cs b/src/System.Net.WebClient/tests/WebClientTest.cs index 27fc86a15a87..1946d54d5e09 100644 --- a/src/System.Net.WebClient/tests/WebClientTest.cs +++ b/src/System.Net.WebClient/tests/WebClientTest.cs @@ -42,7 +42,6 @@ public static void Properties_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("Encoding", () => { wc.Encoding = null; }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void DownloadData_InvalidArguments_ThrowExceptions() { @@ -54,11 +53,10 @@ public static void DownloadData_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null); }); AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null, null); }); - AssertExtensions.Throws("address", () => { wc.DownloadDataTaskAsync((string)null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadDataTaskAsync((string)null); }); AssertExtensions.Throws("address", () => { wc.DownloadDataTaskAsync((Uri)null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void DownloadFile_InvalidArguments_ThrowExceptions() { @@ -70,7 +68,7 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, ""); }); AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, "", null); }); - AssertExtensions.Throws("address", () => { wc.DownloadFileTaskAsync((string)null, ""); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadFileTaskAsync((string)null, ""); }); AssertExtensions.Throws("address", () => { wc.DownloadFileTaskAsync((Uri)null, ""); }); AssertExtensions.Throws("fileName", () => { wc.DownloadFile("http://localhost", null); }); @@ -83,7 +81,6 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("fileName", () => { wc.DownloadFileTaskAsync(new Uri("http://localhost"), null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void DownloadString_InvalidArguments_ThrowExceptions() { @@ -95,11 +92,10 @@ public static void DownloadString_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null); }); AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null, null); }); - AssertExtensions.Throws("address", () => { wc.DownloadStringTaskAsync((string)null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadStringTaskAsync((string)null); }); AssertExtensions.Throws("address", () => { wc.DownloadStringTaskAsync((Uri)null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void UploadData_InvalidArguments_ThrowExceptions() { @@ -114,8 +110,8 @@ public static void UploadData_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((string)null, null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null, null); }); @@ -134,14 +130,14 @@ public static void UploadData_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("data", () => { wc.UploadDataTaskAsync(new Uri("http://localhost"), null, null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void UploadFile_InvalidArguments_ThrowExceptions() { var wc = new WebClient(); AssertExtensions.Throws("address", () => { wc.UploadFile((string)null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadFile((string)null, null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFile((string)null, null, null); }); + AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null, null); }); @@ -149,8 +145,8 @@ public static void UploadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((string)null, null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null, null); }); @@ -169,7 +165,6 @@ public static void UploadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("fileName", () => { wc.UploadFileTaskAsync(new Uri("http://localhost"), null, null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void UploadString_InvalidArguments_ThrowExceptions() { @@ -184,8 +179,8 @@ public static void UploadString_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((string)null, null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null, null); }); @@ -204,7 +199,6 @@ public static void UploadString_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("data", () => { wc.UploadStringTaskAsync(new Uri("http://localhost"), null, null); }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. [Fact] public static void UploadValues_InvalidArguments_ThrowExceptions() { @@ -219,8 +213,8 @@ public static void UploadValues_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null); }); - AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null); }); + AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null, null); }); @@ -393,19 +387,46 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server, Assert.Equal("ArbitraryValue", wc.ResponseHeaders["ArbitraryHeader"]); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // hangs on NETFX + [ActiveIssue(18680)] + [OuterLoop("Networking test talking to remote server: issue #11345")] + [Theory] + [InlineData("Connection", "close")] + [InlineData("Expect", "100-continue")] + public static async Task RequestHeaders_AddDisallowedHeaderAndSendRequest_ThrowsWebException(string headerName, string headerValue) + { + var wc = new WebClient(); + wc.Headers[headerName] = headerValue; + await Assert.ThrowsAsync(() => wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer)); + } + + [ActiveIssue(18680)] + [OuterLoop("Networking test talking to remote server: issue #11345")] + [Theory] + [InlineData("http://localhost", true)] + [InlineData("localhost", false)] + public static async Task RequestHeaders_AddHostHeaderAndSendRequest_ExpectedResult(string hostHeaderValue, bool throwsWebException) + { + var wc = new WebClient(); + wc.Headers["Host"] = hostHeaderValue; + if (throwsWebException) + { + await Assert.ThrowsAsync(() => wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer)); + } + else + { + await wc.DownloadStringTaskAsync(System.Net.Test.Common.Configuration.Http.RemoteEchoServer); + } + } + [Fact] public static async Task RequestHeaders_SpecialHeaders_RequestSucceeds() { var wc = new WebClient(); wc.Headers["Accept"] = "text/html"; - wc.Headers["Connection"] = "close"; wc.Headers["ContentType"] = "text/html; charset=utf-8"; - wc.Headers["Expect"] = "100-continue"; wc.Headers["Referer"] = "http://localhost"; wc.Headers["User-Agent"] = ".NET"; - wc.Headers["Host"] = "http://localhost"; await LoopbackServer.CreateServerAsync(async (server, url) => { @@ -667,7 +688,7 @@ public async Task UploadString_Success(Uri echoServer) Assert.Contains(ExpectedText, result); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17882")] // Difference in behavior. + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #18674")] // Difference in behavior. [OuterLoop("Networking test talking to remote server: issue #11345")] [Theory] [MemberData(nameof(EchoServers))] From cd630bc2c0375c0b34d9aa14328ed96df303cfbb Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 20 Apr 2017 15:14:18 -0700 Subject: [PATCH 269/336] Use Reference.DefaultDigestMethod instead of hard coded value --- .../src/System/Security/Cryptography/Xml/Reference.cs | 10 ++++++---- .../src/System/Security/Cryptography/Xml/SignedXml.cs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs index 3dd70c1f5ffe..a34d3d492c6c 100644 --- a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs +++ b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs @@ -15,6 +15,8 @@ namespace System.Security.Cryptography.Xml { public class Reference { + internal const string DefaultDigestMethod = SignedXml.XmlDsigSHA256Url; + private string _id; private string _uri; private string _type; @@ -38,7 +40,7 @@ public Reference() _refTarget = null; _refTargetType = ReferenceTargetType.UriReference; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA256Url; + _digestMethod = DefaultDigestMethod; } public Reference(Stream stream) @@ -47,7 +49,7 @@ public Reference(Stream stream) _refTarget = stream; _refTargetType = ReferenceTargetType.Stream; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA256Url; + _digestMethod = DefaultDigestMethod; } public Reference(string uri) @@ -57,7 +59,7 @@ public Reference(string uri) _uri = uri; _refTargetType = ReferenceTargetType.UriReference; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA256Url; + _digestMethod = DefaultDigestMethod; } internal Reference(XmlElement element) @@ -66,7 +68,7 @@ internal Reference(XmlElement element) _refTarget = element; _refTargetType = ReferenceTargetType.XmlElement; _cachedXml = null; - _digestMethod = SignedXml.XmlDsigSHA256Url; + _digestMethod = DefaultDigestMethod; } // diff --git a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs index 9a4112fe9a72..f07fae4bce71 100644 --- a/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs +++ b/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs @@ -911,7 +911,7 @@ private void BuildDigestedReferences() { // If no DigestMethod has yet been set, default it to sha1 if (reference.DigestMethod == null) - reference.DigestMethod = XmlDsigSHA256Url; + reference.DigestMethod = Reference.DefaultDigestMethod; SignedXmlDebugLog.LogSigningReference(this, reference); From a028db6095e18eba643174c7f29dff6383b717e9 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Thu, 20 Apr 2017 15:41:06 -0700 Subject: [PATCH 270/336] Address PR feedback --- .../tests/WebClientTest.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/System.Net.WebClient/tests/WebClientTest.cs b/src/System.Net.WebClient/tests/WebClientTest.cs index 1946d54d5e09..703769ecd71a 100644 --- a/src/System.Net.WebClient/tests/WebClientTest.cs +++ b/src/System.Net.WebClient/tests/WebClientTest.cs @@ -53,7 +53,7 @@ public static void DownloadData_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null); }); AssertExtensions.Throws("address", () => { wc.DownloadDataAsync((Uri)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadDataTaskAsync((string)null); }); + AssertExtensions.Throws("address", "path", () => { wc.DownloadDataTaskAsync((string)null); }); AssertExtensions.Throws("address", () => { wc.DownloadDataTaskAsync((Uri)null); }); } @@ -68,7 +68,7 @@ public static void DownloadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, ""); }); AssertExtensions.Throws("address", () => { wc.DownloadFileAsync((Uri)null, "", null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadFileTaskAsync((string)null, ""); }); + AssertExtensions.Throws("address", "path", () => { wc.DownloadFileTaskAsync((string)null, ""); }); AssertExtensions.Throws("address", () => { wc.DownloadFileTaskAsync((Uri)null, ""); }); AssertExtensions.Throws("fileName", () => { wc.DownloadFile("http://localhost", null); }); @@ -92,7 +92,7 @@ public static void DownloadString_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null); }); AssertExtensions.Throws("address", () => { wc.DownloadStringAsync((Uri)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.DownloadStringTaskAsync((string)null); }); + AssertExtensions.Throws("address", "path", () => { wc.DownloadStringTaskAsync((string)null); }); AssertExtensions.Throws("address", () => { wc.DownloadStringTaskAsync((Uri)null); }); } @@ -110,8 +110,8 @@ public static void UploadData_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadDataTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadDataTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadDataTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadDataTaskAsync((Uri)null, null, null); }); @@ -136,7 +136,7 @@ public static void UploadFile_InvalidArguments_ThrowExceptions() var wc = new WebClient(); AssertExtensions.Throws("address", () => { wc.UploadFile((string)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFile((string)null, null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadFile((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFile((Uri)null, null, null); }); @@ -145,8 +145,8 @@ public static void UploadFile_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadFileTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadFileTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadFileTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadFileTaskAsync((Uri)null, null, null); }); @@ -179,8 +179,8 @@ public static void UploadString_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadStringTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadStringTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadStringTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadStringTaskAsync((Uri)null, null, null); }); @@ -213,8 +213,8 @@ public static void UploadValues_InvalidArguments_ThrowExceptions() AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesAsync((Uri)null, null, null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null); }); - AssertExtensions.Throws(PlatformDetection.IsFullFramework ? "path" : "address", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadValuesTaskAsync((string)null, null); }); + AssertExtensions.Throws("address", "path", () => { wc.UploadValuesTaskAsync((string)null, null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null); }); AssertExtensions.Throws("address", () => { wc.UploadValuesTaskAsync((Uri)null, null, null); }); From d7fcf06543274c1af6134e8b5007cd94da90d0f5 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 14:46:31 -0700 Subject: [PATCH 271/336] Refactor framework package inclusion / validation I've moved inclusion into a target so that it can be overridden. I've also generalized validation to avoid some duplication. --- pkg/frameworkPackage.targets | 134 +++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 62 deletions(-) diff --git a/pkg/frameworkPackage.targets b/pkg/frameworkPackage.targets index a91948724608..6945d9c9a38a 100644 --- a/pkg/frameworkPackage.targets +++ b/pkg/frameworkPackage.targets @@ -1,5 +1,5 @@ - + true @@ -26,13 +26,6 @@ - - - $(RefFileTargetPath)%(File.SubFolder) - - - - <_buildRIDWithMetadata Include="@(BuildRID)"> %(Identity) $(PackageVersion) @@ -56,80 +49,97 @@ - - - - $(LibFileTargetPath)%(File.SubFolder) - - - - - - $(NativeFileTargetPath) - - + - + + + + + + + + + + + + + $(RefFileTargetPath)%(RefFile.SubFolder) + + + + + $(LibFileTargetPath)$(TargetFramework)%(LibFile.SubFolder) + - + + $(NativeFileTargetPath) + + + + + + - <_refFileExisting Include="@(File)" Condition="Exists('%(FullPath)') AND ($([System.String]::new('%(File.TargetPath)').StartsWith('ref')) OR '%(File.TargetPath)' == '$(RefFileTargetPath)')" /> - <_refFileNames Include="@(_refFileExisting -> '%(FileName)')"> - %(_refFileExisting.Identity) - - <_refFileNamesFiltered Include="@(_refFileNames)" Exclude="@(ExcludeFromClosure)" /> - <_refFilesFiltered Include="@(_refFileNamesFiltered->'%(Original)')" /> - - <_runtimeFileExisting Include="@(File)" Condition="Exists('%(FullPath)') AND ($([System.String]::new('%(File.TargetPath)').StartsWith('lib')) OR $([System.String]::new('%(File.TargetPath)').StartsWith('runtimes')) OR '%(File.TargetPath)' == '$(LibFileTargetPath)')" /> - <_runtimeFileNames Include="@(_runtimeFileExisting -> '%(FileName)')"> - %(_runtimeFileExisting.Identity) - - <_runtimeFileNamesFiltered Include="@(_runtimeFileNames)" Exclude="@(ExcludeFromClosure)" /> - <_runtimeFilesFiltered Include="@(_runtimeFileNamesFiltered->'%(Original)')" /> + + reference + + + + runtime + - - <_hasRefFiles Condition="'@(_refFilesFiltered)' != '' and '%(_refFilesFiltered.Extension)' != '._'">true - <_hasRuntimeFiles Condition="'@(_runtimeFilesFiltered)' != '' AND '%(_runtimeFilesFiltered.Extension)' != '._'">true - - - - + + + <_closureFileNames Include="@(ClosureFile->'%(FileName)')"> + %(Identity) + + <_closureFileNamesFiltered Include="@(_closureFileNames)" Exclude="@(ExcludeFromClosure)"/> + <_closureFileFiltered Include="@(_closureFileNamesFiltered->'%(Original)')"/> + - - + + - + + + + <_fileSet>%(ClosureFile.FileSet) + + <_NETStandardFile Include="$(NETStandardPackageRefPath)\*.dll" /> - - <_NETStandardFile Include="$(NETStandardPackageRefPath)\MISSING_NETSTANDARD_PACKAGE" Condition="'@(_NETStandardFile)' == ''" /> - <_NETStandardRefMissingFile Include="@(_NETStandardFile->'%(FileName)')" Exclude="@(_refFileNames)" /> - <_NETStandardRefMissingFileError Include="@(_NETStandardRefMissingFile)" Exclude="@(SuppressNETStandardMissingFile)" /> - <_NETStandardRefSuppressedMissingFile Include="@(_NETStandardRefMissingFile)" Exclude="@(_NETStandardRefMissingFileError)" /> - - <_NETStandardRuntimeMissingFile Include="@(_NETStandardFile->'%(FileName)')" Exclude="@(_runtimeFileNames)" /> - <_NETStandardRuntimeMissingFileError Include="@(_NETStandardRuntimeMissingFile)" Exclude="@(SuppressNETStandardMissingFile)" /> - <_NETStandardRuntimeSuppressedMissingFile Include="@(_NETStandardRuntimeMissingFile)" Exclude="@(_NETStandardRuntimeMissingFileError)" /> + <_NETStandardMissingFile Include="@(_NETStandardFile->'%(FileName)')" Exclude="@(ClosureFile->'%(FileName)')" /> + <_NETStandardMissingFileError Include="@(_NETStandardMissingFile)" Exclude="@(SuppressNETStandardMissingFile)" /> + <_NETStandardSuppressedMissingFile Include="@(_NETStandardMissingFile)" Exclude="@(_NETStandardMissingFileError)" /> - - - - - + + + + From 75c223a182a26d3f7638406403be011dd299f450 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 14:48:17 -0700 Subject: [PATCH 272/336] Make targetgroup net462 import netfx Previously netfx targetgroup configurations were not compatible with anything else. This was incorrect as we want to treat netfx as an alias for net461. --- src/Tools/GenerateProps/targetgroups.props | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/Tools/GenerateProps/targetgroups.props b/src/Tools/GenerateProps/targetgroups.props index e9367be9869e..664de5c6921e 100644 --- a/src/Tools/GenerateProps/targetgroups.props +++ b/src/Tools/GenerateProps/targetgroups.props @@ -32,6 +32,7 @@ netcore50 netstandard2.0 + UAP,Version=v10.1 uap10.1 @@ -39,6 +40,7 @@ uap101 netstandard + aot UAP,Version=v10.1 @@ -110,6 +112,7 @@ true netstandard1.6 + .NETStandard,Version=v2.0 netstandard2.0 @@ -129,6 +132,7 @@ netcoreapp1.0 netstandard2.0 + .NETCoreApp,Version=v2.0 netcoreapp2.0 @@ -170,11 +174,19 @@ net46 netstandard1.4 + + + Microsoft.TargetingPack.NETFramework.v4.6.1 + .NETFramework,Version=v4.6.1 + net461 + net461 + netstandard + Microsoft.TargetingPack.NETFramework.v4.6.2 .NETFramework,Version=v4.6.2 net462 - net461 + netfx netstandard1.5 @@ -191,13 +203,6 @@ net462 netstandard2.0 - - Microsoft.TargetingPack.NETFramework.v4.6.1 - .NETFramework,Version=v4.6.1 - net461 - net461 - netstandard - Windows,Version=v8.0 win8 From 0b92fb95660be61c4a2a2a5c0e2fb9f7c080e7fa Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 14:53:16 -0700 Subject: [PATCH 273/336] Preserve BuildConfiguration TFM on binplaced items I need the target framework of the selected binplace configuration for framework packages that contain multiple TFMs. --- Tools-Override/FrameworkTargeting.targets | 18 ++++++++++++++---- .../CoreFx.Tools/FindBestConfigurations.cs | 4 ++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Tools-Override/FrameworkTargeting.targets b/Tools-Override/FrameworkTargeting.targets index 1bc44b8d7c3a..19d26b80193c 100644 --- a/Tools-Override/FrameworkTargeting.targets +++ b/Tools-Override/FrameworkTargeting.targets @@ -254,8 +254,14 @@ + + + <_packageFileDir Include="@(PackageFileDir->Distinct())" /> + + <_propsFilename>$(TargetName) <_propsFilename Condition="'$(_propsFilename)' == ''">$(MSBuildProjectName) @@ -263,7 +269,7 @@ - <_BinPlaceItemName>%(PackageFileDir.ItemName) + <_BinPlaceItemName>%(_packageFileDir.ItemName) <_BinPlaceItemName Condition="'$(_BinPlaceItemName)' == ''">BinPlaceItem @@ -271,6 +277,7 @@ <_itemsToSave Include="@($(_BinPlaceItemName))"> + %(_packageFileDir.BuildConfiguration_NuGetTargetMonikerShort) @@ -278,6 +285,9 @@ <_docFiles> /$([System.String]::new('%(RecursiveDir)').TrimEnd('\').TrimEnd('/')) + <_docFiles> + %(_packageFileDir.BuildConfiguration_NuGetTargetMonikerShort) + <_itemsToSave Include="@(_docFiles)"/> @@ -290,9 +300,9 @@ - + Files="%(_packageFileDir.Identity)\$(_propsFilename).props"/> diff --git a/src/Tools/CoreFx.Tools/FindBestConfigurations.cs b/src/Tools/CoreFx.Tools/FindBestConfigurations.cs index 99ea376cd7e1..fad17109756d 100644 --- a/src/Tools/CoreFx.Tools/FindBestConfigurations.cs +++ b/src/Tools/CoreFx.Tools/FindBestConfigurations.cs @@ -56,6 +56,10 @@ public override bool Execute() // preserve the configuration that selected this bestConfigurationItem.SetMetadata("BuildConfiguration", configurationItem.ItemSpec); + foreach(var additionalProperty in buildConfiguration.GetProperties()) + { + bestConfigurationItem.SetMetadata("BuildConfiguration_" + additionalProperty.Key, additionalProperty.Value); + } bestConfigurations.Add(bestConfigurationItem); } From 1ef80c90ee5893d65ff8757728d55aa72c16a860 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 14:58:28 -0700 Subject: [PATCH 274/336] Give binplace configurations a unique props file I'll need to start including multiple configurations of the same project in a single package and differentiate on metadata. This enables that by using the unique portions of the configuration string in the filename. --- Tools-Override/FrameworkTargeting.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools-Override/FrameworkTargeting.targets b/Tools-Override/FrameworkTargeting.targets index 19d26b80193c..2a1f4d558c07 100644 --- a/Tools-Override/FrameworkTargeting.targets +++ b/Tools-Override/FrameworkTargeting.targets @@ -263,8 +263,8 @@ - <_propsFilename>$(TargetName) - <_propsFilename Condition="'$(_propsFilename)' == ''">$(MSBuildProjectName) + <_propsFilename>$(TargetName).$(TargetGroup)-$(OSGroup) + <_propsFilename Condition="'$(TargetName)' == ''">$(MSBuildProjectName).$(TargetGroup)-$(OSGroup) <_projectDirLength>$(ProjectDir.Length) From 47a02aee0db8e04515cd2940ba09dde4f06f7ce4 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 14:59:38 -0700 Subject: [PATCH 275/336] Fix BuildConfiguration of ILLink ILLink was missing BuildConfigurations which caused it to build multiple times and clash when AdditionalBuildConfigurations was specified. --- external/ILLink/Configurations.props | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 external/ILLink/Configurations.props diff --git a/external/ILLink/Configurations.props b/external/ILLink/Configurations.props new file mode 100644 index 000000000000..c398e42e8994 --- /dev/null +++ b/external/ILLink/Configurations.props @@ -0,0 +1,8 @@ + + + + + netstandard; + + + \ No newline at end of file From 3ea845166454a7e6d0d42d2c62518d48891556e9 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 15:09:19 -0700 Subject: [PATCH 276/336] Make desktop ns2.0 support package support net47 We need to support differing ref/impl per version of desktop until it adds inbox support for ns2.0. To do this I've made the netfx build also build for net462 and net47. Then I've moved the files into framework-specific folders for each TFM. For a given TFM it will prefer the files in its own folder then fallback to the previous TFM if it doesn't have that file. --- dir.props | 5 ++ dir.targets | 3 +- .../NETStandard.Library.NETFramework.pkgproj | 78 +++++++++++++++---- ...tandard.Library.NETFramework.common.props} | 0 .../NETStandard.Library.NETFramework.props | 3 + .../NETStandard.Library.NETFramework.targets | 9 ++- .../NETStandard.Library.NETFramework.props | 3 + .../NETStandard.Library.NETFramework.targets | 11 +++ .../NETStandard.Library.NETFramework.props | 3 + .../NETStandard.Library.NETFramework.targets | 11 +++ 10 files changed, 107 insertions(+), 19 deletions(-) rename pkg/NETStandard.Library.NETFramework/targets/{NETStandard.Library.NETFramework.props => NETStandard.Library.NETFramework.common.props} (100%) create mode 100644 pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.props rename pkg/NETStandard.Library.NETFramework/targets/{ => net461}/NETStandard.Library.NETFramework.targets (58%) create mode 100644 pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.props create mode 100644 pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.targets create mode 100644 pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.props create mode 100644 pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.targets diff --git a/dir.props b/dir.props index 8f1ab27f47fe..c706981ea299 100644 --- a/dir.props +++ b/dir.props @@ -148,6 +148,11 @@ $(BinDir)$(OSGroup).$(ArchGroup).$(ConfigurationGroup)/native + + + $(AdditionalBuildConfigurations);net462-$(OSGroup)-$(ConfigurationGroup)-$(ArchGroup);net47-$(OSGroup)-$(ConfigurationGroup)-$(ArchGroup) + + diff --git a/dir.targets b/dir.targets index db532763fee3..55b5663a525d 100644 --- a/dir.targets +++ b/dir.targets @@ -71,7 +71,8 @@ $(UAPPackageRefPath) $(UAPAOTPackageRuntimePath) - + $(NetFxPackageRefPath) $(NetFxPackageRuntimePath) diff --git a/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.pkgproj b/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.pkgproj index ccb31e52d0ef..a6e32a735e6c 100644 --- a/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.pkgproj +++ b/pkg/NETStandard.Library.NETFramework/NETStandard.Library.NETFramework.pkgproj @@ -1,5 +1,5 @@  - + @@ -13,17 +13,14 @@ true true - - build/$(TargetFramework)/ref - build/$(TargetFramework)/lib - - build/$(TargetFramework) + + build - - build/$(TargetFramework) + + build/%(RecursiveDir) @@ -35,8 +32,7 @@ - - + <_refFileNames Include="@(RefFile->'%(FileName)')" Condition="'%(Extension)' == '.dll'" /> <_libFileNames Include="@(LibFile->'%(FileName)')" Condition="'%(Extension)' == '.dll'" /> @@ -53,12 +49,12 @@ <_excludeShimsLib Include="@(_netFxReference);@(_libFileNames)"/> - - $(RefFileTargetPath) - - - $(LibFileTargetPath) - + + $(TargetFramework) + + + $(TargetFramework) + @@ -93,5 +89,55 @@ + + + <_closureFileByFileName Include="@(ClosureFile->'%(FileName)')"> + %(Identity) + + + + + <_closureFileNet461 Include="@(_closureFileByFileName)" Condition="'%(_closureFileByFileName.TargetFramework)' == 'net461'" /> + <_closureFileNet462 Include="@(_closureFileByFileName)" Condition="'%(_closureFileByFileName.TargetFramework)' == 'net462'" /> + <_closureFileNet462 Include="@(_closureFileNet461)" Exclude="@(_closureFileNet462)" /> + <_closureFileNet47 Include="@(_closureFileByFileName)" Condition="'%(_closureFileByFileName.TargetFramework)' == 'net47'" /> + <_closureFileNet47 Include="@(_closureFileNet462)" Exclude="@(_closureFileNet47)" /> + + + + + + %(FileSet)-net461 + + + + %(FileSet)-net462 + + + + %(FileSet)-net47 + + + + + + + + + + + build/%(RefFile.TargetFramework)/ref%(RefFile.SubFolder) + + + + + build/%(LibFile.TargetFramework)/lib%(LibFile.SubFolder) + + + diff --git a/pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.props b/pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.common.props similarity index 100% rename from pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.props rename to pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.common.props diff --git a/pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.props b/pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.props new file mode 100644 index 000000000000..e94b13d20f6b --- /dev/null +++ b/pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.props @@ -0,0 +1,3 @@ + + + diff --git a/pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.targets b/pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.targets similarity index 58% rename from pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.targets rename to pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.targets index ee5b2c377e18..307104ac66f2 100644 --- a/pkg/NETStandard.Library.NETFramework/targets/NETStandard.Library.NETFramework.targets +++ b/pkg/NETStandard.Library.NETFramework/targets/net461/NETStandard.Library.NETFramework.targets @@ -1,6 +1,8 @@ - + <_NETStandardLibraryNETFrameworkReference Include="$(MSBuildThisFileDirectory)\ref\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkReference->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + false NETStandard.Library.NETFramework @@ -8,7 +10,10 @@ false Package - + + <_NETStandardLibraryNETFrameworkLib Include="$(MSBuildThisFileDirectory)\lib\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkLib->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + false NETStandard.Library.NETFramework $(NETStandardLibraryPackageVersion) diff --git a/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.props b/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.props new file mode 100644 index 000000000000..e94b13d20f6b --- /dev/null +++ b/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.props @@ -0,0 +1,3 @@ + + + diff --git a/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.targets b/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.targets new file mode 100644 index 000000000000..a9b288c2f250 --- /dev/null +++ b/pkg/NETStandard.Library.NETFramework/targets/net462/NETStandard.Library.NETFramework.targets @@ -0,0 +1,11 @@ + + + <_NETStandardLibraryNETFrameworkReference Include="$(MSBuildThisFileDirectory)\ref\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkReference->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + + <_NETStandardLibraryNETFrameworkLib Include="$(MSBuildThisFileDirectory)\lib\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkLib->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + + + + diff --git a/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.props b/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.props new file mode 100644 index 000000000000..e94b13d20f6b --- /dev/null +++ b/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.props @@ -0,0 +1,3 @@ + + + diff --git a/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.targets b/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.targets new file mode 100644 index 000000000000..3bc8421a383c --- /dev/null +++ b/pkg/NETStandard.Library.NETFramework/targets/net47/NETStandard.Library.NETFramework.targets @@ -0,0 +1,11 @@ + + + <_NETStandardLibraryNETFrameworkReference Include="$(MSBuildThisFileDirectory)\ref\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkReference->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + + <_NETStandardLibraryNETFrameworkLib Include="$(MSBuildThisFileDirectory)\lib\*.dll" + Exclude="@(_NETStandardLibraryNETFrameworkLib->'$(MSBuildThisFileDirectory)\ref\%(FileName).dll'" /> + + + + From c6a5096077381aae1c2cbc92728dde08188d8b72 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Thu, 20 Apr 2017 15:55:17 -0700 Subject: [PATCH 277/336] Get 13 more tests passing in System.Runtime.Tests.dll (#18686) Every test using PlatformDetection for anything was failing due to a NullReferenceException in PlatformDetection's type initializer (due to Environment.GetEnvironmentVariable() returning null for everything on UWP.) Turn PlatformDetection's properties into non-latched properties to avoid this unnecessary failure multiplication. (I counted over 500 uses of PlatformDetection across the corefx test bed.) --- src/Common/tests/System/PlatformDetection.cs | 50 +++++++++++--------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/Common/tests/System/PlatformDetection.cs b/src/Common/tests/System/PlatformDetection.cs index 03ab37a4a19f..91510131492e 100644 --- a/src/Common/tests/System/PlatformDetection.cs +++ b/src/Common/tests/System/PlatformDetection.cs @@ -12,29 +12,35 @@ namespace System { public static partial class PlatformDetection { + // + // Do not use the " { get; } = " pattern here. Having all the initialization happen in the type initializer + // means that one exception anywhere means all tests using PlatformDetection fail. If you feel a value is worth latching, + // do it in a way that failures don't cascade. + // + public static bool IsFullFramework => RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework", StringComparison.OrdinalIgnoreCase); - public static bool IsWindows { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); - public static bool IsWindows7 { get; } = IsWindows && GetWindowsVersion() == 6 && GetWindowsMinorVersion() == 1; - public static bool IsWindows8x { get; } = IsWindows && GetWindowsVersion() == 6 && (GetWindowsMinorVersion() == 2 || GetWindowsMinorVersion() == 3); - public static bool IsOSX { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.OSX); - public static bool IsNetBSD { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.Create("NETBSD")); - public static bool IsOpenSUSE { get; } = IsDistroAndVersion("opensuse"); - public static bool IsUbuntu { get; } = IsDistroAndVersion("ubuntu"); - public static bool IsNotWindowsNanoServer { get; } = (!IsWindows || + public static bool IsWindows => RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + public static bool IsWindows7 => IsWindows && GetWindowsVersion() == 6 && GetWindowsMinorVersion() == 1; + public static bool IsWindows8x => IsWindows && GetWindowsVersion() == 6 && (GetWindowsMinorVersion() == 2 || GetWindowsMinorVersion() == 3); + public static bool IsOSX => RuntimeInformation.IsOSPlatform(OSPlatform.OSX); + public static bool IsNetBSD => RuntimeInformation.IsOSPlatform(OSPlatform.Create("NETBSD")); + public static bool IsOpenSUSE => IsDistroAndVersion("opensuse"); + public static bool IsUbuntu => IsDistroAndVersion("ubuntu"); + public static bool IsNotWindowsNanoServer => (!IsWindows || File.Exists(Path.Combine(Environment.GetEnvironmentVariable("windir"), "regedit.exe"))); - public static bool IsWindows10Version1607OrGreater { get; } = IsWindows && + public static bool IsWindows10Version1607OrGreater => IsWindows && GetWindowsVersion() == 10 && GetWindowsMinorVersion() == 0 && GetWindowsBuildNumber() >= 14393; - public static bool IsWindows10Version1703OrGreater { get; } = IsWindows && + public static bool IsWindows10Version1703OrGreater => IsWindows && GetWindowsVersion() == 10 && GetWindowsMinorVersion() == 0 && GetWindowsBuildNumber() >= 15063; // Windows OneCoreUAP SKU doesn't have httpapi.dll - public static bool HasHttpApi { get; } = (IsWindows && + public static bool HasHttpApi => (IsWindows && File.Exists(Path.Combine(Environment.GetEnvironmentVariable("windir"), "System32", "httpapi.dll"))); - public static bool IsNotOneCoreUAP { get; } = (!IsWindows || + public static bool IsNotOneCoreUAP => (!IsWindows || File.Exists(Path.Combine(Environment.GetEnvironmentVariable("windir"), "System32", "httpapi.dll"))); - public static int WindowsVersion { get; } = GetWindowsVersion(); + public static int WindowsVersion => GetWindowsVersion(); private static int s_isWinRT = -1; @@ -122,15 +128,15 @@ private static bool GetIsWindowsSubsystemForLinux() return false; } - public static bool IsDebian8 { get; } = IsDistroAndVersion("debian", "8"); - public static bool IsUbuntu1404 { get; } = IsDistroAndVersion("ubuntu", "14.04"); - public static bool IsUbuntu1510 { get; } = IsDistroAndVersion("ubuntu", "15.10"); - public static bool IsUbuntu1604 { get; } = IsDistroAndVersion("ubuntu", "16.04"); - public static bool IsUbuntu1610 { get; } = IsDistroAndVersion("ubuntu", "16.10"); - public static bool IsFedora24 { get; } = IsDistroAndVersion("fedora", "24"); - public static bool IsFedora25 { get; } = IsDistroAndVersion("fedora", "25"); - public static bool IsFedora26 { get; } = IsDistroAndVersion("fedora", "26"); - public static bool IsCentos7 { get; } = IsDistroAndVersion("centos", "7"); + public static bool IsDebian8 => IsDistroAndVersion("debian", "8"); + public static bool IsUbuntu1404 => IsDistroAndVersion("ubuntu", "14.04"); + public static bool IsUbuntu1510 => IsDistroAndVersion("ubuntu", "15.10"); + public static bool IsUbuntu1604 => IsDistroAndVersion("ubuntu", "16.04"); + public static bool IsUbuntu1610 => IsDistroAndVersion("ubuntu", "16.10"); + public static bool IsFedora24 => IsDistroAndVersion("fedora", "24"); + public static bool IsFedora25 => IsDistroAndVersion("fedora", "25"); + public static bool IsFedora26 => IsDistroAndVersion("fedora", "26"); + public static bool IsCentos7 => IsDistroAndVersion("centos", "7"); /// /// Get whether the OS platform matches the given Linux distro and optional version. From 419bde78859ac36b8c2d5cc108d83955a641eb8b Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 16:07:13 -0700 Subject: [PATCH 278/336] Only build shims once for UAP Previously an AllConfigurations build would build the shims twice for UAP using the exact same inputs and put them in seperate output directories. These two builds were previously racing when writing to UAPPackageRefPath. After my change to write unique file names this fixed the race but caused duplicate files to be added to the package. Fix this by making the UAPAOT configuration specific to ApiCompat. --- src/shims/ApiCompat.proj | 7 +++++++ src/shims/dir.props | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/shims/ApiCompat.proj b/src/shims/ApiCompat.proj index 67f1d46c1b0f..c7ebfdb260d2 100644 --- a/src/shims/ApiCompat.proj +++ b/src/shims/ApiCompat.proj @@ -1,5 +1,12 @@ + + + + uapaot; + + + diff --git a/src/shims/dir.props b/src/shims/dir.props index 5936acf95b43..b8f2c8d7493a 100644 --- a/src/shims/dir.props +++ b/src/shims/dir.props @@ -1,10 +1,11 @@ + + $(BuildConfigurations); netcoreapp; uap; - uapaot; netfx; From 6f9717eaa8f09ff1dd445e2407edc29ac3226845 Mon Sep 17 00:00:00 2001 From: Alex Perovich Date: Thu, 20 Apr 2017 18:11:53 -0500 Subject: [PATCH 279/336] Disable all tests for M.W32.Registry on uap (#18648) * Disable all tests for M.W32.Registry on uap These tests all need to be disabled because the implementation does nothing but throw PlatformNotSupported on uap * Don't even try to run registry tests on uap --- src/Microsoft.Win32.Registry/Microsoft.Win32.Registry.sln | 8 ++++---- src/Microsoft.Win32.Registry/tests/Configurations.props | 5 +++-- .../tests/Microsoft.Win32.Registry.Tests.csproj | 8 +++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.Win32.Registry/Microsoft.Win32.Registry.sln b/src/Microsoft.Win32.Registry/Microsoft.Win32.Registry.sln index 53f605c25bd4..122533c6375f 100644 --- a/src/Microsoft.Win32.Registry/Microsoft.Win32.Registry.sln +++ b/src/Microsoft.Win32.Registry/Microsoft.Win32.Registry.sln @@ -26,10 +26,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {20A2BA2C-5517-483F-8FFE-643441A59852}.Debug|Any CPU.ActiveCfg = netstandard-Windows_NT-Debug|Any CPU - {20A2BA2C-5517-483F-8FFE-643441A59852}.Debug|Any CPU.Build.0 = netstandard-Windows_NT-Debug|Any CPU - {20A2BA2C-5517-483F-8FFE-643441A59852}.Release|Any CPU.ActiveCfg = netstandard-Windows_NT-Release|Any CPU - {20A2BA2C-5517-483F-8FFE-643441A59852}.Release|Any CPU.Build.0 = netstandard-Windows_NT-Release|Any CPU + {20A2BA2C-5517-483F-8FFE-643441A59852}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU + {20A2BA2C-5517-483F-8FFE-643441A59852}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU + {20A2BA2C-5517-483F-8FFE-643441A59852}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU + {20A2BA2C-5517-483F-8FFE-643441A59852}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU {D3F18ACC-D327-4ABB-BA6C-E9C34A041B2F}.Debug|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU {D3F18ACC-D327-4ABB-BA6C-E9C34A041B2F}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {D3F18ACC-D327-4ABB-BA6C-E9C34A041B2F}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU diff --git a/src/Microsoft.Win32.Registry/tests/Configurations.props b/src/Microsoft.Win32.Registry/tests/Configurations.props index 249c8c18b46b..03909885449b 100644 --- a/src/Microsoft.Win32.Registry/tests/Configurations.props +++ b/src/Microsoft.Win32.Registry/tests/Configurations.props @@ -2,7 +2,8 @@ - netstandard-Windows_NT; + netcoreapp-Windows_NT; + netfx-Windows_NT; - \ No newline at end of file + diff --git a/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj b/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj index e8a4f6886ab3..bede9d7675fa 100644 --- a/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj +++ b/src/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj @@ -5,8 +5,10 @@ {20A2BA2C-5517-483F-8FFE-643441A59852} - - + + + + Common\Interop\Windows\Interop.Libraries.cs @@ -66,4 +68,4 @@ - \ No newline at end of file + From a129dcd701704ea9aad3885d8e9652b6a861894a Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 16:24:32 -0700 Subject: [PATCH 280/336] Remove UAPAOT configuration of Vectors.WinRT This library doesn't have a ref so its lib is used for both ref and lib. That's causing a problem since the library also builds for two configurations (UAP and UAP AOT) which both binplace refs to the same folder. Fix this by removing the UAPAOT configuration. It wasn't used anyway. --- .../src/Configurations.props | 1 - .../src/System.Numerics.Vectors.WindowsRuntime.csproj | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/System.Numerics.Vectors.WindowsRuntime/src/Configurations.props b/src/System.Numerics.Vectors.WindowsRuntime/src/Configurations.props index 0f1f50d3ec47..1111c322a148 100644 --- a/src/System.Numerics.Vectors.WindowsRuntime/src/Configurations.props +++ b/src/System.Numerics.Vectors.WindowsRuntime/src/Configurations.props @@ -2,7 +2,6 @@ - uapaot-Windows_NT; uap-Windows_NT; diff --git a/src/System.Numerics.Vectors.WindowsRuntime/src/System.Numerics.Vectors.WindowsRuntime.csproj b/src/System.Numerics.Vectors.WindowsRuntime/src/System.Numerics.Vectors.WindowsRuntime.csproj index 024f6e688699..8af4e356c9af 100644 --- a/src/System.Numerics.Vectors.WindowsRuntime/src/System.Numerics.Vectors.WindowsRuntime.csproj +++ b/src/System.Numerics.Vectors.WindowsRuntime/src/System.Numerics.Vectors.WindowsRuntime.csproj @@ -9,8 +9,6 @@ - - From 3769fa74e47621639015b9441286061f0b15fd5d Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Thu, 20 Apr 2017 17:21:37 -0700 Subject: [PATCH 281/336] Never use UAP-aot configuration for references I found a couple issues where we were incorrectly configuring projects that produced references as UAPAOT. I fixed these, but I'd like to make that impossible. This does that by using the uapaot configuration for reference selection. --- dir.targets | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dir.targets b/dir.targets index 55b5663a525d..feab7b5aad23 100644 --- a/dir.targets +++ b/dir.targets @@ -63,12 +63,13 @@ ILLinkTrimAssembly=true + + $(UAPPackageRefPath) + - $(UAPPackageRefPath) $(UAPPackageRuntimePath) - $(UAPPackageRefPath) $(UAPAOTPackageRuntimePath) Date: Thu, 20 Apr 2017 18:14:30 -0700 Subject: [PATCH 282/336] Update apicompat baseline files (#18583) Started copying netstandars shims for netfx under ref\netfx --- external/netfx/netfx.depproj | 35 +- src/shims/ApiCompat.proj | 8 +- ...patBaseline.netcoreapp.netfx461.ignore.txt | 6 + .../ApiCompatBaseline.netcoreapp.netfx461.txt | 10 +- .../ApiCompatBaseline.netfx.netstandard20.txt | 617 ++---------------- .../ApiCompatBaseline.uap.netstandard20.txt | 16 +- ...ApiCompatBaseline.uapaot.netstandard20.txt | 183 +----- ...ompatBaseline.uapaot.netstandard20Only.txt | 30 +- 8 files changed, 94 insertions(+), 811 deletions(-) diff --git a/external/netfx/netfx.depproj b/external/netfx/netfx.depproj index db71e0bce907..b20ddac32ca8 100644 --- a/external/netfx/netfx.depproj +++ b/external/netfx/netfx.depproj @@ -1,10 +1,12 @@  + true Reference None + $(RefPath) @@ -15,23 +17,48 @@ .NETFramework,Version=v4.6.1 net461 Microsoft.TargetingPack.NETFramework.v4.6.1 - true + $(NetFxRefPath) 1.0.1 1.0.0-prerelease + + $(NETStandardPackageVersion) + - $(RefPath) - $(NetFxRefPath) + $(RefOutputPath) - + + + + + <_NETStandardRefFolder>$(PackagesDir)$(NETStandardPackageId.ToLower())\$(NETStandardPackageVersion)\build\netstandard2.0\ref + + + <_excludeForNetFx Include="@(NetFxReference);netstandard" /> + <_netstandardShimAssemblies Include="$(_NETStandardRefFolder)\*.dll" Exclude="@(_excludeForNetFx->'$(_NETStandardRefFolder)\%(Identity).dll')" /> + + + + + + + + False + $(NETStandardPackageId) + $(NETStandardPackageVersion) + + + diff --git a/src/shims/ApiCompat.proj b/src/shims/ApiCompat.proj index 67f1d46c1b0f..2164fb850587 100644 --- a/src/shims/ApiCompat.proj +++ b/src/shims/ApiCompat.proj @@ -24,7 +24,7 @@ > $(ApiCompatArgs) -implDirs:"$(ApiCompatImplementationDirs)" - $(ApiCompatArgs) -baseline:"$(ApiCompatBaselineIgnoreFile)" + -baseline:"$(ApiCompatBaselineIgnoreFile)" 0 $(ToolHostCmd) "$(ToolsDir)ApiCompat.exe" @@ -33,7 +33,7 @@ - - - )' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.remove_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly netstandard: -MembersMustExist : Member 'System.AppContext.GetData(System.String)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.AppContext.TargetFrameworkName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.add_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.remove_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Enumerable.Prepend(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.Expression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportExplicitParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System: -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.AppContext: -TypesMustExist : Type 'System.AppContext' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections.NonGeneric: -TypesMustExist : Type 'System.Collections.ArrayList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CaseInsensitiveComparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.CollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Comparer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.DictionaryBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Hashtable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Queue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.ReadOnlyCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.SortedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Stack' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.CollectionsUtil' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Collections.Specialized: -TypesMustExist : Type 'System.Collections.Specialized.BitVector32' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.HybridDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.IOrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.ListDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameObjectCollectionBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.NameValueCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.OrderedDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringDictionary' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Collections.Specialized.StringEnumerator' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.Primitives: -TypesMustExist : Type 'System.ComponentModel.BrowsableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ComponentCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DescriptionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerCategoryAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibility' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignerSerializationVisibilityAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DesignOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DisplayNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventHandlerList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IComponent' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IContainer' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ImmutableObjectAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InitializationEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ISite' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.LocalizableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MergablePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NotifyParentPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ParenthesizePropertyNameAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ReadOnlyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshProperties' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshPropertiesAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.TypeConverter: -TypesMustExist : Type 'System.UriTypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ArrayConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.AttributeProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BaseNumberConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.BooleanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CharConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionChangeEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CollectionConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.CustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DateTimeOffsetConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DecimalConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultEventAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DefaultPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.DoubleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EnumConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.EventDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ExtenderProvidedPropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.GuidConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.HandledEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ICustomTypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IExtenderProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.IListSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.Int64Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.InvalidAsynchronousStateException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypeDescriptorContext' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ITypedList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MemberDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.MultilineStringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.NullableConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.PropertyDescriptorCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.ProvidePropertyAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.RefreshEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SByteConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.SingleConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.StringConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TimeSpanConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeConverterAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptionProviderAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeDescriptor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.TypeListConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt16Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt32Converter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ComponentModel.UInt64Converter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Console: -TypesMustExist : Type 'System.Console' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleCancelEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleColor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleKeyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleModifiers' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.ConsoleSpecialKey' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Core: -MembersMustExist : Member 'System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Enumerable.Prepend(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.Expression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportExplicitParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.FileVersionInfo: -TypesMustExist : Type 'System.Diagnostics.FileVersionInfo' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Process: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeProcessHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DataReceivedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Process' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessModuleCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessPriorityClass' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessStartInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ProcessThreadCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadPriorityLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.ThreadWaitReason' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.TextWriterTraceListener: -TypesMustExist : Type 'System.Diagnostics.DelimitedListTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TextWriterTraceListener' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.TraceSource: -TypesMustExist : Type 'System.Diagnostics.BooleanSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.DefaultTraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.EventTypeFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceLevels' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.SourceSwitch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Switch' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.Trace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventCache' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceEventType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListener' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceListenerCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSource' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Diagnostics.TraceSwitch' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Diagnostics.Tracing: -MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.add_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Diagnostics.Tracing.EventSource.remove_EventCommandExecuted(System.EventHandler)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Drawing.Primitives: -TypesMustExist : Type 'System.Drawing.Point' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.PointF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Rectangle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.RectangleF' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Size' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.SizeF' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Globalization.Calendars: -TypesMustExist : Type 'System.Globalization.ChineseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.EastAsianLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.GregorianCalendarTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HebrewCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.HijriCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JapaneseLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.JulianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.KoreanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.PersianCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.TaiwanLunisolarCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.ThaiBuddhistCalendar' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Globalization.UmAlQuraCalendar' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO: -TypesMustExist : Type 'System.IO.BufferedStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Compression.ZipFile: -TypesMustExist : Type 'System.IO.Compression.ZipFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Compression.ZipFileExtensions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Directory' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DirectoryInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.File' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.SearchOption' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.DriveInfo: -TypesMustExist : Type 'System.IO.DriveInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveNotFoundException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.DriveType' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.Primitives: -TypesMustExist : Type 'System.IO.FileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileAttributes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileShare' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.FileSystem.Watcher: -TypesMustExist : Type 'System.IO.ErrorEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.ErrorEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.FileSystemWatcher' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.NotifyFilters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.RenamedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WaitForChangedResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.WatcherChangeTypes' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.IsolatedStorage: -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.MemoryMappedFiles: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFile' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileAccess' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedFileRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.Pipes: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafePipeHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeClientStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.NamedPipeServerStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeDirection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.Pipes.PipeTransmissionMode' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.UnmanagedMemoryStream: -TypesMustExist : Type 'System.IO.UnmanagedMemoryAccessor' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.IO.UnmanagedMemoryStream' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq: -MembersMustExist : Member 'System.Linq.Enumerable.Append(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Enumerable.Prepend(System.Collections.Generic.IEnumerable, TSource)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Linq.Expressions: -MembersMustExist : Member 'System.Linq.Expressions.Expression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Linq.Expressions.LambdaExpression.Compile(System.Boolean)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.NameResolution: -TypesMustExist : Type 'System.Net.Dns' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.IPHostEntry' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Ping: -TypesMustExist : Type 'System.Net.NetworkInformation.IPStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.Ping' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.NetworkInformation.PingReply' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Security: -TypesMustExist : Type 'System.Net.Security.AuthenticatedStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.EncryptionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.LocalCertificateSelectionCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.NegotiateStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.ProtectionLevel' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.RemoteCertificateValidationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.Security.SslStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.AuthenticationException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.InvalidCredentialException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.PolicyEnforcement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ProtectionScenario' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Authentication.ExtendedProtection.ServiceNameCollection' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.WebSockets: -TypesMustExist : Type 'System.Net.WebSockets.WebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketCloseStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketError' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketMessageType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketReceiveResult' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.WebSocketState' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.WebSockets.Client: -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocket' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Net.WebSockets.ClientWebSocketOptions' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Reflection: -TypesMustExist : Type 'System.Reflection.BindingFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ICustomAttributeProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.InvalidFilterCriteriaException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberFilter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.MemberTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.ParameterModifier' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TargetException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Reflection.TypeFilter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Resources.Reader: -TypesMustExist : Type 'System.Resources.ResourceReader' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Resources.Writer: -TypesMustExist : Type 'System.Resources.ResourceWriter' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.CompilerServices.VisualC: -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvCdecl' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvFastcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvStdcall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.CallConvThiscall' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsBoxed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsByValue' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsCopyConstructed' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsExplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsImplicitlyDereferenced' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsJitIntrinsic' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsLong' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsSignUnspecifiedByte' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.IsUdtReturn' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.NativeCppClassAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.CompilerServices.RequiredAttributeAttribute' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Runtime.Serialization.Formatters: -TypesMustExist : Type 'System.NonSerializedAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.SerializableAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IDeserializationCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.IFormatterConverter' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.ISerializable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationEntry' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.Serialization.SerializationInfoEnumerator' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Claims: -TypesMustExist : Type 'System.Security.Claims.Claim' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimsPrincipal' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Claims.ClaimValueTypes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericIdentity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Principal.GenericPrincipal' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Algorithms: -TypesMustExist : Type 'System.Security.Cryptography.ECCurve' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.Create(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportExplicitParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Security.Cryptography.ECDsa.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECPoint' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Security.Cryptography.Cng: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.Win32.SafeHandles.SafeNCryptHandle..ctor(System.IntPtr, System.Runtime.InteropServices.SafeHandle)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle..ctor(System.IntPtr, System.Runtime.InteropServices.SafeHandle)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.AesCng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngAlgorithmGroup' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngExportPolicies' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyBlobFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyCreationParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyHandleOpenOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyOpenOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngKeyUsages' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngProperty' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngPropertyCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngPropertyOptions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngProvider' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngUIPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CngUIProtectionLevels' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CngAlgorithm.ECDiffieHellman.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CngAlgorithm.ECDsa.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CngKeyBlobFormat.EccFullPrivateBlob.get()' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.CngKeyBlobFormat.EccFullPublicBlob.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.DSACng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECDsaCng' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ECKeyXmlFormat' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACng' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng..ctor(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ExportExplicitParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ExportParameters(System.Boolean)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.GenerateKey(System.Security.Cryptography.ECCurve)' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Cryptography.ECDsaCng.ImportParameters(System.Security.Cryptography.ECParameters)' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.TripleDESCng' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Csp: -TypesMustExist : Type 'System.Security.Cryptography.CspKeyContainerInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspParameters' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CspProviderFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICspAsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyNumber' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.RSACryptoServiceProvider' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Encoding: -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.AsnEncodedDataEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.Oid' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.OidGroup' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Primitives: -TypesMustExist : Type 'System.Security.Cryptography.AsymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CipherMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptographicException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStream' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.CryptoStreamMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HashAlgorithmName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.HMAC' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.ICryptoTransform' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeyedHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.KeySizes' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.PaddingMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.SymmetricAlgorithm' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.X509Certificates: -TypesMustExist : Type 'Microsoft.Win32.SafeHandles.SafeX509ChainHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.OpenFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.PublicKey' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.RSACertificateExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreLocation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.StoreName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Collection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509CertificateCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Chain' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainPolicy' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatus' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ChainStatusFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ContentType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Extension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509FindType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyStorageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509KeyUsageFlags' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509NameType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationFlag' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509RevocationMode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509Store' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.Cryptography.X509Certificates.X509VerificationFlags' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Text.RegularExpressions: -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.CapNames.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.RegularExpressions.Regex.Caps.set(System.Collections.IDictionary)' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunner' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Text.RegularExpressions.RegexRunnerFactory' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.Thread: -TypesMustExist : Type 'System.Threading.ParameterizedThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStart' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStartException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadState' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadStateException' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.ThreadPool: -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.ThreadPool' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitCallback' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.WaitOrTimerCallback' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XmlDocument: -TypesMustExist : Type 'System.Xml.XmlAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlAttributeCollection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCDataSection' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlCharacterData' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlComment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDeclaration' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlDocumentFragment' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlElement' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlImplementation' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlLinkedNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNamedNodeMap' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNode' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedAction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventArgs' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeChangedEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlNodeList' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlProcessingInstruction' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlSignificantWhitespace' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlText' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XmlWhitespace' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Xml.XPath: -TypesMustExist : Type 'System.Xml.XmlNodeOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.IXPathNavigable' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlCaseOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlDataType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XmlSortOrder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathDocument' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathExpression' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathItem' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNamespaceScope' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNavigator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeIterator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathNodeType' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Xml.XPath.XPathResultType' does not exist in the implementation but it does exist in the contract. -Total Issues: 480 +Compat issues with assembly System.Security.Principal.Windows: +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinAccountReadonlyControllersSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinApplicationPackageAuthoritySid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinAnyPackageSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinCertSvcDComAccessGroup' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinCryptoOperatorsSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinDCOMUsersSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinEventLogReadersGroup' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinBuiltinIUsersSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCacheablePrincipalsGroupSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityDocumentsLibrarySid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityEnterpriseAuthenticationSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityInternetClientServerSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityInternetClientSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityMusicLibrarySid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityPicturesLibrarySid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityPrivateNetworkClientServerSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityRemovableStorageSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilitySharedUserCertificatesSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCapabilityVideosLibrarySid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinConsoleLogonSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinCreatorOwnerRightsSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinEnterpriseReadonlyControllersSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinHighLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinIUserSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinLocalLogonSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinLowLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinMediumLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinMediumPlusLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinNewEnterpriseReadonlyControllersSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinNonCacheablePrincipalsGroupSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinSystemLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinThisOrganizationCertificateSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinUntrustedLabelSid' does not exist in the implementation but it does exist in the contract. +MembersMustExist : Member 'System.Security.Principal.WellKnownSidType System.Security.Principal.WellKnownSidType.WinWriteRestrictedCodeSid' does not exist in the implementation but it does exist in the contract. +Total Issues: 48 diff --git a/src/shims/ApiCompatBaseline.uap.netstandard20.txt b/src/shims/ApiCompatBaseline.uap.netstandard20.txt index c57cb7d5741b..fcc74cf8643c 100644 --- a/src/shims/ApiCompatBaseline.uap.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.uap.netstandard20.txt @@ -1,15 +1 @@ -ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.AccessControl'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=System.DirectoryServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)'. -Compat issues with assembly System.DirectoryServices: -CannotRemoveBaseTypeOrInterface : Type 'System.DirectoryServices.ActiveDirectorySecurity' does not inherit from base type 'System.Security.AccessControl.DirectoryObjectSecurity' in the implementation but it does in the contract. -Compat issues with assembly System.IO.FileSystem.AccessControl: -TypesMustExist : Type 'System.IO.FileSystemAclExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. -Total Issues: 9 +Total Issues: 0 diff --git a/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt b/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt index cd0ee73d6d48..184c9b08190c 100644 --- a/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt +++ b/src/shims/ApiCompatBaseline.uapaot.netstandard20.txt @@ -1,185 +1,4 @@ -ApiCompat Error: 0 : Failed to find or load matching assembly 'System.IO.FileSystem.AccessControl'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'. -ApiCompat Error: 0 : Unable to resolve assembly 'Assembly(Name=System.IO.FileSystem.AccessControl, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)' referenced by the implementation assembly 'Assembly(Name=System.DirectoryServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)'. -Compat issues with assembly mscorlib: -MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.BufferedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.UnmanagedMemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptoStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.IsWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.SetWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.Runtime.InteropServices.SafeHandle)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetAvailableThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly netstandard: -MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.BufferedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.UnmanagedMemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.DeflateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.GZipStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.PipeStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.AuthenticatedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.NegotiateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.SslStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.NetworkStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptoStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.IsWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.SetWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.Runtime.InteropServices.SafeHandle)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetAvailableThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.DeflateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.GZipStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.AuthenticatedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.NegotiateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.SslStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.NetworkStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.Core: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.PipeStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.DirectoryServices: -CannotRemoveBaseTypeOrInterface : Type 'System.DirectoryServices.ActiveDirectorySecurity' does not inherit from base type 'System.Security.AccessControl.DirectoryObjectSecurity' in the implementation but it does in the contract. -Compat issues with assembly System.IO: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.BufferedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.Compression: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.DeflateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.GZipStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.FileSystem: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.FileSystem.AccessControl: -TypesMustExist : Type 'System.IO.FileSystemAclExtensions' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectoryObjectSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.DirectorySecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSecurity' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAccessRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemAuditRule' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemRights' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Security.AccessControl.FileSystemSecurity' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.IO.IsolatedStorage: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.MemoryMappedFiles: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.Pipes: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.PipeStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.IO.UnmanagedMemoryStream: -CannotRemoveBaseTypeOrInterface : Type 'System.IO.UnmanagedMemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. Compat issues with assembly System.Memory: TypesMustExist : Type 'System.ReadOnlySpan' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Span' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Net.Security: -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.AuthenticatedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.NegotiateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.SslStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.Net.Sockets: -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.NetworkStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.Runtime: -MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Security.Cryptography.Primitives: -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptoStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -Compat issues with assembly System.Text.Encoding: -MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading: -MembersMustExist : Member 'System.Threading.SynchronizationContext.IsWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.SetWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.Threading.ThreadPool: -TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.IntPtr)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.BindHandle(System.Runtime.InteropServices.SafeHandle)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetAvailableThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.GetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMaxThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.SetMinThreads(System.Int32, System.Int32)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Total Issues: 160 +Total Issues: 2 diff --git a/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt b/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt index b1677c6bb544..e42c716e47a1 100644 --- a/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt +++ b/src/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt @@ -1,32 +1,4 @@ Compat issues with assembly netstandard: -MembersMustExist : Member 'System.String.Concat(System.Object, System.Object, System.Object, System.Object, __arglist)' does not exist in the implementation but it does exist in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.BufferedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.FileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Stream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.UnmanagedMemoryStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.DeflateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Compression.GZipStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.IsolatedStorage.IsolatedStorageFileStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.MemoryMappedFiles.MemoryMappedViewStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.AnonymousPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeClientStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.NamedPipeServerStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.IO.Pipes.PipeStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.AuthenticatedStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.NegotiateStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Security.SslStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.NetworkStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -CannotRemoveBaseTypeOrInterface : Type 'System.Security.Cryptography.CryptoStream' does not inherit from base type 'System.MarshalByRefObject' in the implementation but it does in the contract. -MembersMustExist : Member 'System.Text.Encoding.BodyName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.GetEncodings()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.HeaderName.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsBrowserSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsDisplay.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.IsMailNewsSave.get()' does not exist in the implementation but it does exist in the contract. -MembersMustExist : Member 'System.Text.Encoding.WindowsCodePage.get()' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Threading.Overlapped' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Threading.RegisteredWaitHandle' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.SynchronizationContext.IsWaitNotificationRequired()' does not exist in the implementation but it does exist in the contract. @@ -49,4 +21,4 @@ MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSing MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)' does not exist in the implementation but it does exist in the contract. -Total Issues: 50 +Total Issues: 22 From affad3f4e54ead59e9416f1f837ac7ecb7ba7218 Mon Sep 17 00:00:00 2001 From: Jeremy Barton Date: Thu, 20 Apr 2017 18:39:55 -0700 Subject: [PATCH 283/336] Identify suppressed-on-netfx tests with an issue --- .../tests/AsymmetricAlgorithm/Trivial.cs | 3 +-- .../tests/KeyedHashAlgorithmTests.cs | 6 ++---- .../tests/SymmetricAlgorithm/Trivial.cs | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs index 3d1ff8f3b3e3..929a1fae8210 100644 --- a/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/AsymmetricAlgorithm/Trivial.cs @@ -42,8 +42,7 @@ public static void TestKeySize() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Throws NRE on netfx")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Throws NRE on netfx (https://github.com/dotnet/corefx/issues/18690)")] public static void ValidKeySizeUsesProperty() { using (AsymmetricAlgorithm aa = new DoesNotSetLegalKeySizesField()) diff --git a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs index bb840b2cb4a2..f3c5a589c635 100644 --- a/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs +++ b/src/System.Security.Cryptography.Primitives/tests/KeyedHashAlgorithmTests.cs @@ -49,8 +49,7 @@ public void EnsureGetKeyCopies() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Throws NRE on netfx")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Throws NRE on netfx (https://github.com/dotnet/corefx/issues/18690)")] public void EnsureDisposeFreesKey() { byte[] key = new[] { (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05, }; @@ -66,8 +65,7 @@ public void EnsureDisposeFreesKey() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Throws NRE on netfx")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Throws NRE on netfx (https://github.com/dotnet/corefx/issues/18690)")] public void SetKeyNull() { using (var keyedHash = new TestKeyedHashAlgorithm()) diff --git a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs index e7ebb2609720..eeb4ee3054c7 100644 --- a/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs +++ b/src/System.Security.Cryptography.Primitives/tests/SymmetricAlgorithm/Trivial.cs @@ -289,8 +289,7 @@ public static void SetKeySize_Uses_LegalKeySizesProperty() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, - "Throws NRE on netfx")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Throws NRE on netfx (https://github.com/dotnet/corefx/issues/18690)")] public static void SetBlockSize_Uses_LegalBlockSizesProperty() { using (SymmetricAlgorithm s = new DoesNotSetKeySizesFields()) From 1c79b3e7492d69097ff23509dd75e2babc5dd872 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Thu, 20 Apr 2017 18:56:59 -0700 Subject: [PATCH 284/336] Update CoreClr to preview1-25221-01 (#18695) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index f0d8aa612599..218a3c31aa08 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> c78210408e99e503c8166a37cbc1f885261c568b - fd7dffd304d150f1bd09712af13c648e0c099b9c + 7af24efb536516b61235ba0b2f771e82feddbb71 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 3fa734080bb1f42f20d76c7d1aa135bf1671063a 3fa734080bb1f42f20d76c7d1aa135bf1671063a @@ -21,7 +21,7 @@ preview1-25220-02 - preview1-25220-03 + preview1-25221-01 beta-25016-01 beta-25220-00 beta-25220-00 From cb3eb9927606541ba7b2591a51b02cf20ba4492c Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 22:09:37 -0400 Subject: [PATCH 285/336] Revert "Fix exception thrown from PipeStream for unexpected cancellation" This reverts commit cc279b5e3cd4f375841995e01ca5204ef6e04cee. --- src/System.IO.Pipes/src/System/IO/Error.cs | 5 +++++ .../src/System/IO/Pipes/PipeCompletionSource.cs | 5 ++--- .../tests/NamedPipeTests/NamedPipeTest.Simple.cs | 16 ++++++++-------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/System.IO.Pipes/src/System/IO/Error.cs b/src/System.IO.Pipes/src/System/IO/Error.cs index 42cef46c6ec3..91009935e795 100644 --- a/src/System.IO.Pipes/src/System/IO/Error.cs +++ b/src/System.IO.Pipes/src/System/IO/Error.cs @@ -31,5 +31,10 @@ internal static Exception GetWriteNotSupported() { return new NotSupportedException(SR.NotSupported_UnwritableStream); } + + internal static Exception GetOperationAborted() + { + return new IOException(SR.IO_OperationAborted); + } } } diff --git a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs index ad9792e6ddd9..6afcd13d2b38 100644 --- a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs +++ b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs @@ -162,9 +162,8 @@ private void CompleteCallback(int resultState) { if (_cancellationToken.CanBeCanceled && !_cancellationToken.IsCancellationRequested) { - // If this is unexpected abortion, we don't want to store _cancellationToken, - // so just generically say it's been canceled. - TrySetCanceled(); + // If this is unexpected abortion + TrySetException(Error.GetOperationAborted()); } else { diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs index a5168c66e10a..52c82401f130 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs @@ -254,7 +254,7 @@ public async Task CancelTokenOff_ServerWaitForConnectionAsyncWithOuterCancellati [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellation_Throws_OperationCanceledException() + public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellation_Throws_IOException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -263,7 +263,7 @@ public async Task CancelTokenOn_ServerWaitForConnectionAsyncWithOuterCancellatio Task waitForConnectionTask = server.WaitForConnectionAsync(cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAnyAsync(() => waitForConnectionTask); + await Assert.ThrowsAsync(() => waitForConnectionTask); } } @@ -593,7 +593,7 @@ public async Task CancelTokenOff_Server_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_OperationCanceledException() + public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -608,7 +608,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_OperationC Task serverReadToken = server.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAnyAsync(() => serverReadToken); + await Assert.ThrowsAsync(() => serverReadToken); } if (server.CanWrite) { @@ -616,7 +616,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_OperationC Task serverWriteToken = server.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAnyAsync(() => serverWriteToken); + await Assert.ThrowsAsync(() => serverWriteToken); } } } @@ -689,7 +689,7 @@ public async Task CancelTokenOff_Client_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_OperationCanceledException() + public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -703,7 +703,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_OperationC Task clientReadToken = client.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAnyAsync(() => clientReadToken); + await Assert.ThrowsAsync(() => clientReadToken); } if (client.CanWrite) { @@ -711,7 +711,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_OperationC Task clientWriteToken = client.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAnyAsync(() => clientWriteToken); + await Assert.ThrowsAsync(() => clientWriteToken); } } } From f7376954cddcc794d678e9d4f1358ab5f2406f67 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 22:13:21 -0400 Subject: [PATCH 286/336] Change pipe test behavior to match desktop --- .../tests/NamedPipeTests/NamedPipeTest.Simple.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs index 52c82401f130..ad72a7826333 100644 --- a/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs +++ b/src/System.IO.Pipes/tests/NamedPipeTests/NamedPipeTest.Simple.cs @@ -593,7 +593,7 @@ public async Task CancelTokenOff_Server_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOException() + public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_OperationCanceledException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -608,7 +608,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOExceptio Task serverReadToken = server.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => serverReadToken); + await Assert.ThrowsAnyAsync(() => serverReadToken); } if (server.CanWrite) { @@ -616,7 +616,7 @@ public async Task CancelTokenOn_Server_ReadWriteCancelledToken_Throws_IOExceptio Task serverWriteToken = server.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(server.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => serverWriteToken); + await Assert.ThrowsAnyAsync(() => serverWriteToken); } } } @@ -689,7 +689,7 @@ public async Task CancelTokenOff_Client_ReadWriteCancelledToken_Throws_Operation [Fact] [PlatformSpecific(TestPlatforms.Windows)] // P/Invoking to Win32 functions - public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOException() + public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_OperationCanceledException() { using (NamedPipePair pair = CreateNamedPipePair()) { @@ -703,7 +703,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOExceptio Task clientReadToken = client.ReadAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => clientReadToken); + await Assert.ThrowsAnyAsync(() => clientReadToken); } if (client.CanWrite) { @@ -711,7 +711,7 @@ public async Task CancelTokenOn_Client_ReadWriteCancelledToken_Throws_IOExceptio Task clientWriteToken = client.WriteAsync(buffer, 0, buffer.Length, cts.Token); Assert.True(Interop.CancelIoEx(client.SafePipeHandle), "Outer cancellation failed"); - await Assert.ThrowsAsync(() => clientWriteToken); + await Assert.ThrowsAnyAsync(() => clientWriteToken); } } } From b9953dee78b5ef3002c4b2709b28fbe30b8dfe5f Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 20 Apr 2017 22:19:06 -0400 Subject: [PATCH 287/336] Fix exceptional behavior of unexpected pipe cancellation in core to match desktop --- .../src/System/IO/Pipes/ConnectionCompletionSource.cs | 2 ++ .../src/System/IO/Pipes/PipeCompletionSource.cs | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/System.IO.Pipes/src/System/IO/Pipes/ConnectionCompletionSource.cs b/src/System.IO.Pipes/src/System/IO/Pipes/ConnectionCompletionSource.cs index cdda0546dd2b..2966835eafea 100644 --- a/src/System.IO.Pipes/src/System/IO/Pipes/ConnectionCompletionSource.cs +++ b/src/System.IO.Pipes/src/System/IO/Pipes/ConnectionCompletionSource.cs @@ -38,6 +38,8 @@ protected override void HandleError(int errorCode) { TrySetException(Win32Marshal.GetExceptionForWin32Error(errorCode)); } + + protected override void HandleUnexpectedCancellation() => TrySetException(Error.GetOperationAborted()); } internal struct VoidResult { } diff --git a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs index 6afcd13d2b38..7796871facc7 100644 --- a/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs +++ b/src/System.IO.Pipes/src/System/IO/Pipes/PipeCompletionSource.cs @@ -150,6 +150,8 @@ private void Cancel() } } + protected virtual void HandleUnexpectedCancellation() => TrySetCanceled(); + private void CompleteCallback(int resultState) { Debug.Assert(resultState == ResultSuccess || resultState == ResultError, "Unexpected result state " + resultState); @@ -162,8 +164,7 @@ private void CompleteCallback(int resultState) { if (_cancellationToken.CanBeCanceled && !_cancellationToken.IsCancellationRequested) { - // If this is unexpected abortion - TrySetException(Error.GetOperationAborted()); + HandleUnexpectedCancellation(); } else { From c2d98347e4a0cbd5d4fe497cb4e7e7797e35502b Mon Sep 17 00:00:00 2001 From: Jeremy Kuhne Date: Thu, 20 Apr 2017 19:54:45 -0700 Subject: [PATCH 288/336] Fix building with only VS2017 installed. (#18700) We weren't passing the right setting to CMAKE. Also fixes issue with current working directory getting changed during the build. Run.exe currently must be run with the current working directory set to the repo root. One part of this was the config.json file- which I've explicitly specified now. The other (as of yet unfixable) problem is that we specify the location of the binclash logger as a relative path. Afaik there currently is no way to make this happen with run.cmd without making this logger an explicit (as opposed to default) option. Could possibly extend run.exe's parsing to allow specifying environment variables or reference to other parameters... I haven't nailed down who is changing the working directory- while it appears to be a 2017 specific problem I can't guarantee that it isn't some other variable. --- run.cmd | 9 ++++++++- src/Native/Windows/gen-buildsys-win.bat | 9 +++++++-- src/Native/build-native.cmd | 8 ++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/run.cmd b/run.cmd index 2199aeab8c96..864fe2aca5bc 100644 --- a/run.cmd +++ b/run.cmd @@ -43,6 +43,13 @@ xcopy %~dp0Tools-Override\* %~dp0Tools /y >nul set _toolRuntime=%~dp0Tools set _dotnet=%_toolRuntime%\dotnetcli\dotnet.exe +set _json=%~dp0config.json + +:: run.exe depends on running in the root directory, notably because the config.json specifies +:: a relative path to the binclash logger + +pushd %~dp0 +call %_dotnet% %_toolRuntime%\run.exe "%_json%" %* +popd -call %_dotnet% %_toolRuntime%\run.exe %* exit /b %ERRORLEVEL% diff --git a/src/Native/Windows/gen-buildsys-win.bat b/src/Native/Windows/gen-buildsys-win.bat index 32009193900e..19f5b3e4315b 100644 --- a/src/Native/Windows/gen-buildsys-win.bat +++ b/src/Native/Windows/gen-buildsys-win.bat @@ -10,8 +10,13 @@ if %1=="/?" GOTO :USAGE setlocal set __sourceDir=%~dp0 + :: VS 2015 is the minimum supported toolset -set __VSString=14 2015 +if "%__VSVersion%" == "vs2017" ( + set __VSString=15 2017 +) else ( + set __VSString=14 2015 +) :: Set the target architecture to a format cmake understands. ANYCPU defaults to x64 if /i "%3" == "x86" (set __VSString=%__VSString%) @@ -35,7 +40,7 @@ GOTO :DONE echo "Usage..." echo "gen-buildsys-win.bat /src/NDP" - echo "Specify the VSVersion to be used - VS2013 or VS2015" + echo "Specify the VSVersion to be used - VS2015 or VS2017" echo "Specify the Target Architecture - x86, AnyCPU, ARM, or x64." EXIT /B 1 diff --git a/src/Native/build-native.cmd b/src/Native/build-native.cmd index 174feaa2437c..c2e6eccfb453 100644 --- a/src/Native/build-native.cmd +++ b/src/Native/build-native.cmd @@ -55,10 +55,10 @@ goto :Arg_Loop :: can be found. if not defined VisualStudioVersion ( if defined VS150COMNTOOLS ( - call "%VS150COMNTOOLS%\VsDevCmd.bat" + call "%VS150COMNTOOLS%VsDevCmd.bat" goto :VS2017 ) else if defined VS140COMNTOOLS ( - call "%VS140COMNTOOLS%\VsDevCmd.bat" + call "%VS140COMNTOOLS%VsDevCmd.bat" goto :VS2015 ) goto :MissingVersion @@ -82,7 +82,7 @@ set __VSVersion=vs2017 set __PlatformToolset=v141 if NOT "%__BuildArch%" == "arm64" ( :: Set the environment for the native build - call "%VS150COMNTOOLS%\..\..\VC\Auxiliary\Build\vcvarsall.bat" %__VCBuildArch% + call "%VS150COMNTOOLS%..\..\VC\Auxiliary\Build\vcvarsall.bat" %__VCBuildArch% ) goto :SetupDirs @@ -92,7 +92,7 @@ set __VSVersion=vs2015 set __PlatformToolset=v140 if NOT "%__BuildArch%" == "arm64" ( :: Set the environment for the native build - call "%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" %__VCBuildArch% + call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %__VCBuildArch% ) goto :SetupDirs From 55b0b4519430f05cb68244a88c061afee0958063 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Thu, 20 Apr 2017 20:55:53 -0700 Subject: [PATCH 289/336] Update CoreFx, ProjectNTfs, ProjectNTfsTestILC to preview1-25221-01, beta-25221-00, beta-25221-00, respectively (#18703) --- dependencies.props | 14 +++++++------- external/test-runtime/optional.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dependencies.props b/dependencies.props index 218a3c31aa08..4acab2ec5631 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,23 +9,23 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - c78210408e99e503c8166a37cbc1f885261c568b + e84480e8160b65a59a4868ed5cddbba30f34b976 7af24efb536516b61235ba0b2f771e82feddbb71 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - 3fa734080bb1f42f20d76c7d1aa135bf1671063a - 3fa734080bb1f42f20d76c7d1aa135bf1671063a + e84480e8160b65a59a4868ed5cddbba30f34b976 + e84480e8160b65a59a4868ed5cddbba30f34b976 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd c78210408e99e503c8166a37cbc1f885261c568b - preview1-25220-02 + preview1-25221-01 preview1-25221-01 beta-25016-01 - beta-25220-00 - beta-25220-00 - 1.0.0-beta-25220-00 + beta-25221-00 + beta-25221-00 + 1.0.0-beta-25221-00 2.0.0-preview1-25220-01 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index fc756fda75e6..d9477b7d7b28 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25220-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25221-00" } } } From 854a3214767addbddeaffae670c79ad03ec4bb8d Mon Sep 17 00:00:00 2001 From: Carol Wang Date: Thu, 20 Apr 2017 23:31:40 -0700 Subject: [PATCH 290/336] XmlTextAttribute test (#18665) * XmlTextAttribute test * Use generic Assert.Throws method. --- .../tests/XmlSerializer/XmlSerializerTests.cs | 20 +++++++++++ .../tests/SerializationTypes.cs | 36 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs b/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs index 5aee9867141f..447e1bb1a9dc 100644 --- a/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs +++ b/src/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs @@ -4182,6 +4182,26 @@ public static void Xml_Soap_TypeWithReadOnlyMyCollectionProperty() Assert.True(value.Collection.SequenceEqual(actual.Collection)); } + [Fact] + public static void Xml_XmlTextAttributeTest() + { + var myGroup1 = new Group1WithXmlTextAttr(); + var actual1 = SerializeAndDeserialize(myGroup1, @"321One23Two"); + Assert.True(Enumerable.SequenceEqual(myGroup1.All, actual1.All)); + + var myGroup2 = new Group2WithXmlTextAttr(); + myGroup2.TypeOfGroup = GroupType.Medium; + var actual2 = SerializeAndDeserialize(myGroup2, @"Medium"); + Assert.Equal(myGroup2.TypeOfGroup, actual2.TypeOfGroup); + + var myGroup3 = new Group3WithXmlTextAttr(); + var actual3 = SerializeAndDeserialize(myGroup3, @"2017-04-20T03:08:15Z"); + Assert.Equal(myGroup3.CreationTime, actual3.CreationTime); + + var myGroup4 = new Group4WithXmlTextAttr(); + Assert.Throws(() => { SerializeAndDeserialize(myGroup4, null, null, true); }); + } + private static readonly string s_defaultNs = "http://tempuri.org/"; private static T RoundTripWithXmlMembersMapping(object requestBodyValue, string memberName, string baseline, bool skipStringCompare = false, string wrapperName = null) { diff --git a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs index 3acfb2397fb5..a9d2ba2aafc1 100644 --- a/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs +++ b/src/System.Runtime.Serialization.Xml/tests/SerializationTypes.cs @@ -4910,3 +4910,39 @@ public class DerivedType : BaseType [DataMember] public string StrDerived = "derived"; } + +public class Group1WithXmlTextAttr +{ + [XmlText(typeof(string))] + [XmlElement(typeof(int))] + [XmlElement(typeof(double))] + public object[] All = new object[] { 321, "One", 2, 3.0, "Two" }; +} + +public class Group2WithXmlTextAttr +{ + [XmlText(Type = typeof(GroupType))] + public GroupType TypeOfGroup; +} + +public enum GroupType +{ + Small, + Medium, + Large +} + +public class Group3WithXmlTextAttr +{ + [XmlText(Type = typeof(DateTime))] + public DateTime CreationTime = new DateTime(2017, 4, 20, 3, 8, 15, DateTimeKind.Utc); +} + +public class Group4WithXmlTextAttr +{ + [XmlText(Type = typeof(DateTime))] + public DateTime CreationTime = new DateTime(2017, 4, 20, 3, 8, 15, DateTimeKind.Utc); + + [XmlText] + public string Text = "SomeText"; +} \ No newline at end of file From 2cad4e6f9c933701f79fb18cf63d83ab0f094782 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Fri, 21 Apr 2017 00:31:48 -0700 Subject: [PATCH 291/336] Delete a few unnecessary files from Common --- .../CriticalHandleZeroOrMinusOneIsInvalid.cs | 24 ------------------ .../SafeHandleZeroOrMinusOneIsInvalid.cs | 25 ------------------- ...System.Net.NameResolution.Pal.Tests.csproj | 4 --- 3 files changed, 53 deletions(-) delete mode 100644 src/Common/src/Microsoft/Win32/SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs delete mode 100644 src/Common/src/Microsoft/Win32/SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs diff --git a/src/Common/src/Microsoft/Win32/SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs b/src/Common/src/Microsoft/Win32/SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs deleted file mode 100644 index bc537ddf47d8..000000000000 --- a/src/Common/src/Microsoft/Win32/SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Runtime.InteropServices; - -namespace Microsoft.Win32.SafeHandles -{ - // Issue 2499: Replace ad-hoc definitions of SafeHandleZeroOrMinusOneIsInvalid with a single definition - // - // Other definitions of this type should be removed in favor of this definition. - internal abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle - { - protected CriticalHandleZeroOrMinusOneIsInvalid() : base(IntPtr.Zero) - { - } - - public override bool IsInvalid - { - get { return handle == new IntPtr(0) || handle == new IntPtr(-1); } - } - } -} diff --git a/src/Common/src/Microsoft/Win32/SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs b/src/Common/src/Microsoft/Win32/SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs deleted file mode 100644 index 3379f11a6e7e..000000000000 --- a/src/Common/src/Microsoft/Win32/SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Runtime.InteropServices; - -namespace Microsoft.Win32.SafeHandles -{ - // Issue 2499: Replace ad-hoc definitions of SafeHandleZeroOrMinusOneIsInvalid with a single definition - // - // Other definitions of this type should be removed in favor of this definition. - internal abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle - { - protected SafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle) - : base(IntPtr.Zero, ownsHandle) - { - } - - public override bool IsInvalid - { - get { return handle == IntPtr.Zero || handle == (IntPtr)(-1); } - } - } -} diff --git a/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj b/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj index ce9e6af6cbd5..7ae2c67c2ba5 100644 --- a/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj +++ b/src/System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj @@ -67,10 +67,6 @@ Common\System\Net\DebugSafeHandle.cs - - - Common\Microsoft\Win32\SafeHandles\SafeHandleZeroOrMinusOneIsInvalid.cs - Common\System\Net\Internals\IPAddressExtensions.cs From b5056c40d77d869c96bc3b19455472071a749017 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 21 Apr 2017 02:17:43 -0700 Subject: [PATCH 292/336] Update CoreClr to preview1-25221-02 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 4acab2ec5631..8050d22dbfb8 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> e84480e8160b65a59a4868ed5cddbba30f34b976 - 7af24efb536516b61235ba0b2f771e82feddbb71 + 1fee92c23e42ffbd59c354ed52f88b947c61df3b 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -21,7 +21,7 @@ preview1-25221-01 - preview1-25221-01 + preview1-25221-02 beta-25016-01 beta-25221-00 beta-25221-00 From 7ccbc8afc9bce220eb023aa36ccc31bd9c66bb36 Mon Sep 17 00:00:00 2001 From: Jiyoung Yun Date: Fri, 21 Apr 2017 19:04:03 +0900 Subject: [PATCH 293/336] Use ubuntu.14.04-x64 asset in building ilasm in Tizen Tizen does not provide the x64 runtime yet. So $(RuntimeOS) should be replaced to ubuntu default x64 asset. --- external/ilasm/ilasm.depproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/external/ilasm/ilasm.depproj b/external/ilasm/ilasm.depproj index 3288fdea2bbf..e79a285516ba 100644 --- a/external/ilasm/ilasm.depproj +++ b/external/ilasm/ilasm.depproj @@ -4,6 +4,8 @@ $(RuntimeOS)-x64 + + ubuntu.14.04-x64 $(ToolsDir)ilasm false true From 0df4b5e99adc0d3e938cce970e2a222d65b5d82f Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Fri, 21 Apr 2017 06:20:56 -0700 Subject: [PATCH 294/336] Update Standard to preview1-25221-01 --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 8050d22dbfb8..d71c8fd15557 100644 --- a/dependencies.props +++ b/dependencies.props @@ -15,7 +15,7 @@ e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - c78210408e99e503c8166a37cbc1f885261c568b + 8c1497575f13283bf375119e95f9515717dce591 @@ -26,7 +26,7 @@ beta-25221-00 beta-25221-00 1.0.0-beta-25221-00 - 2.0.0-preview1-25220-01 + 2.0.0-preview1-25221-01 NETStandard.Library 4.4.0-beta-25007-02 From 1c93edd06b5bad60532cc884d1c793892eaf15da Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 21 Apr 2017 07:36:28 -0700 Subject: [PATCH 295/336] Fix System.Security.Cryptography.Pkcs failures on Uap/Aot (#18727) --- src/Common/tests/System/PlatformDetection.cs | 23 +++++++++++++++++++ .../tests/CmsRecipientCollectionTests.cs | 9 +++++--- ...tographicAttributeObjectCollectionTests.cs | 9 +++++--- .../tests/EnvelopedCms/StateTests.cs | 4 ++-- .../tests/RecipientInfoCollectionTests.cs | 9 +++++--- 5 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/Common/tests/System/PlatformDetection.cs b/src/Common/tests/System/PlatformDetection.cs index 91510131492e..d261e9545f55 100644 --- a/src/Common/tests/System/PlatformDetection.cs +++ b/src/Common/tests/System/PlatformDetection.cs @@ -324,5 +324,28 @@ public static extern bool OpenProcessToken( public static extern int GetCurrentApplicationUserModelId( ref uint applicationUserModelIdLength, byte[] applicationUserModelId); + + public static bool IsNonZeroLowerBoundArraySupported + { + get + { + if (s_lazyNonZeroLowerBoundArraySupported == null) + { + bool nonZeroLowerBoundArraysSupported = false; + try + { + Array.CreateInstance(typeof(int), new int[] { 5 }, new int[] { 5 }); + nonZeroLowerBoundArraysSupported = true; + } + catch (PlatformNotSupportedException) + { + } + s_lazyNonZeroLowerBoundArraySupported = Tuple.Create(nonZeroLowerBoundArraysSupported); + } + return s_lazyNonZeroLowerBoundArraySupported.Item1; + } + } + + private static volatile Tuple s_lazyNonZeroLowerBoundArraySupported; } } diff --git a/src/System.Security.Cryptography.Pkcs/tests/CmsRecipientCollectionTests.cs b/src/System.Security.Cryptography.Pkcs/tests/CmsRecipientCollectionTests.cs index 7a06cbf40ae1..ee3f7e5d0cd8 100644 --- a/src/System.Security.Cryptography.Pkcs/tests/CmsRecipientCollectionTests.cs +++ b/src/System.Security.Cryptography.Pkcs/tests/CmsRecipientCollectionTests.cs @@ -170,9 +170,12 @@ public static void CopyExceptions() Assert.Throws(() => ic.CopyTo(new CmsRecipient[2, 2], 1)); Assert.Throws(() => ic.CopyTo(new int[10], 1)); - // Array has non-zero lower bound - Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); - Assert.Throws(() => ic.CopyTo(array, 0)); + if (PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + // Array has non-zero lower bound + Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); + Assert.Throws(() => ic.CopyTo(array, 0)); + } } diff --git a/src/System.Security.Cryptography.Pkcs/tests/CryptographicAttributeObjectCollectionTests.cs b/src/System.Security.Cryptography.Pkcs/tests/CryptographicAttributeObjectCollectionTests.cs index 8c87969c8c6b..c33bcdacd75e 100644 --- a/src/System.Security.Cryptography.Pkcs/tests/CryptographicAttributeObjectCollectionTests.cs +++ b/src/System.Security.Cryptography.Pkcs/tests/CryptographicAttributeObjectCollectionTests.cs @@ -162,9 +162,12 @@ public static void CopyExceptions() Assert.Throws(() => ic.CopyTo(new CryptographicAttributeObject[2, 2], 0)); Assert.Throws(() => ic.CopyTo(new int[10], 0)); - // Array has non-zero lower bound - Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); - Assert.Throws(() => ic.CopyTo(array, 0)); + if (PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + // Array has non-zero lower bound + Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); + Assert.Throws(() => ic.CopyTo(array, 0)); + } } private static void AssertEquals(CryptographicAttributeObjectCollection c, IList expected) diff --git a/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/StateTests.cs b/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/StateTests.cs index 164f95dd3d46..a15239724584 100644 --- a/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/StateTests.cs +++ b/src/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/StateTests.cs @@ -203,7 +203,7 @@ public static void PostDecode_Encode(bool isRunningOnDesktop) } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp | TargetFrameworkMonikers.Uap)] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)] public static void PostDecode_Encode_net46() { PostDecode_Encode(isRunningOnDesktop: true); @@ -238,7 +238,7 @@ public static void PostDecode_ContentInfo(bool isRunningOnDesktop) } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp | TargetFrameworkMonikers.Uap)] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)] public static void PostDecode_ContentInfo_net46() { PostDecode_ContentInfo(isRunningOnDesktop: true); diff --git a/src/System.Security.Cryptography.Pkcs/tests/RecipientInfoCollectionTests.cs b/src/System.Security.Cryptography.Pkcs/tests/RecipientInfoCollectionTests.cs index 5e95644d71c6..7b7be6e3b9b2 100644 --- a/src/System.Security.Cryptography.Pkcs/tests/RecipientInfoCollectionTests.cs +++ b/src/System.Security.Cryptography.Pkcs/tests/RecipientInfoCollectionTests.cs @@ -140,9 +140,12 @@ public static void TestExplicitCopyToExceptions() Assert.Throws(() => col.CopyTo(recipients, -1)); Assert.Throws(() => col.CopyTo(recipients, 6)); - // Array has non-zero lower bound - Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); - Assert.Throws(() => col.CopyTo(array, 0)); + if (PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + // Array has non-zero lower bound + Array array = Array.CreateInstance(typeof(object), new int[] { 10 }, new int[] { 10 }); + Assert.Throws(() => col.CopyTo(array, 0)); + } } From dff7501ac9beeef3aea0e74f1328eb5f048a6a16 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 21 Apr 2017 10:58:01 -0400 Subject: [PATCH 296/336] Fix ServicePoint tests for desktop --- .../tests/ServicePointManagerTest.cs | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs b/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs index 5893d6558470..6793c35c93b2 100644 --- a/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs +++ b/src/System.Net.ServicePoint/tests/ServicePointManagerTest.cs @@ -114,6 +114,7 @@ public static void ReusePort_Roundtrips() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Desktop default SecurityProtocol to Ssl3; explicitly changed to SystemDefault for core.")] public static void SecurityProtocol_Roundtrips() { var orig = (SecurityProtocolType)0; // SystemDefault. @@ -156,13 +157,9 @@ public static void InvalidArguments_Throw() { const int ssl2Client = 0x00000008; const int ssl2Server = 0x00000004; - - SecurityProtocolType ssl2 = (SecurityProtocolType)(ssl2Client | ssl2Server); -#pragma warning disable 0618 // Ssl2, Ssl3 are deprecated. - Assert.Throws(() => ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3); - Assert.Throws(() => ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | ssl2); -#pragma warning restore + const SecurityProtocolType ssl2 = (SecurityProtocolType)(ssl2Client | ssl2Server); Assert.Throws(() => ServicePointManager.SecurityProtocol = ssl2); + AssertExtensions.Throws("uriString", () => ServicePointManager.FindServicePoint((string)null, null)); AssertExtensions.Throws("value", () => ServicePointManager.MaxServicePoints = -1); AssertExtensions.Throws("value", () => ServicePointManager.DefaultConnectionLimit = 0); @@ -183,6 +180,20 @@ public static void InvalidArguments_Throw() AssertExtensions.Throws("keepAliveInterval", () => sp.SetTcpKeepAlive(true, 1, -1)); } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Ssl3 is supported by desktop but explicitly not by core")] + [Fact] + public static void SecurityProtocol_Ssl3_NotSupported() + { + const int ssl2Client = 0x00000008; + const int ssl2Server = 0x00000004; + const SecurityProtocolType ssl2 = (SecurityProtocolType)(ssl2Client | ssl2Server); + +#pragma warning disable 0618 // Ssl2, Ssl3 are deprecated. + Assert.Throws(() => ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3); + Assert.Throws(() => ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | ssl2); +#pragma warning restore + } + [Fact] public static void FindServicePoint_ReturnsCachedServicePoint() { @@ -217,6 +228,7 @@ public static void FindServicePoint_ReturnsCachedServicePoint() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Desktop ServicePoint lifetime is slightly longer due to implementation details of real implementation")] public static void FindServicePoint_Collectible() { string address = "http://" + Guid.NewGuid().ToString("N"); From f5e2d27f3237d04639edf3cdb76ea1205d90a134 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Fri, 21 Apr 2017 11:37:37 -0400 Subject: [PATCH 297/336] Disable on desktop LINQ tests that stack overflow LINQ's Concat implementation in core is optimized to better support chains of Concats, and there are several tests that stress this. These pass on core and stack overflow on desktop. Disabling on desktop. --- src/System.Linq/tests/ConcatTests.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/System.Linq/tests/ConcatTests.cs b/src/System.Linq/tests/ConcatTests.cs index 1d5e99697a2f..89b9052942bc 100644 --- a/src/System.Linq/tests/ConcatTests.cs +++ b/src/System.Linq/tests/ConcatTests.cs @@ -223,6 +223,7 @@ public void ManyConcats(IEnumerable> sources, IEnumerable [Theory] [MemberData(nameof(ManyConcatsData))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Stack overflows on desktop due to inefficient Concat implementation")] public void ManyConcatsRunOnce(IEnumerable> sources, IEnumerable expected) { foreach (var transform in IdentityTransforms()) @@ -283,6 +284,7 @@ public void CountOfConcatIteratorShouldThrowExceptionOnIntegerOverflow() [Fact] [OuterLoop("This test tries to catch stack overflows and can take a long time.")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Stack overflows on desktop due to inefficient Concat implementation")] public void CountOfConcatCollectionChainShouldBeResilientToStackOverflow() { // Currently, .Concat chains of 3+ ICollections are represented as a @@ -317,6 +319,7 @@ public void CountOfConcatCollectionChainShouldBeResilientToStackOverflow() [Fact] [OuterLoop("This test tries to catch stack overflows and can take a long time.")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Stack overflows on desktop due to inefficient Concat implementation")] public void CountOfConcatEnumerableChainShouldBeResilientToStackOverflow() { // Concat chains where one or more of the inputs is not an ICollection @@ -352,6 +355,7 @@ public void CountOfConcatEnumerableChainShouldBeResilientToStackOverflow() [Fact] [OuterLoop("This test tries to catch stack overflows and can take a long time.")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Stack overflows on desktop due to inefficient Concat implementation")] public void GettingFirstEnumerableShouldBeResilientToStackOverflow() { // When MoveNext() is first called on a chain of 3+ Concats, we have to @@ -380,6 +384,7 @@ public void GettingFirstEnumerableShouldBeResilientToStackOverflow() [Fact] [OuterLoop("This test tries to catch stack overflows and can take a long time.")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Stack overflows on desktop due to inefficient Concat implementation")] public void GetEnumerableOfConcatCollectionChainFollowedByEnumerableNodeShouldBeResilientToStackOverflow() { // Since concatenating even 1 lazy enumerable ruins the ability for ToArray/ToList From 1e8d4dff8b7f6fe6f762300f61bf570088068f3d Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Fri, 21 Apr 2017 08:44:36 -0700 Subject: [PATCH 298/336] Make sure targetgroups>=net461 import netstandard This is required for the vertical build. NETStandard needs to be synonymous with netstandard2.0 in order to get the correct fallback behavior. This isn't how its modeled, it's actually a different distinct node in the compatibility graph. While that's true, we need to make sure we use it. I plan to fix this better with https://github.com/dotnet/corefx/issues/18736 --- src/Tools/GenerateProps/targetgroups.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Tools/GenerateProps/targetgroups.props b/src/Tools/GenerateProps/targetgroups.props index 664de5c6921e..730b39bf6da6 100644 --- a/src/Tools/GenerateProps/targetgroups.props +++ b/src/Tools/GenerateProps/targetgroups.props @@ -172,7 +172,7 @@ .NETFramework,Version=v4.6.1 net461 net46 - netstandard1.4 + netstandard @@ -187,21 +187,21 @@ .NETFramework,Version=v4.6.2 net462 netfx - netstandard1.5 + netstandard Microsoft.TargetingPack.NETFramework.v4.6.3 .NETFramework,Version=v4.6.3 net463 net462 - netstandard2.0 + netstandard Microsoft.TargetingPack.NETFramework.v4.7 .NETFramework,Version=v4.7 net47 net462 - netstandard2.0 + netstandard Windows,Version=v8.0 From ce17b09e1e59746e2608d65e0c72fde7dd09f142 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Thu, 20 Apr 2017 21:00:46 -0700 Subject: [PATCH 299/336] Allow HttpWebRequest.AllowReadStreamBuffering to be set to true While fixing various .NET Framework app-compat differences, PR #18163 changed the AllowReadStreamBuffering property to match .NET Framework. This resulted in having the property throw an exception when set to true. That behavior is what .NET Framework currently does. Historically, this property did not always exist in .NET Framework at all. Other portable versions of .NET (Windows Phone, Silverlight) for the HTTP stack were implemented differently and had this property which worked. When .NET Framework APIs were reconciled in 2015, this virtual property was added to .NET Framework but the functionality on Desktop was limited. This PR will put back this property's functionality for .NET Core which is also used for UWP apps. Fixes #18668. --- src/System.Net.Requests/src/System/Net/HttpWebRequest.cs | 7 ++----- src/System.Net.Requests/tests/HttpWebRequestTest.cs | 7 +++++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs index 5bd2f94c53de..3721ae62e082 100644 --- a/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs +++ b/src/System.Net.Requests/src/System/Net/HttpWebRequest.cs @@ -138,14 +138,11 @@ public virtual bool AllowReadStreamBuffering { get { - return false; + return _allowReadStreamBuffering; } set { - if (value) - { - throw new InvalidOperationException(SR.net_OperationNotSupportedException); - } + _allowReadStreamBuffering = value; } } diff --git a/src/System.Net.Requests/tests/HttpWebRequestTest.cs b/src/System.Net.Requests/tests/HttpWebRequestTest.cs index 1c5abf702360..82f5cb57e20e 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestTest.cs @@ -42,6 +42,7 @@ public void Ctor_VerifyDefaults_Success(Uri remoteServer) HttpWebRequest request = WebRequest.CreateHttp(remoteServer); Assert.Null(request.Accept); Assert.False(request.AllowReadStreamBuffering); + Assert.True(request.AllowWriteStreamBuffering); Assert.Null(request.ContentType); Assert.Equal(350, request.ContinueTimeout); Assert.Null(request.CookieContainer); @@ -104,11 +105,13 @@ public void AllowReadStreamBuffering_SetFalseThenGet_ExpectFalse(Uri remoteServe Assert.False(request.AllowReadStreamBuffering); } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "not supported on .NET Framework")] [Theory, MemberData(nameof(EchoServers))] - public void AllowReadStreamBuffering_SetTrue_Throws(Uri remoteServer) + public void AllowReadStreamBuffering_SetTrueThenGet_ExpectTrue(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); - Assert.Throws(() => { request.AllowReadStreamBuffering = true; }); + request.AllowReadStreamBuffering = true; + Assert.True(request.AllowReadStreamBuffering); } [Theory, MemberData(nameof(EchoServers))] From 98e1a453240ab4e61394eea512175ec192236e82 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 21 Apr 2017 10:30:40 -0700 Subject: [PATCH 300/336] Fix 37 UWP failues in S.S.C.Cng.Tests. (#18739) Crypto was fine, it's xunit reflecting over theory data. --- .../System.Security.Cryptography.Cng.Tests.rd.xml | 8 ++++++++ .../tests/System.Security.Cryptography.Cng.Tests.csproj | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 src/System.Security.Cryptography.Cng/tests/Resources/System.Security.Cryptography.Cng.Tests.rd.xml diff --git a/src/System.Security.Cryptography.Cng/tests/Resources/System.Security.Cryptography.Cng.Tests.rd.xml b/src/System.Security.Cryptography.Cng/tests/Resources/System.Security.Cryptography.Cng.Tests.rd.xml new file mode 100644 index 000000000000..b6bf321e3e6f --- /dev/null +++ b/src/System.Security.Cryptography.Cng/tests/Resources/System.Security.Cryptography.Cng.Tests.rd.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj b/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj index 473c023cc4f9..9cd75bd9aa08 100644 --- a/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj +++ b/src/System.Security.Cryptography.Cng/tests/System.Security.Cryptography.Cng.Tests.csproj @@ -158,5 +158,8 @@ CommonTest\System\Security\Cryptography\AlgorithmImplementations\RSA\RSAXml.cs + + + - \ No newline at end of file + From 495d3eac3d78d004a223faaf4f992cf9f1fc1112 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 21 Apr 2017 10:31:22 -0700 Subject: [PATCH 301/336] Disable all the non-zero lower bound array failures in Collections tests. (#18737) --- .../tests/System/Collections/ICollection.NonGeneric.Tests.cs | 3 +++ src/System.CodeDom/tests/System.CodeDom.Tests.csproj | 3 +++ .../tests/ProducerConsumerCollectionTests.cs | 4 ++++ .../tests/System.Collections.Concurrent.Tests.csproj | 5 ++++- .../tests/System.Collections.Immutable.Tests.csproj | 5 ++++- .../tests/Hashtable/Hashtable.IDictionary.Tests.cs | 3 +++ .../tests/Hashtable/Hashtable.Keys.Tests.cs | 3 +++ .../tests/Hashtable/Hashtable.Values.Tests.cs | 3 +++ .../tests/System.Collections.NonGeneric.Tests.csproj | 5 ++++- .../tests/HybridDictionary/HybridDictionary.KeysTests.cs | 3 +++ .../tests/HybridDictionary/HybridDictionary.ValuesTests.cs | 3 +++ .../tests/HybridDictionary/HybridDictionaryTests.cs | 3 +++ .../tests/ListDictionary/ListDictionary.IDictionary.Tests.cs | 3 +++ .../tests/ListDictionary/ListDictionary.Keys.Tests.cs | 3 +++ .../tests/ListDictionary/ListDictionary.Values.Tests.cs | 3 +++ .../tests/System.Collections.Specialized.Tests.csproj | 3 +++ src/System.Collections/tests/System.Collections.Tests.csproj | 3 +++ 17 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src/Common/tests/System/Collections/ICollection.NonGeneric.Tests.cs b/src/Common/tests/System/Collections/ICollection.NonGeneric.Tests.cs index 704f81e9f02c..e72696363051 100644 --- a/src/Common/tests/System/Collections/ICollection.NonGeneric.Tests.cs +++ b/src/Common/tests/System/Collections/ICollection.NonGeneric.Tests.cs @@ -212,6 +212,9 @@ public void ICollection_NonGeneric_CopyTo_TwoDimensionArray_ThrowsException(int [MemberData(nameof(ValidCollectionSizes))] public virtual void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[1] { count }, new int[1] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.CodeDom/tests/System.CodeDom.Tests.csproj b/src/System.CodeDom/tests/System.CodeDom.Tests.csproj index f254dd39dcfa..9a9cb5a4bbb2 100644 --- a/src/System.CodeDom/tests/System.CodeDom.Tests.csproj +++ b/src/System.CodeDom/tests/System.CodeDom.Tests.csproj @@ -109,6 +109,9 @@ Common\System\Collections\TestBase.NonGeneric.cs + + CommonTest\System\PlatformDetection.cs + diff --git a/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs b/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs index c0fb3f04cce4..762e1e479d85 100644 --- a/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs +++ b/src/System.Collections.Concurrent/tests/ProducerConsumerCollectionTests.cs @@ -415,6 +415,7 @@ public void CopyTo_SzArray_NonZeroIndex_ExpectedElementsCopied(int size) [InlineData(0)] [InlineData(1)] [InlineData(100)] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Multidim rank 1 arrays not supported: https://github.com/dotnet/corert/issues/3331")] public void CopyTo_ArrayZeroLowerBound_ZeroIndex_ExpectedElementsCopied(int size) { IEnumerable initialItems = Enumerable.Range(1, size); @@ -433,6 +434,9 @@ public void CopyTo_ArrayZeroLowerBound_ZeroIndex_ExpectedElementsCopied(int size [Fact] public void CopyTo_ArrayNonZeroLowerBound_ExpectedElementsCopied() { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + int[] initialItems = Enumerable.Range(1, 10).ToArray(); const int LowerBound = 1; diff --git a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj index 364d7fad3494..b4062b85ad8c 100644 --- a/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj +++ b/src/System.Collections.Concurrent/tests/System.Collections.Concurrent.Tests.csproj @@ -68,6 +68,9 @@ Common\System\EnumTypes.cs + + CommonTest\System\PlatformDetection.cs + @@ -109,4 +112,4 @@ - \ No newline at end of file + diff --git a/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj b/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj index 0562168caad7..f4b04257d86c 100644 --- a/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj +++ b/src/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj @@ -108,6 +108,9 @@ Common\System\SerializableAttribute.cs + + CommonTest\System\PlatformDetection.cs + @@ -115,4 +118,4 @@ - \ No newline at end of file + diff --git a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.IDictionary.Tests.cs b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.IDictionary.Tests.cs index 625a49d9a9cb..51a8b6f6eecb 100644 --- a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.IDictionary.Tests.cs +++ b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.IDictionary.Tests.cs @@ -40,6 +40,9 @@ protected override object CreateTKey(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Keys.Tests.cs b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Keys.Tests.cs index 557fb4739f0c..ba78ffa4f319 100644 --- a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Keys.Tests.cs +++ b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Keys.Tests.cs @@ -45,6 +45,9 @@ private string CreateT(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Values.Tests.cs b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Values.Tests.cs index 3020c593a644..e2966306242f 100644 --- a/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Values.Tests.cs +++ b/src/System.Collections.NonGeneric/tests/Hashtable/Hashtable.Values.Tests.cs @@ -46,6 +46,9 @@ private string CreateT(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.NonGeneric/tests/System.Collections.NonGeneric.Tests.csproj b/src/System.Collections.NonGeneric/tests/System.Collections.NonGeneric.Tests.csproj index 91434540d8c0..76b557dece1c 100644 --- a/src/System.Collections.NonGeneric/tests/System.Collections.NonGeneric.Tests.csproj +++ b/src/System.Collections.NonGeneric/tests/System.Collections.NonGeneric.Tests.csproj @@ -53,6 +53,9 @@ Common\System\Collections\IEnumerable.NonGeneric.Serialization.Tests.cs + + CommonTest\System\PlatformDetection.cs + - \ No newline at end of file + diff --git a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.KeysTests.cs b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.KeysTests.cs index a624eee9d56c..a2900142486f 100644 --- a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.KeysTests.cs +++ b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.KeysTests.cs @@ -48,6 +48,9 @@ private string CreateT(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.ValuesTests.cs b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.ValuesTests.cs index aa1de3d8b949..aa14518031ba 100644 --- a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.ValuesTests.cs +++ b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionary.ValuesTests.cs @@ -48,6 +48,9 @@ private string CreateT(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionaryTests.cs b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionaryTests.cs index af35d4daa790..5ed73d6e7565 100644 --- a/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionaryTests.cs +++ b/src/System.Collections.Specialized/tests/HybridDictionary/HybridDictionaryTests.cs @@ -40,6 +40,9 @@ protected override object CreateTKey(int seed) [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[] { count }, new int[] { 2 }); Assert.Equal(1, arr.Rank); diff --git a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.IDictionary.Tests.cs b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.IDictionary.Tests.cs index 76f1973b041b..a65167f907fa 100644 --- a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.IDictionary.Tests.cs +++ b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.IDictionary.Tests.cs @@ -49,6 +49,9 @@ public override void ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_Thr [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[1] { count }, new int[1] { 2 }); diff --git a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Keys.Tests.cs b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Keys.Tests.cs index 9582483f4e25..08ed9d0d49d2 100644 --- a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Keys.Tests.cs +++ b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Keys.Tests.cs @@ -90,6 +90,9 @@ public override void ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_Thr [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[1] { count }, new int[1] { 2 }); diff --git a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Values.Tests.cs b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Values.Tests.cs index e6f651b94ac0..50f357785006 100644 --- a/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Values.Tests.cs +++ b/src/System.Collections.Specialized/tests/ListDictionary/ListDictionary.Values.Tests.cs @@ -90,6 +90,9 @@ public override void ICollection_NonGeneric_CopyTo_IndexLargerThanArrayCount_Thr [MemberData(nameof(ValidCollectionSizes))] public override void ICollection_NonGeneric_CopyTo_NonZeroLowerBound(int count) { + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + return; + ICollection collection = NonGenericICollectionFactory(count); Array arr = Array.CreateInstance(typeof(object), new int[1] { count }, new int[1] { 2 }); diff --git a/src/System.Collections.Specialized/tests/System.Collections.Specialized.Tests.csproj b/src/System.Collections.Specialized/tests/System.Collections.Specialized.Tests.csproj index 841f0d0c1dfd..7f58874afb1a 100644 --- a/src/System.Collections.Specialized/tests/System.Collections.Specialized.Tests.csproj +++ b/src/System.Collections.Specialized/tests/System.Collections.Specialized.Tests.csproj @@ -33,6 +33,9 @@ Common\System\Diagnostics\DebuggerAttributes.cs + + CommonTest\System\PlatformDetection.cs + diff --git a/src/System.Collections/tests/System.Collections.Tests.csproj b/src/System.Collections/tests/System.Collections.Tests.csproj index 1a3a94b83614..1811ec47b6b4 100644 --- a/src/System.Collections/tests/System.Collections.Tests.csproj +++ b/src/System.Collections/tests/System.Collections.Tests.csproj @@ -74,6 +74,9 @@ Common\System\Collections\DictionaryExtensions.cs + + CommonTest\System\PlatformDetection.cs + From 85a11b840b1195910bf5ec5e8d9ce7dc95838a85 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Fri, 21 Apr 2017 10:47:03 -0700 Subject: [PATCH 302/336] Support ExtensionDataObject in ReflectionOnly mode. (#18698) * Support ExtensionDataObject in ReflectionOnly mode. * Rename extensionObject. --- .../Json/ReflectionJsonFormatReader.cs | 11 ++++++++++- .../Json/ReflectionJsonFormatWriter.cs | 5 +++++ .../Runtime/Serialization/ReflectionClassWriter.cs | 5 +++++ .../Serialization/ReflectionXmlFormatReader.cs | 13 ++++++++++--- .../Serialization/ReflectionXmlFormatWriter.cs | 5 +++++ .../tests/DataContractJsonSerializer.cs | 3 --- .../tests/DataContractSerializer.cs | 3 --- 7 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatReader.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatReader.cs index a25f219717f7..78edc849d7f1 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatReader.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatReader.cs @@ -62,6 +62,15 @@ protected override void ReflectionReadMembers(XmlReaderDelegator xmlReader, XmlO int reflectedMemberCount = ReflectionGetMembers(classContract, members); int memberIndex = -1; + + ExtensionDataObject extensionData = null; + + if (classContract.HasExtensionData) + { + extensionData = new ExtensionDataObject(); + ((IExtensibleDataObject)obj).ExtensionData = extensionData; + } + while (true) { if (!XmlObjectSerializerReadContext.MoveToNextElement(xmlReader)) @@ -69,7 +78,7 @@ protected override void ReflectionReadMembers(XmlReaderDelegator xmlReader, XmlO return; } - memberIndex = jsonContext.GetJsonMemberIndex(xmlReader, memberNames, memberIndex, extensionData: null); + memberIndex = jsonContext.GetJsonMemberIndex(xmlReader, memberNames, memberIndex, extensionData); // GetMemberIndex returns memberNames.Length if member not found if (memberIndex < members.Length) { diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatWriter.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatWriter.cs index 7b2182566a5e..31f540b17502 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatWriter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/ReflectionJsonFormatWriter.cs @@ -243,6 +243,11 @@ protected override int ReflectionWriteMembers(XmlWriterDelegator xmlWriter, obje ReflectionWriteValue(xmlWriter, context, memberType, memberValue, false/*writeXsiType*/, primitiveContractForParamType: null); ReflectionWriteEndElement(xmlWriter); } + + if(classContract.HasExtensionData) + { + context.WriteExtensionData(xmlWriter, ((IExtensibleDataObject)obj).ExtensionData, memberCount); + } } } diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionClassWriter.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionClassWriter.cs index 5a3a32f2e19b..5bc5037a105c 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionClassWriter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionClassWriter.cs @@ -27,6 +27,11 @@ public void ReflectionWriteClass(XmlWriterDelegator xmlWriter, object obj, XmlOb } else { + if (classContract.HasExtensionData) + { + context.WriteExtensionData(xmlWriter, ((IExtensibleDataObject)obj).ExtensionData, -1); + } + ReflectionWriteMembers(xmlWriter, obj, context, classContract, classContract, 0 /*childElementIndex*/, memberNames); } diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatReader.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatReader.cs index 0949f5665f59..7d769a561951 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatReader.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatReader.cs @@ -61,20 +61,27 @@ protected override void ReflectionReadMembers(XmlReaderDelegator xmlReader, XmlO DataMember[] members = new DataMember[memberCount]; int reflectedMemberCount = ReflectionGetMembers(classContract, members); Debug.Assert(reflectedMemberCount == memberCount, "The value returned by ReflectionGetMembers() should equal to memberCount."); + ExtensionDataObject extensionData = null; + + if (classContract.HasExtensionData) + { + extensionData = new ExtensionDataObject(); + ((IExtensibleDataObject)obj).ExtensionData = extensionData; + } while (true) { if (!XmlObjectSerializerReadContext.MoveToNextElement(xmlReader)) - { + { return; } if (hasRequiredMembers) { - memberIndex = context.GetMemberIndexWithRequiredMembers(xmlReader, memberNames, memberNamespaces, memberIndex, requiredIndex, null); + memberIndex = context.GetMemberIndexWithRequiredMembers(xmlReader, memberNames, memberNamespaces, memberIndex, requiredIndex, extensionData); } else { - memberIndex = context.GetMemberIndex(xmlReader, memberNames, memberNamespaces, memberIndex, null); + memberIndex = context.GetMemberIndex(xmlReader, memberNames, memberNamespaces, memberIndex, extensionData); } // GetMemberIndex returns memberNames.Length if member not found diff --git a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatWriter.cs b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatWriter.cs index 6d5be497045a..8a45e0e6e6e0 100644 --- a/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatWriter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Runtime/Serialization/ReflectionXmlFormatWriter.cs @@ -183,6 +183,11 @@ protected override int ReflectionWriteMembers(XmlWriterDelegator xmlWriter, obje ReflectionWriteValue(xmlWriter, context, memberType, memberValue, writeXsiType, primitiveContractForParamType: null); ReflectionWriteEndElement(xmlWriter); } + + if(classContract.HasExtensionData) + { + context.WriteExtensionData(xmlWriter, ((IExtensibleDataObject)obj).ExtensionData, memberCount); + } } } diff --git a/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs b/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs index cc055228a688..87b5a743f8dd 100644 --- a/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs +++ b/src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs @@ -2277,9 +2277,6 @@ public static void DCJS_ConstructorWithRootNameAsXmlDictionaryString() Assert.True(result.Equal, $"The serialization payload was not as expected.{Environment.NewLine}Expected: {expectedString}.{Environment.NewLine}Actual: {actualString}"); } -#if ReflectionOnly - [ActiveIssue(13699)] -#endif [Fact] public static void DCJS_ExtensionDataObjectTest() { diff --git a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index 3719eeb8c085..15cbf2b17fac 100644 --- a/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -2611,9 +2611,6 @@ public static void DCS_BasicRoundTripResolveDTOTypes() Assert.Equal(DateTimeOffset.MaxValue, ((DTOContainer)deserialized.Data).nDTO); } -#if ReflectionOnly - [ActiveIssue(13699)] -#endif [Fact] public static void DCS_ExtensionDataObjectTest() { From 8d0614986dfd3b02dacbb714f2ea22ded70a3085 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Fri, 21 Apr 2017 10:53:57 -0700 Subject: [PATCH 303/336] Don't build tests for net462 / net47 in netfx leg We only need the ref and source to build for net462 and net47. Building the tests for this is incorrect since most of the time we'd end up rebuilding and rerunning the exact same tests on the exact same machine wide framework multiple times. In the rare event that the tests cross-compiled its still incorrect since the machine-wide framework is still the same. --- dir.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dir.props b/dir.props index c706981ea299..bcc908965c0d 100644 --- a/dir.props +++ b/dir.props @@ -148,7 +148,7 @@ $(BinDir)$(OSGroup).$(ArchGroup).$(ConfigurationGroup)/native - + $(AdditionalBuildConfigurations);net462-$(OSGroup)-$(ConfigurationGroup)-$(ArchGroup);net47-$(OSGroup)-$(ConfigurationGroup)-$(ArchGroup) From c7b688b1d31bd2b286e76b8cbba397902ddb5ea7 Mon Sep 17 00:00:00 2001 From: Eric Mellino Date: Fri, 21 Apr 2017 10:54:48 -0700 Subject: [PATCH 304/336] Do not run "infinite far plane" Matrix4x4 tests on .NET Framework. --- src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs b/src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs index de98b6f9c405..1ffa6b5773f1 100644 --- a/src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs +++ b/src/System.Numerics.Vectors/tests/Matrix4x4Tests.cs @@ -2518,6 +2518,7 @@ public unsafe void Matrix4x4FieldOffsetTest() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] public void PerspectiveFarPlaneAtInfinityTest() { var nearPlaneDistance = 0.125f; @@ -2527,6 +2528,7 @@ public void PerspectiveFarPlaneAtInfinityTest() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] public void PerspectiveFieldOfViewFarPlaneAtInfinityTest() { var nearPlaneDistance = 0.125f; @@ -2536,6 +2538,7 @@ public void PerspectiveFieldOfViewFarPlaneAtInfinityTest() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] public void PerspectiveOffCenterFarPlaneAtInfinityTest() { var nearPlaneDistance = 0.125f; From c981019e264032773dc336949bb99ad62e1efc47 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Fri, 21 Apr 2017 14:13:05 -0500 Subject: [PATCH 305/336] Improve CI: disable randomly failing socket tests on unix --- .../tests/FunctionalTests/DualModeSocketTest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs b/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs index 50bfb6a7702c..89df9b7dc09b 100644 --- a/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs +++ b/src/System.Net.Sockets/tests/FunctionalTests/DualModeSocketTest.cs @@ -1976,8 +1976,8 @@ public void ReceiveMessageFromV4BoundToSpecificV6_NotReceived() }); } - [ConditionalFact(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotWindowsSubsystemForLinux))] // https://github.com/Microsoft/BashOnWindows/issues/987 - [PlatformSpecific(~TestPlatforms.OSX)] // ReceiveMessageFrom not supported on OSX + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] // Binds to a specific port on 'connectTo' which on Unix may already be in use; ReceiveMessageFrom not supported on OSX public void ReceiveMessageFromV6BoundToAnyV4_NotReceived() { Assert.Throws(() => From f5e7e395f3c1be4a1a70df66bdbf4c72cd71affb Mon Sep 17 00:00:00 2001 From: Lakshmi Priya Sekar Date: Fri, 21 Apr 2017 14:04:04 -0700 Subject: [PATCH 306/336] Handle thread ids overflow on OSX. --- src/System.Diagnostics.Process/tests/ProcessThreadTests.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs b/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs index 85aaf55fdc84..cbb1351b69d3 100644 --- a/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessThreadTests.cs @@ -23,7 +23,10 @@ public void TestCommonPriorityAndTimeProperties() { if (ThreadState.Terminated != thread.ThreadState) { - Assert.True(thread.Id >= 0); + // On OSX, thread id is a 64bit unsigned value. We truncate the ulong to int + // due to .NET API surface area. Hence, on overflow id can be negative while + // casting the ulong to int. + Assert.True(thread.Id >= 0 || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)); Assert.Equal(_process.BasePriority, thread.BasePriority); Assert.True(thread.CurrentPriority >= 0); Assert.True(thread.PrivilegedProcessorTime.TotalSeconds >= 0); From 56af28b3341274a6c6b6a1ee86826af7c80c88dc Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 21 Apr 2017 15:06:26 -0700 Subject: [PATCH 307/336] Move to preview2 prerelease (#18751) --- Packaging.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packaging.props b/Packaging.props index 225ae6f3ea5e..a54a21613eb2 100644 --- a/Packaging.props +++ b/Packaging.props @@ -1,6 +1,6 @@ - preview1 + preview2 $(ProjectDir)pkg/descriptions.json $(ProjectDir)pkg/dotnet_library_license.txt $(ProjectDir)pkg/ThirdPartyNotices.txt From 6123e2d43a99c493e1bfd9c96efba3a1fffa1aef Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Fri, 21 Apr 2017 15:07:46 -0700 Subject: [PATCH 308/336] Update CoreClr, CoreFx, Standard to preview1-25221-05, preview1-25221-03, preview1-25221-03, respectively (#18741) --- dependencies.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.props b/dependencies.props index d71c8fd15557..31482c013459 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,24 +9,24 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - e84480e8160b65a59a4868ed5cddbba30f34b976 - 1fee92c23e42ffbd59c354ed52f88b947c61df3b + 8d639b24570e06cd1d8fbefb44cad1d5118e7596 + 8d639b24570e06cd1d8fbefb44cad1d5118e7596 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd - 8c1497575f13283bf375119e95f9515717dce591 + 8d639b24570e06cd1d8fbefb44cad1d5118e7596 - preview1-25221-01 - preview1-25221-02 + preview1-25221-03 + preview1-25221-05 beta-25016-01 beta-25221-00 beta-25221-00 1.0.0-beta-25221-00 - 2.0.0-preview1-25221-01 + 2.0.0-preview1-25221-03 NETStandard.Library 4.4.0-beta-25007-02 From b0de3ff874706a46d2e45f27f3b128c2d212adbf Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 21 Apr 2017 15:22:06 -0700 Subject: [PATCH 309/336] Fix non-zero-lower-bound fails in System.Reflection.TypeExtensions (#18757) * Test or no test... Is it asking too much to use the right names for things? * Fix non-zero-lower-bound fails in System.Reflection.TypeExtensions - Invoke_2DArrayConstructor The test still has value even if we can only zero lower bounds so we'll degrade it gracefully on Aot platforms. - Another case of reflecting on framework types needlessly. --- .../ConstructorInfoInvokeArrayTests.cs | 67 ++++++++++++------- .../tests/MethodInfoTests.cs | 2 +- ...tem.Reflection.TypeExtensions.Tests.csproj | 7 +- .../tests/TypeTests.cs | 1 + 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/src/System.Reflection.TypeExtensions/tests/ConstructorInfo/ConstructorInfoInvokeArrayTests.cs b/src/System.Reflection.TypeExtensions/tests/ConstructorInfo/ConstructorInfoInvokeArrayTests.cs index 881c5502d57c..aabbd4565dac 100644 --- a/src/System.Reflection.TypeExtensions/tests/ConstructorInfo/ConstructorInfoInvokeArrayTests.cs +++ b/src/System.Reflection.TypeExtensions/tests/ConstructorInfo/ConstructorInfoInvokeArrayTests.cs @@ -33,6 +33,7 @@ public void Invoke_SZArrayConstructor() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.UapAot, "Multidim arrays of rank 1 not supported on UapAot: https://github.com/dotnet/corert/issues/3331")] public void Invoke_1DArrayConstructor() { Type type = Type.GetType("System.Char[*]"); @@ -134,6 +135,12 @@ public void Invoke_2DArrayConstructor() int[] invalidLengths3 = new int[] { -11, -10, 0 }; int[] invalidLengths4 = new int[] { -33, 0, -20 }; + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + Array.Clear(invalidLowerBounds1, 0, invalidLowerBounds1.Length); + Array.Clear(invalidLowerBounds2, 0, invalidLowerBounds2.Length); + } + for (int j = 0; j < invalidLengths3.Length; j++) { Assert.Throws(() => constructors[i].Invoke(new object[] { invalidLowerBounds1[j], invalidLengths3[j], invalidLowerBounds2[j], invalidLengths4[j] })); @@ -141,10 +148,10 @@ public void Invoke_2DArrayConstructor() int baseNum = 3; int baseNum4 = baseNum * baseNum * baseNum * baseNum; - int[] validLengths1 = new int[baseNum4]; int[] validLowerBounds1 = new int[baseNum4]; - int[] validLengths2 = new int[baseNum4]; int[] validLowerBounds2 = new int[baseNum4]; + int[] validLengths1 = new int[baseNum4]; + int[] validLengths2 = new int[baseNum4]; int cnt = 0; for (int pos1 = 0; pos1 < baseNum; pos1++) @@ -153,40 +160,52 @@ public void Invoke_2DArrayConstructor() for (int pos4 = 0; pos4 < baseNum; pos4++) { int saved = cnt; - validLengths1[cnt] = saved % baseNum; - saved = saved / baseNum; - validLengths2[cnt] = saved % baseNum; - saved = saved / baseNum; validLowerBounds1[cnt] = saved % baseNum; saved = saved / baseNum; + validLengths1[cnt] = saved % baseNum; + saved = saved / baseNum; validLowerBounds2[cnt] = saved % baseNum; + saved = saved / baseNum; + validLengths2[cnt] = saved % baseNum; cnt++; } - for (int j = 0; j < validLengths2.Length; j++) + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + Array.Clear(validLowerBounds1, 0, validLowerBounds1.Length); + Array.Clear(validLowerBounds2, 0, validLowerBounds2.Length); + } + + for (int j = 0; j < validLengths1.Length; j++) { - int[,] arr = (int[,])constructors[i].Invoke(new object[] { validLengths1[j], validLengths2[j], validLowerBounds1[j], validLowerBounds2[j] }); - Assert.Equal(validLengths1[j], arr.GetLowerBound(0)); - Assert.Equal(validLengths1[j] + validLengths2[j] - 1, arr.GetUpperBound(0)); - Assert.Equal(validLowerBounds1[j], arr.GetLowerBound(1)); - Assert.Equal(validLowerBounds1[j] + validLowerBounds2[j] - 1, arr.GetUpperBound(1)); - Assert.Equal(validLengths2[j] * validLowerBounds2[j], arr.Length); + int[,] arr = (int[,])constructors[i].Invoke(new object[] { validLowerBounds1[j], validLengths1[j], validLowerBounds2[j], validLengths2[j] }); + Assert.Equal(validLowerBounds1[j], arr.GetLowerBound(0)); + Assert.Equal(validLowerBounds1[j] + validLengths1[j] - 1, arr.GetUpperBound(0)); + Assert.Equal(validLowerBounds2[j], arr.GetLowerBound(1)); + Assert.Equal(validLowerBounds2[j] + validLengths2[j] - 1, arr.GetUpperBound(1)); + Assert.Equal(validLengths1[j] * validLengths2[j], arr.Length); } // Lower can be < 0 - validLengths1 = new int[] { 10, 10, 65535, 40, 0, -10, -10, -20, -40, 0 }; - validLowerBounds1 = new int[] { 5, 99, -100, 30, 4, -5, 99, 100, -30, 0 }; - validLengths2 = new int[] { 1, 200, 2, 40, 0, 1, 200, 2, 40, 65535 }; - validLowerBounds2 = new int[] { 5, 10, 1, 0, 4, 5, 65535, 1, 0, 4 }; + validLowerBounds1 = new int[] { 10, 10, 65535, 40, 0, -10, -10, -20, -40, 0 }; + validLowerBounds2 = new int[] { 5, 99, -100, 30, 4, -5, 99, 100, -30, 0 }; + validLengths1 = new int[] { 1, 200, 2, 40, 0, 1, 200, 2, 40, 65535 }; + validLengths2 = new int[] { 5, 10, 1, 0, 4, 5, 65535, 1, 0, 4 }; + + if (!PlatformDetection.IsNonZeroLowerBoundArraySupported) + { + Array.Clear(validLowerBounds1, 0, validLowerBounds1.Length); + Array.Clear(validLowerBounds2, 0, validLowerBounds2.Length); + } - for (int j = 0; j < validLengths2.Length; j++) + for (int j = 0; j < validLengths1.Length; j++) { - int[,] arr = (int[,])constructors[i].Invoke(new object[] { validLengths1[j], validLengths2[j], validLowerBounds1[j], validLowerBounds2[j] }); - Assert.Equal(validLengths1[j], arr.GetLowerBound(0)); - Assert.Equal(validLengths1[j] + validLengths2[j] - 1, arr.GetUpperBound(0)); - Assert.Equal(validLowerBounds1[j], arr.GetLowerBound(1)); - Assert.Equal(validLowerBounds1[j] + validLowerBounds2[j] - 1, arr.GetUpperBound(1)); - Assert.Equal(validLengths2[j] * validLowerBounds2[j], arr.Length); + int[,] arr = (int[,])constructors[i].Invoke(new object[] { validLowerBounds1[j], validLengths1[j], validLowerBounds2[j], validLengths2[j] }); + Assert.Equal(validLowerBounds1[j], arr.GetLowerBound(0)); + Assert.Equal(validLowerBounds1[j] + validLengths1[j] - 1, arr.GetUpperBound(0)); + Assert.Equal(validLowerBounds2[j], arr.GetLowerBound(1)); + Assert.Equal(validLowerBounds2[j] + validLengths2[j] - 1, arr.GetUpperBound(1)); + Assert.Equal(validLengths1[j] * validLengths2[j], arr.Length); } } break; diff --git a/src/System.Reflection.TypeExtensions/tests/MethodInfoTests.cs b/src/System.Reflection.TypeExtensions/tests/MethodInfoTests.cs index b3c7bb2d06b3..6fd6eecf1ca9 100644 --- a/src/System.Reflection.TypeExtensions/tests/MethodInfoTests.cs +++ b/src/System.Reflection.TypeExtensions/tests/MethodInfoTests.cs @@ -13,7 +13,7 @@ public class MethodInfoTests [Theory] [InlineData(typeof(MI_NonGenericClass), nameof(MI_NonGenericClass.PublicMethod))] [InlineData(typeof(MI_NonGenericClass), nameof(MI_NonGenericClass.PublicStaticMethod))] - [InlineData(typeof(string), nameof(string.IsNullOrEmpty))] + [InlineData(typeof(StringImpersonator), nameof(StringImpersonator.IsNullOrEmpty))] public void Properties(Type type, string name) { MethodInfo method = Helpers.GetMethod(type, name); diff --git a/src/System.Reflection.TypeExtensions/tests/System.Reflection.TypeExtensions.Tests.csproj b/src/System.Reflection.TypeExtensions/tests/System.Reflection.TypeExtensions.Tests.csproj index ee4da7df664b..a92a78b24d85 100644 --- a/src/System.Reflection.TypeExtensions/tests/System.Reflection.TypeExtensions.Tests.csproj +++ b/src/System.Reflection.TypeExtensions/tests/System.Reflection.TypeExtensions.Tests.csproj @@ -25,5 +25,10 @@ + + + Common\System\PlatformDetection.cs + + - \ No newline at end of file + diff --git a/src/System.Reflection.TypeExtensions/tests/TypeTests.cs b/src/System.Reflection.TypeExtensions/tests/TypeTests.cs index e436a7f3be42..689279ca40a1 100644 --- a/src/System.Reflection.TypeExtensions/tests/TypeTests.cs +++ b/src/System.Reflection.TypeExtensions/tests/TypeTests.cs @@ -970,6 +970,7 @@ internal class StringImpersonator [IndexerName("Chars")] public char this[int index] { get { throw null; } } public int Length { get { throw null; } } + public static bool IsNullOrEmpty(string value) { throw null; } internal char FirstChar { get { throw null; } } } From 97772890484e98f249a8173faf37e6380b3445cb Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Fri, 21 Apr 2017 16:11:58 -0700 Subject: [PATCH 310/336] Fix the System.Linq tests that want metadata. (#18764) (the remaining failures are DebuggerAttribute-checking stuff which is a whole another subject that affects Collections too.) --- .../tests/Resources/System.Linq.Tests.rd.xml | 15 +++++++++++++++ src/System.Linq/tests/System.Linq.Tests.csproj | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/System.Linq/tests/Resources/System.Linq.Tests.rd.xml diff --git a/src/System.Linq/tests/Resources/System.Linq.Tests.rd.xml b/src/System.Linq/tests/Resources/System.Linq.Tests.rd.xml new file mode 100644 index 000000000000..1f4c530fb97f --- /dev/null +++ b/src/System.Linq/tests/Resources/System.Linq.Tests.rd.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/System.Linq/tests/System.Linq.Tests.csproj b/src/System.Linq/tests/System.Linq.Tests.csproj index 236ad0a2c7c5..14a09fe500eb 100644 --- a/src/System.Linq/tests/System.Linq.Tests.csproj +++ b/src/System.Linq/tests/System.Linq.Tests.csproj @@ -89,5 +89,8 @@ Common\System\Linq\SkipTakeData.cs + + + - \ No newline at end of file + From ec5989995ebc239d5bc7db4840de9e9a0e78e6ff Mon Sep 17 00:00:00 2001 From: Cory Rivera Date: Fri, 21 Apr 2017 16:28:14 -0700 Subject: [PATCH 311/336] Make CopyAllFromReaderConnectionCloseOnEventAsyncTest debug only, since it uses AsyncDebugScope --- .../CopyAllFromReaderConnectionCloseOnEventAsync.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System.Data.SqlClient/tests/ManualTests/SQL/SqlBulkCopyTest/CopyAllFromReaderConnectionCloseOnEventAsync.cs b/src/System.Data.SqlClient/tests/ManualTests/SQL/SqlBulkCopyTest/CopyAllFromReaderConnectionCloseOnEventAsync.cs index eb6c61dafeb6..23bf51c5712b 100644 --- a/src/System.Data.SqlClient/tests/ManualTests/SQL/SqlBulkCopyTest/CopyAllFromReaderConnectionCloseOnEventAsync.cs +++ b/src/System.Data.SqlClient/tests/ManualTests/SQL/SqlBulkCopyTest/CopyAllFromReaderConnectionCloseOnEventAsync.cs @@ -16,6 +16,7 @@ public class CopyAllFromReaderConnectionClosedOnEventAsync { public static void Test(string srcConstr, string dstConstr, string dstTable) { +#if DEBUG string initialQueryTemplate = "create table {0} (col1 int, col2 nvarchar(20), col3 nvarchar(10), col4 varchar(8000))"; string sourceQuery = "select EmployeeID, LastName, FirstName, REPLICATE('a', 8000) from employees"; string initialQuery = string.Format(initialQueryTemplate, dstTable); @@ -64,6 +65,7 @@ public static void Test(string srcConstr, string dstConstr, string dstTable) Helpers.TryDropTable(dstConstr, dstTable); } } +#endif } } } From 5a1ba4d269fafd17625711fc72b0d3641b9432f9 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Fri, 21 Apr 2017 17:06:53 -0700 Subject: [PATCH 312/336] Update CoreClr to preview1-25221-06 (#18769) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 31482c013459..4e16de7b601b 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 8d639b24570e06cd1d8fbefb44cad1d5118e7596 - 8d639b24570e06cd1d8fbefb44cad1d5118e7596 + afdece3cddc1f2bf0071139373aa471305ef06df 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -21,7 +21,7 @@ preview1-25221-03 - preview1-25221-05 + preview1-25221-06 beta-25016-01 beta-25221-00 beta-25221-00 From fa418f1c10de81b70114863dedfba0592f72d4d4 Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Fri, 21 Apr 2017 17:08:27 -0700 Subject: [PATCH 313/336] Fix PNSE in serialization. (#18768) --- .../src/Resources/Strings.resx | 3 +++ .../src/System/Xml/XmlBaseReader.cs | 9 +++++++++ .../src/System/Xml/XmlBaseWriter.cs | 4 ++-- .../src/System/Xml/Serialization/XmlSerializer.cs | 8 ++++---- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/System.Private.DataContractSerialization/src/Resources/Strings.resx b/src/System.Private.DataContractSerialization/src/Resources/Strings.resx index 589f25886a8a..bd5333a47d0f 100644 --- a/src/System.Private.DataContractSerialization/src/Resources/Strings.resx +++ b/src/System.Private.DataContractSerialization/src/Resources/Strings.resx @@ -1105,4 +1105,7 @@ The implementation of the function requires System.Runtime.Serialization.SchemaImporter which is not supported on this platform. + + The canonicalization process is not supported on this platform. + diff --git a/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs b/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs index 54606d92e1ac..01d45c848f54 100644 --- a/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs +++ b/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs @@ -1869,6 +1869,15 @@ private char[] GetCharBuffer(int count) return _chars; } + public override void StartCanonicalization(Stream stream, bool includeComments, string[] inclusivePrefixes) + { + throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new PlatformNotSupportedException(SR.PlatformNotSupported_Canonicalization)); + } + + public override void EndCanonicalization() + { + throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new PlatformNotSupportedException(SR.PlatformNotSupported_Canonicalization)); + } protected enum QNameType { diff --git a/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs b/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs index f50521f26260..3b0ed6920187 100644 --- a/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs +++ b/src/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs @@ -1620,12 +1620,12 @@ public override bool CanCanonicalize public override void StartCanonicalization(Stream stream, bool includeComments, string[] inclusivePrefixes) { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); + throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new PlatformNotSupportedException(SR.PlatformNotSupported_Canonicalization)); } public override void EndCanonicalization() { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); + throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new PlatformNotSupportedException(SR.PlatformNotSupported_Canonicalization)); } diff --git a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs index 9a97c4f3a5b6..40c58257f463 100644 --- a/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs +++ b/src/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs @@ -1040,16 +1040,16 @@ public event UnreferencedObjectEventHandler UnreferencedObject /// /// - protected virtual XmlSerializationReader CreateReader() { throw new PlatformNotSupportedException(); } + protected virtual XmlSerializationReader CreateReader() { throw new NotImplementedException(); } /// /// - protected virtual object Deserialize(XmlSerializationReader reader) { throw new PlatformNotSupportedException(); } + protected virtual object Deserialize(XmlSerializationReader reader) { throw new NotImplementedException(); } /// /// - protected virtual XmlSerializationWriter CreateWriter() { throw new PlatformNotSupportedException(); } + protected virtual XmlSerializationWriter CreateWriter() { throw new NotImplementedException(); } /// /// - protected virtual void Serialize(object o, XmlSerializationWriter writer) { throw new PlatformNotSupportedException(); } + protected virtual void Serialize(object o, XmlSerializationWriter writer) { throw new NotImplementedException(); } internal void SetTempAssembly(TempAssembly tempAssembly, XmlMapping mapping) { From bf9b4c2c559cfe450652596b9c11e3c817afa712 Mon Sep 17 00:00:00 2001 From: danmosemsft Date: Fri, 21 Apr 2017 09:25:27 -0700 Subject: [PATCH 314/336] Simple disambig of path test inputs --- .../tests/System/IO/PathTests.cs | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs b/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs index 2f3683feb60c..bf055a155410 100644 --- a/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs +++ b/src/System.Runtime.Extensions/tests/System/IO/PathTests.cs @@ -194,8 +194,8 @@ public static void GetPathRoot() [InlineData(@"\\test\unc", @"\\test\unc")] [InlineData(@"\\?\UNC\test\unc\path\to\something", @"\\?\UNC\test\unc")] [InlineData(@"\\?\UNC\test\unc", @"\\?\UNC\test\unc")] - [InlineData(@"\\?\UNC\a\b", @"\\?\UNC\a\b")] - [InlineData(@"\\?\UNC\a\b\", @"\\?\UNC\a\b")] + [InlineData(@"\\?\UNC\a\b1", @"\\?\UNC\a\b1")] + [InlineData(@"\\?\UNC\a\b2\", @"\\?\UNC\a\b2")] [InlineData(@"\\?\C:\foo\bar.txt", @"\\?\C:\")] public static void GetPathRoot_Windows_UncAndExtended(string value, string expected) { @@ -209,9 +209,9 @@ public static void GetPathRoot_Windows_UncAndExtended(string value, string expec [InlineData(@"C:\", @"C:\")] [InlineData(@"C:\\", @"C:\")] [InlineData(@"C://", @"C:\")] - [InlineData(@"C:\foo", @"C:\")] - [InlineData(@"C:\\foo", @"C:\")] - [InlineData(@"C://foo", @"C:\")] + [InlineData(@"C:\foo1", @"C:\")] + [InlineData(@"C:\\foo2", @"C:\")] + [InlineData(@"C://foo3", @"C:\")] public static void GetPathRoot_Windows(string value, string expected) { Assert.True(Path.IsPathRooted(value)); @@ -570,23 +570,23 @@ public static void GetFullPath_Windows_StrangeButLegalPaths() [InlineData(@"\\?\C:\|")] [InlineData(@"\\?\C:\.")] [InlineData(@"\\?\C:\..")] - [InlineData(@"\\?\C:\Foo\.")] - [InlineData(@"\\?\C:\Foo\..")] + [InlineData(@"\\?\C:\Foo1\.")] + [InlineData(@"\\?\C:\Foo2\..")] [InlineData(@"\\?\UNC\")] - [InlineData(@"\\?\UNC\server")] - [InlineData(@"\\?\UNC\server\")] - [InlineData(@"\\?\UNC\server\\")] - [InlineData(@"\\?\UNC\server\..")] - [InlineData(@"\\?\UNC\server\share\.")] - [InlineData(@"\\?\UNC\server\share\..")] + [InlineData(@"\\?\UNC\server1")] + [InlineData(@"\\?\UNC\server2\")] + [InlineData(@"\\?\UNC\server3\\")] + [InlineData(@"\\?\UNC\server4\..")] + [InlineData(@"\\?\UNC\server5\share\.")] + [InlineData(@"\\?\UNC\server6\share\..")] [InlineData(@"\\?\UNC\a\b\\")] [InlineData(@"\\.\UNC\")] - [InlineData(@"\\.\UNC\server")] - [InlineData(@"\\.\UNC\server\")] - [InlineData(@"\\.\UNC\server\\")] - [InlineData(@"\\.\UNC\server\..")] - [InlineData(@"\\.\UNC\server\share\.")] - [InlineData(@"\\.\UNC\server\share\..")] + [InlineData(@"\\.\UNC\server7")] + [InlineData(@"\\.\UNC\server8\")] + [InlineData(@"\\.\UNC\server9\\")] + [InlineData(@"\\.\UNC\serverA\..")] + [InlineData(@"\\.\UNC\serverB\share\.")] + [InlineData(@"\\.\UNC\serverC\share\..")] [InlineData(@"\\.\UNC\a\b\\")] [InlineData(@"\\.\")] [InlineData(@"\\.\.")] @@ -596,8 +596,8 @@ public static void GetFullPath_Windows_StrangeButLegalPaths() [InlineData(@"\\.\C:\|")] [InlineData(@"\\.\C:\.")] [InlineData(@"\\.\C:\..")] - [InlineData(@"\\.\C:\Foo\.")] - [InlineData(@"\\.\C:\Foo\..")] + [InlineData(@"\\.\C:\Foo1\.")] + [InlineData(@"\\.\C:\Foo2\..")] public static void GetFullPath_Windows_ValidExtendedPaths(string path) { // None of these should throw @@ -615,27 +615,27 @@ public static void GetFullPath_Windows_ValidExtendedPaths(string path) [Theory] // https://github.com/dotnet/corefx/issues/11965 [InlineData(@"\\LOCALHOST\share\test.txt.~SS", @"\\LOCALHOST\share\test.txt.~SS")] - [InlineData(@"\\LOCALHOST\share", @"\\LOCALHOST\share")] - [InlineData(@"\\LOCALHOST\share", @" \\LOCALHOST\share")] - [InlineData(@"\\LOCALHOST\share\dir", @"\\LOCALHOST\share\dir")] - [InlineData(@"\\LOCALHOST\share", @"\\LOCALHOST\share\.")] - [InlineData(@"\\LOCALHOST\share", @"\\LOCALHOST\share\..")] - [InlineData(@"\\LOCALHOST\share\", @"\\LOCALHOST\share\ ")] - [InlineData(@"\\LOCALHOST\ share\", @"\\LOCALHOST\ share\")] - [InlineData(@"\\?\UNC\LOCALHOST\share\test.txt.~SS", @"\\?\UNC\LOCALHOST\share\test.txt.~SS")] - [InlineData(@"\\?\UNC\LOCALHOST\share", @"\\?\UNC\LOCALHOST\share")] - [InlineData(@"\\?\UNC\LOCALHOST\share\dir", @"\\?\UNC\LOCALHOST\share\dir")] - [InlineData(@"\\?\UNC\LOCALHOST\share\. ", @"\\?\UNC\LOCALHOST\share\. ")] - [InlineData(@"\\?\UNC\LOCALHOST\share\.. ", @"\\?\UNC\LOCALHOST\share\.. ")] - [InlineData(@"\\?\UNC\LOCALHOST\share\ ", @"\\?\UNC\LOCALHOST\share\ ")] - [InlineData(@"\\.\UNC\LOCALHOST\ share\", @"\\.\UNC\LOCALHOST\ share\")] - [InlineData(@"\\.\UNC\LOCALHOST\share\test.txt.~SS", @"\\.\UNC\LOCALHOST\share\test.txt.~SS")] - [InlineData(@"\\.\UNC\LOCALHOST\share", @"\\.\UNC\LOCALHOST\share")] - [InlineData(@"\\.\UNC\LOCALHOST\share\dir", @"\\.\UNC\LOCALHOST\share\dir")] - [InlineData(@"\\.\UNC\LOCALHOST\share\", @"\\.\UNC\LOCALHOST\share\. ")] - [InlineData(@"\\.\UNC\LOCALHOST\share\", @"\\.\UNC\LOCALHOST\share\.. ")] - [InlineData(@"\\.\UNC\LOCALHOST\share\", @"\\.\UNC\LOCALHOST\share\ ")] - [InlineData(@"\\.\UNC\LOCALHOST\ share\", @"\\.\UNC\LOCALHOST\ share\")] + [InlineData(@"\\LOCALHOST\share1", @"\\LOCALHOST\share1")] + [InlineData(@"\\LOCALHOST\share2", @" \\LOCALHOST\share2")] + [InlineData(@"\\LOCALHOST\share3\dir", @"\\LOCALHOST\share3\dir")] + [InlineData(@"\\LOCALHOST\share4", @"\\LOCALHOST\share4\.")] + [InlineData(@"\\LOCALHOST\share5", @"\\LOCALHOST\share5\..")] + [InlineData(@"\\LOCALHOST\share6\", @"\\LOCALHOST\share6\ ")] + [InlineData(@"\\LOCALHOST\ share7\", @"\\LOCALHOST\ share7\")] + [InlineData(@"\\?\UNC\LOCALHOST\share8\test.txt.~SS", @"\\?\UNC\LOCALHOST\share8\test.txt.~SS")] + [InlineData(@"\\?\UNC\LOCALHOST\share9", @"\\?\UNC\LOCALHOST\share9")] + [InlineData(@"\\?\UNC\LOCALHOST\shareA\dir", @"\\?\UNC\LOCALHOST\shareA\dir")] + [InlineData(@"\\?\UNC\LOCALHOST\shareB\. ", @"\\?\UNC\LOCALHOST\shareB\. ")] + [InlineData(@"\\?\UNC\LOCALHOST\shareC\.. ", @"\\?\UNC\LOCALHOST\shareC\.. ")] + [InlineData(@"\\?\UNC\LOCALHOST\shareD\ ", @"\\?\UNC\LOCALHOST\shareD\ ")] + [InlineData(@"\\.\UNC\LOCALHOST\ shareE\", @"\\.\UNC\LOCALHOST\ shareE\")] + [InlineData(@"\\.\UNC\LOCALHOST\shareF\test.txt.~SS", @"\\.\UNC\LOCALHOST\shareF\test.txt.~SS")] + [InlineData(@"\\.\UNC\LOCALHOST\shareG", @"\\.\UNC\LOCALHOST\shareG")] + [InlineData(@"\\.\UNC\LOCALHOST\shareH\dir", @"\\.\UNC\LOCALHOST\shareH\dir")] + [InlineData(@"\\.\UNC\LOCALHOST\shareI\", @"\\.\UNC\LOCALHOST\shareI\. ")] + [InlineData(@"\\.\UNC\LOCALHOST\shareJ\", @"\\.\UNC\LOCALHOST\shareJ\.. ")] + [InlineData(@"\\.\UNC\LOCALHOST\shareK\", @"\\.\UNC\LOCALHOST\shareK\ ")] + [InlineData(@"\\.\UNC\LOCALHOST\ shareL\", @"\\.\UNC\LOCALHOST\ shareL\")] public static void GetFullPath_Windows_UNC_Valid(string expected, string input) { From cc35e3a45c5022c2fa7b695bd6abd71a6bcb117a Mon Sep 17 00:00:00 2001 From: Jeremy Barton Date: Fri, 21 Apr 2017 10:57:53 -0700 Subject: [PATCH 315/336] Remove assert that trips on Windows 7 Win7 is getting different failure codes from the CAPI-via-CNG tests with DSA, and removing the assert makes the tests pass. So replacing the assert with a comment. Since this is opportunistic recovery from an exception, it seems reasonable to try no matter what the exception is. --- .../Pal.Windows/CertificatePal.PrivateKey.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs index de3ba92b3189..0a16fe7e44b9 100644 --- a/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs +++ b/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/CertificatePal.PrivateKey.cs @@ -403,8 +403,6 @@ private static int GuessKeySpec( return 0; } - const int NTE_BAD_KEYSET = unchecked((int)0x80090016); - try { CngKeyOpenOptions options = machineKey ? CngKeyOpenOptions.MachineKey : CngKeyOpenOptions.None; @@ -415,11 +413,12 @@ private static int GuessKeySpec( return 0; } } - catch (CryptographicException e) + catch (CryptographicException) { - Debug.Assert( - e.HResult == NTE_BAD_KEYSET, - $"CngKey.Open had unexpected error: 0x{e.HResult:X8}: {e.Message}"); + // While NTE_BAD_KEYSET is what we generally expect here for RSA, on Windows 7 + // PROV_DSS produces NTE_BAD_PROV_TYPE, and PROV_DSS_DH produces NTE_NO_KEY. + // + // So we'll just try the CAPI fallback for any error code, and see what happens. CspParameters cspParameters = new CspParameters { From 8d72082ccfd6ea58a9499256eb722a28376ec45b Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Fri, 21 Apr 2017 20:25:22 -0700 Subject: [PATCH 316/336] Update CoreClr, CoreFx to preview2-25221-07, preview2-25222-01, respectively (#18771) --- dependencies.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.props b/dependencies.props index 4e16de7b601b..3c0b73627e78 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,8 +9,8 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 8d639b24570e06cd1d8fbefb44cad1d5118e7596 - afdece3cddc1f2bf0071139373aa471305ef06df + e42204ec9796f5ac1363bfdd2fa12ffcc2532a6a + e42204ec9796f5ac1363bfdd2fa12ffcc2532a6a 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -20,8 +20,8 @@ - preview1-25221-03 - preview1-25221-06 + preview2-25222-01 + preview2-25221-07 beta-25016-01 beta-25221-00 beta-25221-00 From afd6bbe02f8949c400449d713e46a1b02f5345e9 Mon Sep 17 00:00:00 2001 From: JayG Date: Fri, 21 Apr 2017 23:29:19 -0600 Subject: [PATCH 317/336] Implemented a couple missing CAS stubs (#18629) * Added DBDataPermission and Attribute CAS Stub * Added System.Drawing.Printing missing CAS Stubs Modified S.D.Common Stubs using generated. * Added Virtual to DBDataPermission.CreateInstance. Added System.Drawing.Printing missing CAS Stubs * cleaned branch * Removed Obsolete attribute, CAS types * Removed additional CAS permissions * Added back Obsolete attribute * Return null from PrintingPermission * Added DBDataPermission and Attribute CAS Stub * Added System.Drawing.Printing missing CAS Stubs Modified S.D.Common Stubs using generated. * Added Virtual to DBDataPermission.CreateInstance. Added System.Drawing.Printing missing CAS Stubs * cleaned branch * Removed Obsolete attribute, CAS types * Removed additional CAS permissions * Added back Obsolete attribute * config file changes * Sorted S.S.P .csproj file and added pkg exclusion * Fixed indent in pkg file * Reverted Merge of itemgroups in S.S.P.csproj * Added Exclusion to UAP pkg, Reverted net461.ignore, Removed Obsolete from added ref/src stubs * Added References to netfx build for Facades * Removed added lines in netfx461.txt --- ...icrosoft.Private.CoreFx.NETCoreApp.pkgproj | 1 + .../Microsoft.Private.CoreFx.UAP.pkgproj | 1 + .../ref/System.Security.Permissions.cs | 69 +++++++++ .../src/System.Security.Permissions.csproj | 139 +++++++++--------- .../System/Data/Common/DBDataPermission.cs | 30 ++++ .../Data/Common/DBDataPermissionAttribute.cs | 24 +++ .../Drawing/Printing/PrintingPermission.cs | 24 +++ .../Printing/PrintingPermissionAttribute.cs | 16 ++ .../Printing/PrintingPermissionLevel.cs | 15 ++ ...patBaseline.netcoreapp.netfx461.ignore.txt | 7 +- .../ApiCompatBaseline.netcoreapp.netfx461.txt | 2 +- 11 files changed, 255 insertions(+), 73 deletions(-) create mode 100644 src/System.Security.Permissions/src/System/Data/Common/DBDataPermission.cs create mode 100644 src/System.Security.Permissions/src/System/Data/Common/DBDataPermissionAttribute.cs create mode 100644 src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermission.cs create mode 100644 src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionAttribute.cs create mode 100644 src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionLevel.cs diff --git a/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj b/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj index fea86aa1b198..5fa2b7f29ad6 100644 --- a/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj +++ b/pkg/Microsoft.Private.CoreFx.NETCoreApp/Microsoft.Private.CoreFx.NETCoreApp.pkgproj @@ -24,6 +24,7 @@ + diff --git a/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.pkgproj b/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.pkgproj index b2304799ecd3..2e124615d68e 100644 --- a/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.pkgproj +++ b/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.pkgproj @@ -31,6 +31,7 @@ + diff --git a/src/System.Security.Permissions/ref/System.Security.Permissions.cs b/src/System.Security.Permissions/ref/System.Security.Permissions.cs index 0cd00a9482ee..761739e7de7b 100644 --- a/src/System.Security.Permissions/ref/System.Security.Permissions.cs +++ b/src/System.Security.Permissions/ref/System.Security.Permissions.cs @@ -27,6 +27,74 @@ void System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Ser } } +namespace System.Data.Common +{ + public abstract partial class DBDataPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission + { + protected DBDataPermission() { } + protected DBDataPermission(System.Data.Common.DBDataPermission permission) { } + protected DBDataPermission(System.Data.Common.DBDataPermissionAttribute permissionAttribute) { } + protected DBDataPermission(System.Security.Permissions.PermissionState state) { } + protected DBDataPermission(System.Security.Permissions.PermissionState state, bool allowBlankPassword) { } + public bool AllowBlankPassword { get; set; } + public virtual void Add(string connectionString, string restrictions, System.Data.KeyRestrictionBehavior behavior) { } + protected void Clear() { } + public override System.Security.IPermission Copy() { throw null; } + protected virtual System.Data.Common.DBDataPermission CreateInstance() { throw null; } + public override void FromXml(System.Security.SecurityElement securityElement) { } + public override System.Security.IPermission Intersect(System.Security.IPermission target) { throw null; } + public override bool IsSubsetOf(System.Security.IPermission target) { throw null; } + public bool IsUnrestricted() { throw null; } + public override System.Security.SecurityElement ToXml() { throw null; } + public override System.Security.IPermission Union(System.Security.IPermission target) { throw null; } + } + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method, + AllowMultiple = true, Inherited = false)] + public abstract partial class DBDataPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute + { + protected DBDataPermissionAttribute(System.Security.Permissions.SecurityAction action) : base(action) { } + public bool AllowBlankPassword { get { throw null; } set { } } + public string ConnectionString { get { throw null; } set { } } + public System.Data.KeyRestrictionBehavior KeyRestrictionBehavior { get { throw null; } set { } } + public string KeyRestrictions { get { throw null; } set { } } + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool ShouldSerializeConnectionString() { throw null; } + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool ShouldSerializeKeyRestrictions() { throw null; } + } +} + +namespace System.Drawing.Printing +{ + public sealed partial class PrintingPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission + { + public PrintingPermission(System.Drawing.Printing.PrintingPermissionLevel printingLevel) { } + public PrintingPermission(System.Security.Permissions.PermissionState state) { } + public System.Drawing.Printing.PrintingPermissionLevel Level { get { throw null; } set { } } + public override System.Security.IPermission Copy() { throw null; } + public override void FromXml(System.Security.SecurityElement element) { } + public override System.Security.IPermission Intersect(System.Security.IPermission target) { throw null; } + public override bool IsSubsetOf(System.Security.IPermission target) { throw null; } + public bool IsUnrestricted() { throw null; } + public override System.Security.SecurityElement ToXml() { throw null; } + public override System.Security.IPermission Union(System.Security.IPermission target) { throw null; } + } + [AttributeUsage(AttributeTargets.All, AllowMultiple = true)] + public sealed partial class PrintingPermissionAttribute : Security.Permissions.CodeAccessSecurityAttribute + { + public PrintingPermissionAttribute(Security.Permissions.SecurityAction action) : base(action) { } + public PrintingPermissionLevel Level { get; set; } + public override System.Security.IPermission CreatePermission() { throw null; } + } + public enum PrintingPermissionLevel + { + AllPrinting = 3, + DefaultPrinting = 2, + NoPrinting = 0, + SafePrinting = 1, + } +} + namespace System.Net.NetworkInformation { [Flags] @@ -274,6 +342,7 @@ public XmlSyntaxException(string message) : base(message) { } public XmlSyntaxException(string message, System.Exception inner) : base(message, inner) { } } } + namespace System.Security.Permissions { public sealed partial class EnvironmentPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission diff --git a/src/System.Security.Permissions/src/System.Security.Permissions.csproj b/src/System.Security.Permissions/src/System.Security.Permissions.csproj index 5783cc091c5e..ef2568dfaa1f 100644 --- a/src/System.Security.Permissions/src/System.Security.Permissions.csproj +++ b/src/System.Security.Permissions/src/System.Security.Permissions.csproj @@ -15,22 +15,50 @@ + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41,28 +69,29 @@ + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + @@ -70,6 +99,20 @@ + + + + + + + + + + + + + + @@ -86,60 +129,22 @@ - - - - - - - - - - - - - - + + + - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/System.Security.Permissions/src/System/Data/Common/DBDataPermission.cs b/src/System.Security.Permissions/src/System/Data/Common/DBDataPermission.cs new file mode 100644 index 000000000000..6dfaafdf858d --- /dev/null +++ b/src/System.Security.Permissions/src/System/Data/Common/DBDataPermission.cs @@ -0,0 +1,30 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Security; +using System.Security.Permissions; + +namespace System.Data.Common +{ + [Serializable] + public abstract class DBDataPermission : CodeAccessPermission, IUnrestrictedPermission + { + protected DBDataPermission() { } + protected DBDataPermission(DBDataPermission dataPermission) { } + protected DBDataPermission(DBDataPermissionAttribute attribute) { } + protected DBDataPermission(PermissionState state) { } + protected DBDataPermission(PermissionState state, bool blankPassword) { } + public bool AllowBlankPassword { get; set; } + public virtual void Add(string connectionString, string restrictions, KeyRestrictionBehavior behavior) { } + protected void Clear() { } + protected virtual DBDataPermission CreateInstance() => null; + public override IPermission Copy() => null; + public override void FromXml(SecurityElement elem) { } + public override IPermission Intersect(IPermission target) => null; + public override bool IsSubsetOf(IPermission target) => false; + public bool IsUnrestricted() => false; + public override SecurityElement ToXml() => null; + public override IPermission Union(IPermission other) { return default(IPermission); } + } +} diff --git a/src/System.Security.Permissions/src/System/Data/Common/DBDataPermissionAttribute.cs b/src/System.Security.Permissions/src/System/Data/Common/DBDataPermissionAttribute.cs new file mode 100644 index 000000000000..1ced75dbfdf5 --- /dev/null +++ b/src/System.Security.Permissions/src/System/Data/Common/DBDataPermissionAttribute.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Security.Permissions; + +namespace System.Data.Common +{ + [Serializable] + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor| AttributeTargets.Method, + AllowMultiple =true, Inherited =false)] + public abstract class DBDataPermissionAttribute : CodeAccessSecurityAttribute + { + protected DBDataPermissionAttribute(SecurityAction action) : base(action) { } + public bool AllowBlankPassword { get; set; } + public string ConnectionString { get; set; } + public KeyRestrictionBehavior KeyRestrictionBehavior { get; set; } + public string KeyRestrictions { get; set; } + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool ShouldSerializeConnectionString() { return false; } + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool ShouldSerializeKeyRestrictions() { return false; } + } +} diff --git a/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermission.cs b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermission.cs new file mode 100644 index 000000000000..5aa5adeb692d --- /dev/null +++ b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermission.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Security; +using System.Security.Permissions; + +namespace System.Drawing.Printing +{ + [Serializable] + public sealed class PrintingPermission : CodeAccessPermission, IUnrestrictedPermission + { + public PrintingPermission(PrintingPermissionLevel printingLevel) { } + public PrintingPermission(PermissionState state) { } + public PrintingPermissionLevel Level { get; set; } + public override IPermission Copy() => null; + public override void FromXml(SecurityElement element) { } + public override IPermission Intersect(IPermission target) => null; + public override bool IsSubsetOf(IPermission target) => false; + public bool IsUnrestricted() => false; + public override SecurityElement ToXml() => null; + public override IPermission Union(IPermission target) => null; + } +} diff --git a/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionAttribute.cs b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionAttribute.cs new file mode 100644 index 000000000000..6b968dd403e7 --- /dev/null +++ b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionAttribute.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Security.Permissions; + +namespace System.Drawing.Printing +{ + [AttributeUsage(AttributeTargets.All, AllowMultiple = true)] + public sealed class PrintingPermissionAttribute : CodeAccessSecurityAttribute + { + public PrintingPermissionAttribute(SecurityAction action) : base(action) { } + public PrintingPermissionLevel Level { get; set; } + public override System.Security.IPermission CreatePermission() { return null; } + } +} diff --git a/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionLevel.cs b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionLevel.cs new file mode 100644 index 000000000000..1e2ce34b717c --- /dev/null +++ b/src/System.Security.Permissions/src/System/Drawing/Printing/PrintingPermissionLevel.cs @@ -0,0 +1,15 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.Drawing.Printing +{ + [Serializable] + public enum PrintingPermissionLevel + { + AllPrinting = 3, + DefaultPrinting = 2, + NoPrinting = 0, + SafePrinting = 1, + } +} diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt index aa280e5f510a..98c4b1f1539e 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt @@ -688,6 +688,7 @@ CannotRemoveBaseTypeOrInterface : Type 'System.Data.SyntaxErrorException' does n CannotRemoveBaseTypeOrInterface : Type 'System.Data.VersionNotFoundException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DbProviderSpecificTypePropertyAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Data.Common.DBDataPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.Odbc.OdbcException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlClient.SqlException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlAlreadyFilledException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. @@ -695,6 +696,7 @@ CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNotFilledExcepti CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlNullValueException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTruncateException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Data.SqlTypes.SqlTypeException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. +CannotRemoveBaseTypeOrInterface : Type 'System.Drawing.Printing.PrintingPermissionAttribute' does not implement interface 'System.Runtime.InteropServices._Attribute' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Net.CookieException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Net.WebException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Net.Sockets.SocketException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. @@ -1358,8 +1360,6 @@ TypesMustExist : Type 'System.Data.DataSetSchemaImporterExtension' does not exis TypesMustExist : Type 'System.Data.PropertyAttributes' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGenerator' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.TypedDataSetGeneratorException' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DBDataPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Data.Common.DBDataPermissionAttribute' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderConfigurationHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactories' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Data.Common.DbProviderFactoriesConfigurationHandler' does not exist in the implementation but it does exist in the contract. @@ -1590,9 +1590,6 @@ TypesMustExist : Type 'System.Drawing.Printing.PrinterUnit' does not exist in th TypesMustExist : Type 'System.Drawing.Printing.PrinterUnitConvert' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintEventHandler' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermission' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermissionAttribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Drawing.Printing.PrintingPermissionLevel' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintPageEventArgs' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintPageEventHandler' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Drawing.Printing.PrintRange' does not exist in the implementation but it does exist in the contract. diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index e8393a306258..5a24c83eff00 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -93,4 +93,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 83 \ No newline at end of file +Total Issues: 83 From 251673b6ae0ae114c5d47316f77fd59edee83031 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Fri, 21 Apr 2017 15:07:51 -0700 Subject: [PATCH 318/336] Update HTTP Diagnostics guide --- .../src/HttpDiagnosticsGuide.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/System.Net.Http/src/HttpDiagnosticsGuide.md b/src/System.Net.Http/src/HttpDiagnosticsGuide.md index 77f24f0495e6..d18d8c347ed6 100644 --- a/src/System.Net.Http/src/HttpDiagnosticsGuide.md +++ b/src/System.Net.Http/src/HttpDiagnosticsGuide.md @@ -39,10 +39,10 @@ var subscription = DiagnosticListener.AllListeners.Subscribe(delegate (Diagnosti ## Events If there is **at least one consumer**, subscribed for "HttpHandlerDiagnosticListener" events, `HttpClientHandler` instruments outgoing request depending on subscription and request properties. -Avoid having more than one consumer for DiagnosticListener. Note that DiagnosticListener best practice is to guard every `Write` method with `IsEnabled` check. In case there is more than one consumer, **each consumer** will receive Write event if **at least one** consumer returned true for `IsEnabled`. +Note that DiagnosticListener best practice is to guard every `Write` method with `IsEnabled` check. In case there is more than one consumer, **each consumer** will receive Write event if **at least one** consumer returned true for `IsEnabled`. #### IsEnabled: System.Net.Http.Activity -If there is a consumer, instrumentation calls `DiagnosticListener.IsEnabled("System.Net.Http.Activity", request)` to check if particular request needs to be instrumented. +If there is a consumer, instrumentation calls `DiagnosticListener.IsEnabled("System.Net.Http.HttpRequestOut", request)` to check if particular request needs to be instrumented. Consumer may optionally provide predicate to DiagnosticListener to prevent some requests from being instrumented: e.g. if logging system has HTTP interface, it could be necessary to filter out requests to logging system itself. ```C# @@ -58,17 +58,18 @@ Consumer may optionally provide predicate to DiagnosticListener to prevent some listener.Subscribe(observer, predicate); ``` ### System.Net.Http.Activity.Start -After initial instrumentation preconditions are met and `DiagnosticListener.IsEnabled("System.Net.Http.Activity", request)` check is passed, instrumentation starts a new Activity to represent outgoing request. -If **"System.Net.Http.Activity.Start"** is enabled, instrumentation writes it. Event payload has Request property with `HttpRequestMessage` object representing request. +After initial instrumentation preconditions are met and `DiagnosticListener.IsEnabled("System.Net.Http.HttpRequestOut", request)` check is passed, instrumentation starts a new Activity to represent outgoing request. +If **"System.Net.Http.HttpRequestOut.Start"** is enabled, instrumentation writes it. Event payload has Request property with `HttpRequestMessage` object representing request. ### System.Net.Http.Activity.Stop -When request is completed (faulted with exception, cancelled or successfully completed), instrumentation stops activity and writes **"System.Net.Http.Activity.Stop"** event. +When request is completed (faulted with exception, cancelled or successfully completed), instrumentation stops activity and writes **"System.Net.Http.HttpRequestOut.Stop"** event. Event payload has following properties: * **Response** with `HttpResponseMessage` object representing response, which could be null if request was failed or cancelled. +* **Request** with `HttpRequestMessage` object representing request. If response was received, you can also access it with `HttpResponseMessage.RequestMessage`, but if there was no response, it could be accessed only from the event payload * **RequestTaskStatus** with `TaskStatus` enum value that describes status of the request task. -This event is sent under the same conditions as "System.Net.Http.Activity.Start" event. +This event is sent under the same conditions as "System.Net.Http.HttpRequestOut.Start" event. #### IsEnabled: System.Net.Http.Exception If request processing causes an exception, instrumentation first checks if consumer wants to receive Exception event. @@ -82,13 +83,13 @@ Otherwise, `Activity.Current` represent some 'parent' activity (presumably incom # Events Flow and Order 1. `DiagnosticListener.IsEnabled()` - determines if there is a consumer -2. `DiagnosticListener.IsEnabled("System.Net.Http.Activity", request)` - determines if this particular request should be instrumented -3. `DiagnosticListener.IsEnabled("System.Net.Http.Activity.Start")` - determines if Start event should be written -4. `DiagnosticListener.Write("System.Net.Http.Activity.Start", new {Request})` - notifies that activity (outgoing request) was started +2. `DiagnosticListener.IsEnabled("System.Net.Http.HttpRequestOut", request)` - determines if this particular request should be instrumented +3. `DiagnosticListener.IsEnabled("System.Net.Http.HttpRequestOut.Start")` - determines if Start event should be written +4. `DiagnosticListener.Write("System.Net.Http.HttpRequestOut.Start", new {Request})` - notifies that activity (outgoing request) was started 5. `DiagnosticListener.IsEnabled("System.Net.Http.Exception")` - determines if exception event (if thrown) should be written -6. `DiagnosticListener.Write("System.Net.Http.Activity.Exception", new {Exception, Request})` - notifies about exception during request processing (if thrown) -7. `DiagnosticListener.Write("System.Net.Http.Activity.Stop", new {Response, RequestTaskStatus})` - notifies that activity (outgoing request) is stopping +6. `DiagnosticListener.Write("System.Net.Http.HttpRequestOut.Exception", new {Exception, Request})` - notifies about exception during request processing (if thrown) +7. `DiagnosticListener.Write("System.Net.Http.HttpRequestOut.Stop", new {Response, RequestTaskStatus})` - notifies that activity (outgoing request) is stopping # Non-Activity events (deprecated) -If there is a subscriber to "HttpHandlerDiagnosticListener", but Activity events are disabled (`DiagnosticListener.IsEnabled("System.Net.Http.Activity", request)` returns false), instrumentation attempts to send legacy "System.Net.Http.Request" and "System.Net.Http.Response" events if they are enabled. +If there is a subscriber to "HttpHandlerDiagnosticListener", but Activity events are disabled (`DiagnosticListener.IsEnabled("System.Net.Http.HttpRequestOut", request)` returns false), instrumentation attempts to send legacy "System.Net.Http.Request" and "System.Net.Http.Response" events if they are enabled. Consumers should consider migrating to Activity events instead of Request/Response events. \ No newline at end of file From 3c71b7c0e7bb784e48a092d5c8a5ce05251a3606 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Sat, 22 Apr 2017 11:02:16 +0200 Subject: [PATCH 319/336] CrossCompilation IsolatedStorage (#18647) * Cross Compilation IsolatedStorage * Indentation * updated configs * seperation of platforms * Cleaned dependencies, updated tests * Targets reversed * removed directory exists check for unix * code cleanup --- .../System.IO.IsolatedStorage.sln | 12 +-- .../src/Configurations.props | 5 +- .../src/System.IO.IsolatedStorage.csproj | 29 ++++--- .../System/IO/IsolatedStorage/Helper.Unix.cs | 14 ++++ .../{Helper.Win32.Unix.cs => Helper.Win32.cs} | 77 +---------------- .../IO/IsolatedStorage/Helper.Win32Unix.cs | 83 +++++++++++++++++++ .../System/IO/IsolatedStorage/Helper.WinRT.cs | 14 ++-- .../System.IO.IsolatedStorage.Tests.csproj | 23 ++++- 8 files changed, 149 insertions(+), 108 deletions(-) create mode 100644 src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Unix.cs rename src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/{Helper.Win32.Unix.cs => Helper.Win32.cs} (51%) create mode 100644 src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32Unix.cs diff --git a/src/System.IO.IsolatedStorage/System.IO.IsolatedStorage.sln b/src/System.IO.IsolatedStorage/System.IO.IsolatedStorage.sln index 83100c8d2933..f4c11d4eeb97 100644 --- a/src/System.IO.IsolatedStorage/System.IO.IsolatedStorage.sln +++ b/src/System.IO.IsolatedStorage/System.IO.IsolatedStorage.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.26403.7 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.IsolatedStorage.Tests", "tests\System.IO.IsolatedStorage.Tests.csproj", "{BF4F9507-8FBD-45EA-81C9-3ED89C052C91}" ProjectSection(ProjectDependencies) = postProject @@ -30,10 +30,10 @@ Global {BF4F9507-8FBD-45EA-81C9-3ED89C052C91}.Debug|Any CPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU {BF4F9507-8FBD-45EA-81C9-3ED89C052C91}.Release|Any CPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU {BF4F9507-8FBD-45EA-81C9-3ED89C052C91}.Release|Any CPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU - {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU - {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU - {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU - {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Release|Any CPU.Build.0 = netcoreapp-Release|Any CPU + {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Debug|Any CPU.ActiveCfg = uap-Windows_NT-Debug|Any CPU + {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Debug|Any CPU.Build.0 = uap-Windows_NT-Debug|Any CPU + {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Release|Any CPU.ActiveCfg = uap-Windows_NT-Release|Any CPU + {FAF5D1E4-BA43-4663-8429-C069066D75CB}.Release|Any CPU.Build.0 = uap-Windows_NT-Release|Any CPU {750200D5-661A-42AA-9E1F-2A151F5AEE74}.Debug|Any CPU.ActiveCfg = netcoreapp-Debug|Any CPU {750200D5-661A-42AA-9E1F-2A151F5AEE74}.Debug|Any CPU.Build.0 = netcoreapp-Debug|Any CPU {750200D5-661A-42AA-9E1F-2A151F5AEE74}.Release|Any CPU.ActiveCfg = netcoreapp-Release|Any CPU diff --git a/src/System.IO.IsolatedStorage/src/Configurations.props b/src/System.IO.IsolatedStorage/src/Configurations.props index a8910ef718c7..b416be27c1b5 100644 --- a/src/System.IO.IsolatedStorage/src/Configurations.props +++ b/src/System.IO.IsolatedStorage/src/Configurations.props @@ -1,9 +1,10 @@  - + + netcoreapp-Windows_NT; + netcoreapp-Unix; uap-Windows_NT; - netcoreapp; \ No newline at end of file diff --git a/src/System.IO.IsolatedStorage/src/System.IO.IsolatedStorage.csproj b/src/System.IO.IsolatedStorage/src/System.IO.IsolatedStorage.csproj index 0cc71828e019..c71d785db96d 100644 --- a/src/System.IO.IsolatedStorage/src/System.IO.IsolatedStorage.csproj +++ b/src/System.IO.IsolatedStorage/src/System.IO.IsolatedStorage.csproj @@ -6,8 +6,10 @@ {FAF5D1E4-BA43-4663-8429-C069066D75CB} - - + + + + @@ -24,34 +26,37 @@ - + + + + + + + - - - - - + + + + + - - - - + \ No newline at end of file diff --git a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Unix.cs b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Unix.cs new file mode 100644 index 000000000000..ffe5a1403b28 --- /dev/null +++ b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Unix.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.IO.IsolatedStorage +{ + internal static partial class Helper + { + internal static void CreateDirectory(string path, IsolatedStorageScope scope) + { + Directory.CreateDirectory(path); + } + } +} diff --git a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.Unix.cs b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.cs similarity index 51% rename from src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.Unix.cs rename to src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.cs index 221db2ee23bc..2084549e8105 100644 --- a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.Unix.cs +++ b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Reflection; -using System.Runtime.InteropServices; -using System.Security; using System.Security.AccessControl; using System.Security.Principal; @@ -12,36 +9,6 @@ namespace System.IO.IsolatedStorage { internal static partial class Helper { - internal static string GetDataDirectory(IsolatedStorageScope scope) - { - // This is the relevant special folder for the given scope plus "IsolatedStorage". - // It is meant to replicate the behavior of the VM ComIsolatedStorage::GetRootDir(). - - // (note that Silverlight used "CoreIsolatedStorage" for a directory name and did not support machine scope) - - string dataDirectory = null; - - if (IsMachine(scope)) - { - // SpecialFolder.CommonApplicationData -> C:\ProgramData - dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); - } - else if (IsRoaming(scope)) - { - // SpecialFolder.ApplicationData -> C:\Users\Joe\AppData\Roaming - dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - } - else - { - // SpecialFolder.LocalApplicationData -> C:\Users\Joe\AppData\Local - dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); - } - - dataDirectory = Path.Combine(dataDirectory, IsolatedStorageDirectoryName); - - return dataDirectory; - } - internal static void CreateDirectory(string path, IsolatedStorageScope scope) { if (Directory.Exists(path)) @@ -49,7 +16,7 @@ internal static void CreateDirectory(string path, IsolatedStorageScope scope) DirectoryInfo info = Directory.CreateDirectory(path); - if (IsMachine(scope) && RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + if (IsMachine(scope)) { // Need to emulate COMIsolatedStorage::CreateDirectoryWithDacl(), which gives the following rights: // @@ -97,47 +64,5 @@ internal static void CreateDirectory(string path, IsolatedStorageScope scope) info.SetAccessControl(security); } } - - internal static void GetDefaultIdentityAndHash(out object identity, out string hash, char separator) - { - // NetFX (desktop CLR) IsolatedStorage uses identity from System.Security.Policy.Evidence to build - // the folder structure on disk. It would use the "best" available evidence in this order: - // - // 1. Publisher (Authenticode) - // 2. StrongName - // 3. Url (CodeBase) - // 4. Site - // 5. Zone - // - // For CoreFX StrongName and Url are the only relevant types. By default evidence for the Domain comes - // from the Assembly which comes from the EntryAssembly(). We'll emulate the legacy default behavior - // by pulling directly from EntryAssembly. - // - // Note that it is possible that there won't be an EntryAssembly, which is something NetFX doesn't - // have to deal with and shouldn't be likely on CoreFX due to a single AppDomain. Without Evidence - // to pull from we'd have to dig into the use case to try and find a reasonable solution should we - // run into this in the wild. - - Assembly assembly = Assembly.GetEntryAssembly(); - - if (assembly == null) - throw new IsolatedStorageException(SR.IsolatedStorage_Init); - - AssemblyName assemblyName = assembly.GetName(); - Uri codeBase = new Uri(assembly.CodeBase); - - hash = IdentityHelper.GetNormalizedStrongNameHash(assemblyName); - if (hash != null) - { - hash = "StrongName" + separator + hash; - identity = assemblyName; - } - else - { - hash = IdentityHelper.GetNormalizedUriHash(codeBase); - hash = "Url" + separator + hash; - identity = codeBase; - } - } } } diff --git a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32Unix.cs b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32Unix.cs new file mode 100644 index 000000000000..0df817a33c36 --- /dev/null +++ b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.Win32Unix.cs @@ -0,0 +1,83 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Reflection; +using System.Security; + +namespace System.IO.IsolatedStorage +{ + internal static partial class Helper + { + internal static string GetDataDirectory(IsolatedStorageScope scope) + { + // This is the relevant special folder for the given scope plus "IsolatedStorage". + // It is meant to replicate the behavior of the VM ComIsolatedStorage::GetRootDir(). + + // (note that Silverlight used "CoreIsolatedStorage" for a directory name and did not support machine scope) + + string dataDirectory = null; + + if (IsMachine(scope)) + { + // SpecialFolder.CommonApplicationData -> C:\ProgramData + dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); + } + else if (IsRoaming(scope)) + { + // SpecialFolder.ApplicationData -> C:\Users\Joe\AppData\Roaming + dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + } + else + { + // SpecialFolder.LocalApplicationData -> C:\Users\Joe\AppData\Local + dataDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + } + + dataDirectory = Path.Combine(dataDirectory, IsolatedStorageDirectoryName); + + return dataDirectory; + } + + internal static void GetDefaultIdentityAndHash(out object identity, out string hash, char separator) + { + // NetFX (desktop CLR) IsolatedStorage uses identity from System.Security.Policy.Evidence to build + // the folder structure on disk. It would use the "best" available evidence in this order: + // + // 1. Publisher (Authenticode) + // 2. StrongName + // 3. Url (CodeBase) + // 4. Site + // 5. Zone + // + // For CoreFX StrongName and Url are the only relevant types. By default evidence for the Domain comes + // from the Assembly which comes from the EntryAssembly(). We'll emulate the legacy default behavior + // by pulling directly from EntryAssembly. + // + // Note that it is possible that there won't be an EntryAssembly, which is something NetFX doesn't + // have to deal with and shouldn't be likely on CoreFX due to a single AppDomain. Without Evidence + // to pull from we'd have to dig into the use case to try and find a reasonable solution should we + // run into this in the wild. + + Assembly assembly = Assembly.GetEntryAssembly(); + + if (assembly == null) + throw new IsolatedStorageException(SR.IsolatedStorage_Init); + + AssemblyName assemblyName = assembly.GetName(); + Uri codeBase = new Uri(assembly.CodeBase); + + hash = IdentityHelper.GetNormalizedStrongNameHash(assemblyName); + if (hash != null) + { + hash = "StrongName" + separator + hash; + identity = assemblyName; + } + else + { + hash = "Url" + separator + IdentityHelper.GetNormalizedUriHash(codeBase); + identity = codeBase; + } + } + } +} diff --git a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.WinRT.cs b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.WinRT.cs index 7f2fb6a70d18..5e5776e75d37 100644 --- a/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.WinRT.cs +++ b/src/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/Helper.WinRT.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using System.Security; using Windows.ApplicationModel; using Windows.Storage; @@ -22,16 +21,13 @@ internal static string GetDataDirectory(IsolatedStorageScope scope) { dataDirectory = ApplicationData.Current.SharedLocalFolder.Path; } + if (!IsRoaming(scope)) + { + dataDirectory = ApplicationData.Current.LocalFolder.Path; + } else { - if (!IsRoaming(scope)) - { - dataDirectory = ApplicationData.Current.LocalFolder.Path; - } - else - { - dataDirectory = ApplicationData.Current.RoamingFolder.Path; - } + dataDirectory = ApplicationData.Current.RoamingFolder.Path; } dataDirectory = Path.Combine(dataDirectory, IsolatedStorageDirectoryName); diff --git a/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj b/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj index d51df2fa0f99..61f9f8dada34 100644 --- a/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj +++ b/src/System.IO.IsolatedStorage/tests/System.IO.IsolatedStorage.Tests.csproj @@ -18,6 +18,26 @@ + + + Internals\Helper.Win32Unix.cs + + + + + Internals\Helper.Win32.cs + + + + + Internals\Helper.Unix.cs + + + + + Internals\Helper.WinRT.cs + + Common\System\AssertExtensions.cs @@ -31,9 +51,6 @@ Internals\Helper.cs - - Internals\Helper.Win32.Unix.cs - Common\System\Security\IdentityHelper.cs From f645c5b82352b89777425fad5d6cf023b54e235d Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sat, 22 Apr 2017 13:37:32 +0700 Subject: [PATCH 320/336] Address PR feedback --- .../Specialized/DictionaryWrapper.cs | 15 ++------- .../src/System/Diagnostics/Process.Windows.cs | 2 +- .../tests/ProcessStartInfoTests.cs | 33 +++++++++---------- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs b/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs index ea309c1ace2c..be0bed78d7d5 100644 --- a/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs +++ b/src/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs @@ -41,18 +41,7 @@ public object this[object key] public bool IsFixedSize => ((IDictionary)_contents).IsFixedSize; public object SyncRoot => ((IDictionary)_contents).SyncRoot; - public void Add(string key, string value) - { - // If the key already exists, overwrite it. - if (ContainsKey(key)) - { - this[key] = value; - } - else - { - _contents.Add(key, value); - } - } + public void Add(string key, string value) => this[key] = value; public void Add(KeyValuePair item) => Add(item.Key, item.Value); @@ -95,4 +84,4 @@ public bool Remove(KeyValuePair item) IEnumerator IEnumerable.GetEnumerator() => _contents.GetEnumerator(); IDictionaryEnumerator IDictionary.GetEnumerator() => _contents.GetEnumerator(); } -} \ No newline at end of file +} diff --git a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs index 39d87e337e37..d68b1f80cad1 100644 --- a/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs +++ b/src/System.Diagnostics.Process/src/System/Diagnostics/Process.Windows.cs @@ -648,7 +648,7 @@ private bool StartCore(ProcessStartInfo startInfo) if (startInfo._environmentVariables != null) { creationFlags |= Interop.Advapi32.StartupInfoOptions.CREATE_UNICODE_ENVIRONMENT; - byte[] environmentBytes = EnvironmentVariablesToByteArray(startInfo.Environment); + byte[] environmentBytes = EnvironmentVariablesToByteArray(startInfo._environmentVariables); environmentHandle = GCHandle.Alloc(environmentBytes, GCHandleType.Pinned); environmentPtr = environmentHandle.AddrOfPinnedObject(); } diff --git a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs index 992e1ea0020f..fa74fec620e2 100644 --- a/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs +++ b/src/System.Diagnostics.Process/tests/ProcessStartInfoTests.cs @@ -43,8 +43,8 @@ public void TestEnvironmentProperty() environment.Remove("NewKey"); Assert.Equal(countItems + 1, environment.Count); - environment.Add("NewKey2", "NewValue2Overriden"); - Assert.Equal("NewValue2Overriden", environment["NewKey2"]); + environment.Add("NewKey2", "NewValue2Overridden"); + Assert.Equal("NewValue2Overridden", environment["NewKey2"]); //Clear environment.Clear(); @@ -128,8 +128,8 @@ public void TestEnvironmentProperty() //Exception not thrown with invalid key Assert.Throws(() => environment.Add(null, "NewValue2")); - environment.Add("NewKey2", "NewValue2OverridenAgain"); - Assert.Equal("NewValue2OverridenAgain", environment["NewKey2"]); + environment.Add("NewKey2", "NewValue2OverriddenAgain"); + Assert.Equal("NewValue2OverriddenAgain", environment["NewKey2"]); //Remove Item environment.Remove("NewKey98"); @@ -141,11 +141,11 @@ public void TestEnvironmentProperty() //"Exception not thrown with null key" Assert.Throws(() => environment["1bB"]); - Assert.True(environment.Contains(new KeyValuePair("NewKey2", "NewValue2OverridenAgain"))); - Assert.Equal(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), environment.Contains(new KeyValuePair("NEWKeY2", "NewValue2OverridenAgain"))); + Assert.True(environment.Contains(new KeyValuePair("NewKey2", "NewValue2OverriddenAgain"))); + Assert.Equal(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), environment.Contains(new KeyValuePair("NEWKeY2", "NewValue2OverriddenAgain"))); - Assert.False(environment.Contains(new KeyValuePair("NewKey2", "newvalue2overridenagain"))); - Assert.False(environment.Contains(new KeyValuePair("newkey2", "newvalue2overridenagain"))); + Assert.False(environment.Contains(new KeyValuePair("NewKey2", "newvalue2Overriddenagain"))); + Assert.False(environment.Contains(new KeyValuePair("newkey2", "newvalue2Overriddenagain"))); //Use KeyValuePair Enumerator string[] results = new string[2]; @@ -155,7 +155,7 @@ public void TestEnvironmentProperty() x.MoveNext(); results[1] = x.Current.Key + " " + x.Current.Value; - Assert.Equal(new string[] { "NewKey NewValue", "NewKey2 NewValue2OverridenAgain" }, results.OrderBy(s => s)); + Assert.Equal(new string[] { "NewKey NewValue", "NewKey2 NewValue2OverriddenAgain" }, results.OrderBy(s => s)); //IsReadonly Assert.False(environment.IsReadOnly); @@ -471,8 +471,8 @@ public void TestEnvironmentVariables_Environment_DataRoundTrips() Assert.Throws(null, () => psi.EnvironmentVariables.Add("NewKey2", "NewValue2")); psi.EnvironmentVariables.Add("NewKey3", "NewValue3"); - psi.Environment.Add("NewKey3", "NewValue3Overriden"); - Assert.Equal("NewValue3Overriden", psi.Environment["NewKey3"]); + psi.Environment.Add("NewKey3", "NewValue3Overridden"); + Assert.Equal("NewValue3Overridden", psi.Environment["NewKey3"]); psi.EnvironmentVariables.Clear(); Assert.Equal(0, psi.Environment.Count); @@ -721,7 +721,7 @@ public void TestEnvironmentVariablesPropertyUnix(){ result = null; index = 0; - foreach (KeyValuePair e1 in environmentVariables) + foreach (DictionaryEntry e1 in environmentVariables) { index++; result += e1.Key; @@ -744,16 +744,15 @@ public void TestEnvironmentVariablesPropertyUnix(){ //Exception not thrown with invalid key Assert.Throws(() => environmentVariables.Add(null, "NewValue2")); - //Invalid Key to add Assert.Throws(() => environmentVariables.Add("newkey2", "NewValue2")); - //Use KeyValuePair Enumerator - var x = environmentVariables.GetEnumerator() as IEnumerator>; + //Use DictionaryEntry Enumerator + var x = environmentVariables.GetEnumerator() as IEnumerator; x.MoveNext(); - var y1 = x.Current; + var y1 = (DictionaryEntry)x.Current; Assert.Equal("NewKey newvalue", y1.Key + " " + y1.Value); x.MoveNext(); - y1 = x.Current; + y1 = (DictionaryEntry)x.Current; Assert.Equal("newkey2 NewValue2", y1.Key + " " + y1.Value); environmentVariables.Add("newkey3", "newvalue3"); From 414422ce0c51b277a709f4ed63a4ae607e7af8dc Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Sat, 22 Apr 2017 07:08:54 -0700 Subject: [PATCH 321/336] Update CoreClr, CoreFx to preview2-25222-01, preview2-25222-02, respectively --- dependencies.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.props b/dependencies.props index 3c0b73627e78..728b8838e301 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,8 +9,8 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - e42204ec9796f5ac1363bfdd2fa12ffcc2532a6a - e42204ec9796f5ac1363bfdd2fa12ffcc2532a6a + 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de + 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -20,8 +20,8 @@ - preview2-25222-01 - preview2-25221-07 + preview2-25222-02 + preview2-25222-01 beta-25016-01 beta-25221-00 beta-25221-00 From 7f42a283a34db0943fc68da41b9ddd25a2932e0e Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Sat, 22 Apr 2017 09:08:01 -0700 Subject: [PATCH 322/336] Fix multiple netfx intermittent failures in System.Security.Cryptography.Algorithms There are two value mutation tests proving that global state isn't modified in corefx which happen to modify global state in netfx, and once the state is corrupted any remaining tests will fail (and any parallel tests could have already failed). So disable those tests on netfx until they would pass there. --- src/System.Security.Cryptography.Algorithms/tests/AesTests.cs | 1 + .../tests/TripleDesTests.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/System.Security.Cryptography.Algorithms/tests/AesTests.cs b/src/System.Security.Cryptography.Algorithms/tests/AesTests.cs index b459ee4b5855..4c32fce60d72 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/AesTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/AesTests.cs @@ -21,6 +21,7 @@ public static void AesDefaultCtor() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Causing other tests to intermittently fail on netfx (https://github.com/dotnet/corefx/issues/18690)")] public static void EnsureLegalSizesValuesIsolated() { new AesLegalSizesBreaker().Dispose(); diff --git a/src/System.Security.Cryptography.Algorithms/tests/TripleDesTests.cs b/src/System.Security.Cryptography.Algorithms/tests/TripleDesTests.cs index 3f674fd91be2..3e29c445264c 100644 --- a/src/System.Security.Cryptography.Algorithms/tests/TripleDesTests.cs +++ b/src/System.Security.Cryptography.Algorithms/tests/TripleDesTests.cs @@ -77,6 +77,7 @@ public static void TripleDesCreate() } [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Causing other tests to intermittently fail on netfx (https://github.com/dotnet/corefx/issues/18690)")] public static void EnsureLegalSizesValuesIsolated() { new TripleDESLegalSizesBreaker().Dispose(); From ea8d298d5c6045e71c271d5c5df8bbac38a00fbe Mon Sep 17 00:00:00 2001 From: Olaf Keijsers Date: Sat, 22 Apr 2017 20:51:03 +0200 Subject: [PATCH 323/336] Removed dead code from System.Collections for issue #17905 (#18779) --- src/Common/src/System/Collections/HashHelpers.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Common/src/System/Collections/HashHelpers.cs b/src/Common/src/System/Collections/HashHelpers.cs index 16f5c92c4e57..e7f7ed2e56c3 100644 --- a/src/Common/src/System/Collections/HashHelpers.cs +++ b/src/Common/src/System/Collections/HashHelpers.cs @@ -80,11 +80,5 @@ public static int ExpandPrime(int oldSize) // This is the maximum prime smaller than Array.MaxArrayLength public const int MaxPrimeArrayLength = 0x7FEFFFFD; - - private static ConditionalWeakTable s_serializationInfoTable; - - internal static ConditionalWeakTable SerializationInfoTable => LazyInitializer.EnsureInitialized(ref s_serializationInfoTable); - - internal static object GetEqualityComparerForSerialization(object comparer) => comparer; } } From cc019ec18caa91b5d6818b4a73f0f4a496772572 Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Sun, 23 Apr 2017 11:29:19 -0700 Subject: [PATCH 324/336] Update CoreClr to preview2-25223-01 (#18783) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 728b8838e301..5c1593735e77 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de - 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de + 629e0e2641e611306eb6915c78ffcf6a6c74d7af 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -21,7 +21,7 @@ preview2-25222-02 - preview2-25222-01 + preview2-25223-01 beta-25016-01 beta-25221-00 beta-25221-00 From 01d156cf6952a5e1cc69d02c1896d426313c32ba Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Sun, 23 Apr 2017 18:08:46 -0700 Subject: [PATCH 325/336] Update CoreClr to preview2-25223-02 (#18792) --- dependencies.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.props b/dependencies.props index 5c1593735e77..8b7caedf54a7 100644 --- a/dependencies.props +++ b/dependencies.props @@ -10,7 +10,7 @@ --> 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de - 629e0e2641e611306eb6915c78ffcf6a6c74d7af + 48ef31b26c4b2c572204042942aac4ae3fad1d11 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 e84480e8160b65a59a4868ed5cddbba30f34b976 e84480e8160b65a59a4868ed5cddbba30f34b976 @@ -21,7 +21,7 @@ preview2-25222-02 - preview2-25223-01 + preview2-25223-02 beta-25016-01 beta-25221-00 beta-25221-00 From e286f3a5b2ccb41a964665423763ad87ad2fcd1f Mon Sep 17 00:00:00 2001 From: David Shulman Date: Sat, 22 Apr 2017 18:25:01 -0700 Subject: [PATCH 326/336] Root cause System.Net.Requests test failures on NETFX Finished investigation of failures on .NET Framework for System.Net.Requests. Cleaned up some tests that used "global" variables in the test class. Since tests are running in parallel, that wasn't a good idea. Changed to use the state object passed into the BeginGet* methods (which is best practice). Added new bugs #18784, #18787 and #18800. Fixes #17842. --- .../tests/FileWebRequestTest.cs | 5 +- .../tests/GlobalProxySelectionTest.cs | 7 +- .../tests/HttpWebRequestHeaderTest.cs | 25 +++- .../tests/HttpWebRequestTest.cs | 134 ++++++++++-------- .../tests/HttpWebResponseHeaderTest.cs | 33 +++-- .../tests/RequestStreamTest.cs | 35 ++++- 6 files changed, 154 insertions(+), 85 deletions(-) diff --git a/src/System.Net.Requests/tests/FileWebRequestTest.cs b/src/System.Net.Requests/tests/FileWebRequestTest.cs index 6a35d47c84af..d0de43d8c5c8 100644 --- a/src/System.Net.Requests/tests/FileWebRequestTest.cs +++ b/src/System.Net.Requests/tests/FileWebRequestTest.cs @@ -92,7 +92,6 @@ public abstract class FileWebRequestTestBase public abstract Task GetResponseAsync(WebRequest request); public abstract Task GetRequestStreamAsync(WebRequest request); - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] [Fact] public async Task ReadFile_ContainsExpectedContent() { @@ -109,10 +108,8 @@ public async Task ReadFile_ContainsExpectedContent() using (WebResponse response = await GetResponseAsync(request)) { Assert.Equal(data.Length, response.ContentLength); - Assert.Equal(data.Length.ToString(), response.Headers[HttpRequestHeader.ContentLength]); Assert.Equal("application/octet-stream", response.ContentType); - Assert.Equal("application/octet-stream", response.Headers[HttpRequestHeader.ContentType]); Assert.True(response.SupportsHeaders); Assert.NotNull(response.Headers); @@ -232,7 +229,7 @@ public async Task BeginGetResponse_OnNonexistentFile_ShouldNotCrashApplication(b public abstract class AsyncFileWebRequestTestBase : FileWebRequestTestBase { - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "concurrent read/write not supported on netfx")] [Fact] public async Task ConcurrentReadWrite_ResponseBlocksThenGetsNullStream() { diff --git a/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs b/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs index 7455a2ba13bf..f9278da621a3 100644 --- a/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs +++ b/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs @@ -38,7 +38,6 @@ public bool IsBypassed(Uri host) } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] [Fact] public void Select_Success() { @@ -48,7 +47,10 @@ public void Select_Success() #pragma warning disable 0618 //GlobalProxySelection is Deprecated. Assert.NotNull(GlobalProxySelection.Select); - Assert.Equal(GlobalProxySelection.Select, WebRequest.DefaultWebProxy); + if (!PlatformDetection.IsFullFramework) + { + Assert.Equal(GlobalProxySelection.Select, WebRequest.DefaultWebProxy); + } #pragma warning restore 0618 WebRequest.DefaultWebProxy = myProxy; @@ -87,7 +89,6 @@ public void Select_Success() }).Dispose(); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] [Fact] public void GetEmptyWebProxy_Success() { diff --git a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs index 714c3ebd0afc..4a5612307c34 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestHeaderTest.cs @@ -17,6 +17,17 @@ public class HttpWebRequestHeaderTest { public static readonly object[][] EchoServers = Configuration.Http.EchoServers; + public HttpWebRequestHeaderTest() + { + if (PlatformDetection.IsFullFramework) + { + // On .NET Framework, the default limit for connections/server is very low (2). + // On .NET Core, the default limit is higher. Since these tests run in parallel, + // the limit needs to be increased to avoid timeouts when running the tests. + System.Net.ServicePointManager.DefaultConnectionLimit = int.MaxValue; + } + } + [OuterLoop] [Theory, MemberData(nameof(EchoServers))] public void Ctor_VerifyHttpRequestDefaults(Uri remoteServer) @@ -82,13 +93,19 @@ public void CookieContainer_Count_Add(Uri remoteServer) Assert.Equal(request.CookieContainer.GetCookies(remoteServer).Count, 2); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] // Difference in behavior [OuterLoop] [Theory, MemberData(nameof(EchoServers))] - public void HttpWebRequest_ServicePoint_Throws(Uri remoteServer) + public void HttpWebRequest_ServicePoint_ExpectedResult(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); - Assert.Throws(() => request.ServicePoint); + if (PlatformDetection.IsFullFramework) + { + Assert.NotNull(request.ServicePoint); + } + else + { + Assert.Throws(() => request.ServicePoint); + } } [OuterLoop] @@ -133,7 +150,6 @@ public void HttpWebRequest_DefaultCachePolicy_BypassCache() Assert.Equal(Cache.RequestCacheLevel.BypassCache, HttpWebRequest.DefaultCachePolicy.Level); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hangs in desktop. [OuterLoop] [Theory, MemberData(nameof(EchoServers))] public void HttpWebRequest_ProxySetAfterGetResponse_Fails(Uri remoteServer) @@ -211,7 +227,6 @@ public void HttpWebRequest_ContentLengthSetGet_Ok() } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #16928")] //Test hangs in desktop. public void HttpWebRequest_PreAuthenticateGetSet_Ok() { HttpWebRequest request = WebRequest.CreateHttp(Configuration.Http.RemoteEchoServer); diff --git a/src/System.Net.Requests/tests/HttpWebRequestTest.cs b/src/System.Net.Requests/tests/HttpWebRequestTest.cs index 82f5cb57e20e..d26b9da09f13 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestTest.cs @@ -19,14 +19,6 @@ public partial class HttpWebRequestTest private const string RequestBody = "This is data to POST."; private readonly byte[] _requestBodyBytes = Encoding.UTF8.GetBytes(RequestBody); private readonly NetworkCredential _explicitCredential = new NetworkCredential("user", "password", "domain"); - - private HttpWebRequest _savedHttpWebRequest = null; - private WebHeaderCollection _savedResponseHeaders = null; - private Exception _savedRequestStreamException = null; - private Exception _savedResponseException = null; - - private int _requestStreamCallbackCallCount = 0; - private int _responseCallbackCallCount = 0; private readonly ITestOutputHelper _output; public static readonly object[][] EchoServers = System.Net.Test.Common.Configuration.Http.EchoServers; @@ -245,47 +237,45 @@ public void BeginGetRequestStream_CreatePostRequestThenAbort_ThrowsWebException( } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "no exception thrown on netfx")] public void BeginGetRequestStream_CreatePostRequestThenCallTwice_ThrowsInvalidOperationException(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); - _savedHttpWebRequest.Method = "POST"; + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); + request.Method = "POST"; - IAsyncResult asyncResult = _savedHttpWebRequest.BeginGetRequestStream(null, null); + IAsyncResult asyncResult = request.BeginGetRequestStream(null, null); Assert.Throws(() => { - _savedHttpWebRequest.BeginGetRequestStream(null, null); + request.BeginGetRequestStream(null, null); }); } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "request stream not allowed for GET on netfx")] public void BeginGetRequestStream_CreateRequestThenBeginGetResponsePrior_ThrowsInvalidOperationException(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); - IAsyncResult asyncResult = _savedHttpWebRequest.BeginGetResponse(null, null); + IAsyncResult asyncResult = request.BeginGetResponse(null, null); Assert.Throws(() => { - _savedHttpWebRequest.BeginGetRequestStream(null, null); + request.BeginGetRequestStream(null, null); }); } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public void BeginGetResponse_CreateRequestThenCallTwice_ThrowsInvalidOperationException(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); - IAsyncResult asyncResult = _savedHttpWebRequest.BeginGetResponse(null, null); + IAsyncResult asyncResult = request.BeginGetResponse(null, null); Assert.Throws(() => { - _savedHttpWebRequest.BeginGetResponse(null, null); + request.BeginGetResponse(null, null); }); } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public void BeginGetResponse_CreatePostRequestThenAbort_ThrowsWebException(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -296,7 +286,6 @@ public void BeginGetResponse_CreatePostRequestThenAbort_ThrowsWebException(Uri r } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task GetRequestStreamAsync_WriteAndDisposeRequestStreamThenOpenRequestStream_ThrowsArgumentException(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -313,7 +302,6 @@ public async Task GetRequestStreamAsync_WriteAndDisposeRequestStreamThenOpenRequ } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task GetRequestStreamAsync_SetPOSTThenGet_ExpectNotNull(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -323,7 +311,6 @@ public async Task GetRequestStreamAsync_SetPOSTThenGet_ExpectNotNull(Uri remoteS } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task GetResponseAsync_GetResponseStream_ExpectNotNull(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -368,7 +355,6 @@ public async Task GetResponseAsync_PostRequestStream_ContainsData(Uri remoteServ [ConditionalTheory(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotFedoraOrRedHatOrCentos))] // #16201 [MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task GetResponseAsync_UseDefaultCredentials_ExpectSuccess(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -403,7 +389,6 @@ public async Task GetResponseAsync_ResourceNotFound_ThrowsWebException(Uri remot } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task HaveResponse_GetResponseAsync_ExpectTrue(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -413,7 +398,6 @@ public async Task HaveResponse_GetResponseAsync_ExpectTrue(Uri remoteServer) [ConditionalTheory(nameof(PlatformDetection) + "." + nameof(PlatformDetection.IsNotFedoraOrRedHatOrCentos))] // #16201 [MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task Headers_GetResponseHeaders_ContainsExpectedValue(Uri remoteServer) { HttpWebRequest request = WebRequest.CreateHttp(remoteServer); @@ -469,7 +453,6 @@ public void SupportsCookieContainer_GetDefault_ExpectTrue(Uri remoteServer) } [Theory, MemberData(nameof(EchoServers))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] //Test hang forever in desktop. public async Task SimpleScenario_UseGETVerb_Success(Uri remoteServer) { HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); @@ -526,97 +509,106 @@ public async Task ContentType_AddHeaderWithNoContent_SendRequest_HeaderGetsSent( Assert.True(responseBody.Contains("Content-Type")); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] [Theory, MemberData(nameof(EchoServers))] public void Abort_BeginGetRequestStreamThenAbort_EndGetRequestStreamThrowsWebException(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); - _savedHttpWebRequest.Method = "POST"; + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); + request.Method = "POST"; + RequestState state = new RequestState(); + state.Request = request; - _savedHttpWebRequest.BeginGetResponse(new AsyncCallback(RequestStreamCallback), null); + request.BeginGetResponse(new AsyncCallback(RequestStreamCallback), state); - _savedHttpWebRequest.Abort(); - _savedHttpWebRequest = null; - WebException wex = _savedRequestStreamException as WebException; + request.Abort(); + Assert.Equal(1, state.RequestStreamCallbackCallCount); + WebException wex = state.SavedRequestStreamException as WebException; Assert.Equal(WebExceptionStatus.RequestCanceled, wex.Status); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "ResponseCallback not called after Abort on netfx")] [Theory, MemberData(nameof(EchoServers))] public void Abort_BeginGetResponseThenAbort_ResponseCallbackCalledBeforeAbortReturns(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); + RequestState state = new RequestState(); + state.Request = request; - _savedHttpWebRequest.BeginGetResponse(new AsyncCallback(ResponseCallback), null); + request.BeginGetResponse(new AsyncCallback(ResponseCallback), state); - _savedHttpWebRequest.Abort(); - Assert.Equal(1, _responseCallbackCallCount); + request.Abort(); + Assert.Equal(1, state.ResponseCallbackCallCount); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] + [ActiveIssue(18800)] [Theory, MemberData(nameof(EchoServers))] public void Abort_BeginGetResponseThenAbort_EndGetResponseThrowsWebException(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); + RequestState state = new RequestState(); + state.Request = request; - _savedHttpWebRequest.BeginGetResponse(new AsyncCallback(ResponseCallback), null); + request.BeginGetResponse(new AsyncCallback(ResponseCallback), state); - _savedHttpWebRequest.Abort(); - WebException wex = _savedResponseException as WebException; + request.Abort(); + WebException wex = state.SavedResponseException as WebException; Assert.Equal(WebExceptionStatus.RequestCanceled, wex.Status); } [Theory, MemberData(nameof(EchoServers))] public void Abort_BeginGetResponseUsingNoCallbackThenAbort_Success(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); - _savedHttpWebRequest.BeginGetResponse(null, null); + request.BeginGetResponse(null, null); - _savedHttpWebRequest.Abort(); + request.Abort(); } [Theory, MemberData(nameof(EchoServers))] public void Abort_CreateRequestThenAbort_Success(Uri remoteServer) { - _savedHttpWebRequest = HttpWebRequest.CreateHttp(remoteServer); + HttpWebRequest request = HttpWebRequest.CreateHttp(remoteServer); - _savedHttpWebRequest.Abort(); + request.Abort(); } private void RequestStreamCallback(IAsyncResult asynchronousResult) { - _requestStreamCallbackCallCount++; + RequestState state = (RequestState) asynchronousResult.AsyncState; + state.RequestStreamCallbackCallCount++; try { - Stream stream = (Stream)_savedHttpWebRequest.EndGetRequestStream(asynchronousResult); + HttpWebRequest request = state.Request; + state.Response = (HttpWebResponse) request.EndGetResponse(asynchronousResult); + + Stream stream = (Stream) request.EndGetRequestStream(asynchronousResult); stream.Dispose(); } catch (Exception ex) { - _savedRequestStreamException = ex; + state.SavedRequestStreamException = ex; } } private void ResponseCallback(IAsyncResult asynchronousResult) { - _responseCallbackCallCount++; + RequestState state = (RequestState) asynchronousResult.AsyncState; + state.ResponseCallbackCallCount++; try { - using (HttpWebResponse response = (HttpWebResponse)_savedHttpWebRequest.EndGetResponse(asynchronousResult)) + using (HttpWebResponse response = (HttpWebResponse) state.Request.EndGetResponse(asynchronousResult)) { - _savedResponseHeaders = response.Headers; + state.SavedResponseHeaders = response.Headers; } } catch (Exception ex) { - _savedResponseException = ex; + state.SavedResponseException = ex; } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] [Fact] public void HttpWebRequest_Serialize_Fails() { @@ -625,8 +617,30 @@ public void HttpWebRequest_Serialize_Fails() BinaryFormatter formatter = new BinaryFormatter(); var hwr = HttpWebRequest.CreateHttp("http://localhost"); - Assert.Throws(() => formatter.Serialize(fs, hwr)); + if (PlatformDetection.IsFullFramework) + { + // .NET Framework throws a more detailed exception. + // System.Runtime.Serialization.SerializationException): + // Type 'System.Net.WebRequest+WebProxyWrapper' in Assembly 'System, Version=4.0.0. + // 0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. + Assert.Throws(() => formatter.Serialize(fs, hwr)); + } + else + { + Assert.Throws(() => formatter.Serialize(fs, hwr)); + } } } } + + public class RequestState + { + public HttpWebRequest Request; + public HttpWebResponse Response; + public WebHeaderCollection SavedResponseHeaders; + public int RequestStreamCallbackCallCount; + public int ResponseCallbackCallCount; + public Exception SavedRequestStreamException; + public Exception SavedResponseException; + } } diff --git a/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs b/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs index 5ec9f547dc79..fa89cda3e264 100644 --- a/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs +++ b/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs @@ -75,7 +75,6 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server, }); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] // Difference in behavior [OuterLoop] [Fact] public async Task HttpWebResponse_Close_Success() @@ -96,23 +95,34 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server, WebResponse response = await getResponse; HttpWebResponse httpResponse = (HttpWebResponse)response; httpResponse.Close(); - Assert.Throws(() => + if (PlatformDetection.IsFullFramework) { - httpResponse.GetResponseStream(); - }); + Stream stream = httpResponse.GetResponseStream(); + } + else + { + Assert.Throws(() => + { + httpResponse.GetResponseStream(); + }); + } }); } [Fact] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #17842")] // Hangs in Desktop - public async Task HttpWebResponse_Serialize_Fails() + public async Task HttpWebResponse_Serialize_ExpectedResult() { await LoopbackServer.CreateServerAsync(async (server, url) => { HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); - await LoopbackServer.ReadRequestAndSendResponseAsync(server, "HTTP/1.1 200 OK\r\n"); + DateTimeOffset utcNow = DateTimeOffset.UtcNow; + await LoopbackServer.ReadRequestAndSendResponseAsync(server, + $"HTTP/1.1 200 OK\r\n" + + $"Date: {utcNow:R}\r\n" + + "Content-Length: 0\r\n" + + "\r\n"); using (WebResponse response = await getResponse) { @@ -122,7 +132,14 @@ await LoopbackServer.CreateServerAsync(async (server, url) => BinaryFormatter formatter = new BinaryFormatter(); HttpWebResponse hwr = (HttpWebResponse)response; - Assert.Throws(() => formatter.Serialize(fs, hwr)); + if (PlatformDetection.IsFullFramework) + { + formatter.Serialize(fs, hwr); + } + else + { + Assert.Throws(() => formatter.Serialize(fs, hwr)); + } } } }); diff --git a/src/System.Net.Requests/tests/RequestStreamTest.cs b/src/System.Net.Requests/tests/RequestStreamTest.cs index 527aa75328c6..7e9898a7185d 100644 --- a/src/System.Net.Requests/tests/RequestStreamTest.cs +++ b/src/System.Net.Requests/tests/RequestStreamTest.cs @@ -11,11 +11,10 @@ namespace System.Net.Tests { - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "dotnet/corefx #16928")] //Test hang forever in desktop. public class RequestStreamTest { readonly byte[] buffer = new byte[1]; - + [Fact] public void WriteAsync_BufferIsNull_ThrowsArgumentNullException() { @@ -48,16 +47,41 @@ public void WriteAsync_OffsetPlusCountExceedsBufferLength_ThrowsArgumentExceptio { using (Stream stream = GetRequestStream()) { - Assert.Throws(() => { Task t = stream.WriteAsync(buffer, 0, buffer.Length+1); }); + // TODO: #18787 + if (PlatformDetection.IsFullFramework) + { + // In .NET Framework, the request stream is a System.Net.ConnectStream + // which throws ArgumentOutOfRangeException in this case. + Assert.Throws(() => { Task t = stream.WriteAsync(buffer, 0, buffer.Length+1); }); + } + else + { + // In .NET Core, the request stream is a System.IO.MemoryStream + // which throws ArgumentException in this case. + Assert.Throws(() => { Task t = stream.WriteAsync(buffer, 0, buffer.Length+1); }); + } } } [Fact] - public void WriteAsync_OffsetPlusCountMaxValueExceedsBufferLength_ThrowsArgumentException() + public void WriteAsync_OffsetPlusCountMaxValueExceedsBufferLength_Throws() { using (Stream stream = GetRequestStream()) { - Assert.Throws(() => { Task t = stream.WriteAsync(buffer, int.MaxValue, int.MaxValue); }); + // TODO: #18787 + if (PlatformDetection.IsFullFramework) + { + // In .NET Framework, the request stream is a System.Net.ConnectStream + // which throws ArgumentOutOfRangeException in this case. + Assert.Throws(() => { Task t = stream.WriteAsync(buffer, int.MaxValue, int.MaxValue); }); + + } + else + { + // In .NET Core, the request stream is a System.IO.MemoryStream + // which throws ArgumentException in this case. + Assert.Throws(() => { Task t = stream.WriteAsync(buffer, int.MaxValue, int.MaxValue); }); + } } } @@ -93,6 +117,7 @@ public void FlushAsync_TaskRanToCompletion() } } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "cancellation token ignored on netfx")] [Fact] public void FlushAsync_TokenIsCanceled_TaskIsCanceled() { From 43213acb42669dea83f8e44db2d11a3e82c497ec Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Sun, 23 Apr 2017 20:15:21 -0700 Subject: [PATCH 327/336] Update CoreFx, ProjectNTfs, ProjectNTfsTestILC to preview2-25224-01, beta-25224-00, beta-25224-00, respectively --- dependencies.props | 14 +++++++------- external/test-runtime/optional.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dependencies.props b/dependencies.props index 8b7caedf54a7..1994a5f1bd38 100644 --- a/dependencies.props +++ b/dependencies.props @@ -9,23 +9,23 @@ These ref versions are pulled from https://github.com/dotnet/versions. --> - 70c2cfd9f1be592ed5d2f895dfe2e35f115d29de + 02b874feaab181629c42ac046a6723d3e28eb5e6 48ef31b26c4b2c572204042942aac4ae3fad1d11 3b8a99621d89ad9877f053ba8af25e0f25dcd9d8 - e84480e8160b65a59a4868ed5cddbba30f34b976 - e84480e8160b65a59a4868ed5cddbba30f34b976 + 02b874feaab181629c42ac046a6723d3e28eb5e6 + 02b874feaab181629c42ac046a6723d3e28eb5e6 05650e53f2aa4497f74cd6e9b053d3f69f64b0bd 8d639b24570e06cd1d8fbefb44cad1d5118e7596 - preview2-25222-02 + preview2-25224-01 preview2-25223-02 beta-25016-01 - beta-25221-00 - beta-25221-00 - 1.0.0-beta-25221-00 + beta-25224-00 + beta-25224-00 + 1.0.0-beta-25224-00 2.0.0-preview1-25221-03 NETStandard.Library diff --git a/external/test-runtime/optional.json b/external/test-runtime/optional.json index d9477b7d7b28..497ce8823679 100644 --- a/external/test-runtime/optional.json +++ b/external/test-runtime/optional.json @@ -4,7 +4,7 @@ "dependencies": { "Microsoft.DotNet.IBCMerge": "4.6.0-alpha-00001", "Microsoft.DotNet.UAP.TestTools": "1.0.2", - "TestILCNugetPackageForCoreFX": "1.0.0-beta-25221-00" + "TestILCNugetPackageForCoreFX": "1.0.0-beta-25224-00" } } } From 2de25f81e3e9afa38359d92015fc25706bc059d8 Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 24 Apr 2017 17:28:00 +0200 Subject: [PATCH 328/336] DataAnnotations removed (#18841) --- src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt index 5a24c83eff00..492b017a3f40 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.txt @@ -22,8 +22,6 @@ MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.g MembersMustExist : Member 'System.CodeDom.Compiler.CompilerParameters.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.CodeDom.Compiler.CompilerResults.Evidence.set(System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Compat issues with assembly System.ComponentModel.DataAnnotations: -MembersMustExist : Member 'System.ComponentModel.DataAnnotations.ValidationContext.ServiceContainer.get()' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Data: MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'Microsoft.SqlServer.Server.SqlMetaData..ctor(System.String, System.Data.SqlDbType, System.Type, System.String)' does not exist in the implementation but it does exist in the contract. @@ -93,4 +91,4 @@ MembersMustExist : Member 'System.Data.SqlClient.SqlParameterCollection.Add(Syst Compat issues with assembly System.Xml: MembersMustExist : Member 'System.Xml.Xsl.XslCompiledTransform.TemporaryFiles.get()' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'System.Xml.Xsl.XslTransform.Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver, System.Security.Policy.Evidence)' does not exist in the implementation but it does exist in the contract. -Total Issues: 83 +Total Issues: 82 From da637082d67bff0eb0681b7813343db5f011a3eb Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Mon, 24 Apr 2017 17:57:03 +0200 Subject: [PATCH 329/336] Removed _Interface TypesMustExist (#18843) --- ...patBaseline.netcoreapp.netfx461.ignore.txt | 31 ------------------- 1 file changed, 31 deletions(-) diff --git a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt index 98c4b1f1539e..199b6b99214a 100644 --- a/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt +++ b/src/shims/ApiCompatBaseline.netcoreapp.netfx461.ignore.txt @@ -175,37 +175,6 @@ MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.DefinePInvokeMetho MembersMustExist : Member 'System.Reflection.Emit.TypeBuilder.TypeToken.get()' does not exist in the implementation but it does exist in the contract. // Interfaces were intentional removals -TypesMustExist : Type 'System.Runtime.InteropServices._Activator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Assembly' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._AssemblyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._AssemblyName' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Attribute' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ConstructorBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ConstructorInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._CustomAttributeBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EnumBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EventBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._EventInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Exception' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._FieldBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._FieldInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ILGenerator' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._LocalBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MemberInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodBase' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._MethodRental' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Module' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ModuleBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ParameterBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._ParameterInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._PropertyBuilder' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._PropertyInfo' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._SignatureHelper' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Thread' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._Type' does not exist in the implementation but it does exist in the contract. -TypesMustExist : Type 'System.Runtime.InteropServices._TypeBuilder' does not exist in the implementation but it does exist in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Net.NetworkInformation.PingException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.AccessViolationException' does not implement interface 'System.Runtime.InteropServices._Exception' in the implementation but it does in the contract. CannotRemoveBaseTypeOrInterface : Type 'System.Activator' does not implement interface 'System.Runtime.InteropServices._Activator' in the implementation but it does in the contract. From c5f16cb9cbe9f78d8911f726b725f453476df952 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Mon, 24 Apr 2017 11:25:52 -0700 Subject: [PATCH 330/336] Address PR feedback --- src/System.Net.Requests/tests/FileWebRequestTest.cs | 2 +- src/System.Net.Requests/tests/GlobalProxySelectionTest.cs | 3 +++ src/System.Net.Requests/tests/HttpWebRequestTest.cs | 1 + src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs | 3 +++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/System.Net.Requests/tests/FileWebRequestTest.cs b/src/System.Net.Requests/tests/FileWebRequestTest.cs index d0de43d8c5c8..d9e882cdc4f6 100644 --- a/src/System.Net.Requests/tests/FileWebRequestTest.cs +++ b/src/System.Net.Requests/tests/FileWebRequestTest.cs @@ -229,7 +229,7 @@ public async Task BeginGetResponse_OnNonexistentFile_ShouldNotCrashApplication(b public abstract class AsyncFileWebRequestTestBase : FileWebRequestTestBase { - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "concurrent read/write not supported on netfx")] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Concurrent read/write only supported on .NET Core via PR 12231")] [Fact] public async Task ConcurrentReadWrite_ResponseBlocksThenGetsNullStream() { diff --git a/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs b/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs index f9278da621a3..7947624eb3eb 100644 --- a/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs +++ b/src/System.Net.Requests/tests/GlobalProxySelectionTest.cs @@ -49,6 +49,9 @@ public void Select_Success() Assert.NotNull(GlobalProxySelection.Select); if (!PlatformDetection.IsFullFramework) { + // On .NET Framework, the default value for Select property + // is an internal WebRequest.WebProxyWrapper object which + // works similarly to DefaultWebProxy but is not the same object. Assert.Equal(GlobalProxySelection.Select, WebRequest.DefaultWebProxy); } #pragma warning restore 0618 diff --git a/src/System.Net.Requests/tests/HttpWebRequestTest.cs b/src/System.Net.Requests/tests/HttpWebRequestTest.cs index d26b9da09f13..48985c4a23fa 100644 --- a/src/System.Net.Requests/tests/HttpWebRequestTest.cs +++ b/src/System.Net.Requests/tests/HttpWebRequestTest.cs @@ -627,6 +627,7 @@ public void HttpWebRequest_Serialize_Fails() } else { + // TODO: Issue #18850. Change HttpWebRquest to throw SerializationException similar to .NET Framework. Assert.Throws(() => formatter.Serialize(fs, hwr)); } } diff --git a/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs b/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs index fa89cda3e264..67155869edee 100644 --- a/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs +++ b/src/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs @@ -101,6 +101,8 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server, } else { + // TODO: Issue #18851. Investigate .NET Core to see if it can + // match .NET Framework. Assert.Throws(() => { httpResponse.GetResponseStream(); @@ -138,6 +140,7 @@ await LoopbackServer.ReadRequestAndSendResponseAsync(server, } else { + // HttpWebResponse is not serializable on .NET Core. Assert.Throws(() => formatter.Serialize(fs, hwr)); } } From 9f6c671268d1918e5da934334a7bbd1e9197b1c2 Mon Sep 17 00:00:00 2001 From: "Eric St. John" Date: Mon, 24 Apr 2017 11:25:55 -0700 Subject: [PATCH 331/336] Remove duplicate TFM in runtime framework packages In refactoring these targets for the desktop support package I broke the targetpath for lib files. --- pkg/frameworkPackage.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/frameworkPackage.targets b/pkg/frameworkPackage.targets index 6945d9c9a38a..cb3749a33d50 100644 --- a/pkg/frameworkPackage.targets +++ b/pkg/frameworkPackage.targets @@ -76,7 +76,7 @@ - $(LibFileTargetPath)$(TargetFramework)%(LibFile.SubFolder) + $(LibFileTargetPath)%(LibFile.SubFolder) From ccacee478276087550ea0e4ff318cc30ea11e9bb Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Mon, 24 Apr 2017 11:39:09 -0700 Subject: [PATCH 332/336] disable tests related to issue 18690 --- .../AES/AesContractTests.cs | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/AES/AesContractTests.cs b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/AES/AesContractTests.cs index 25ac45154895..48c57c39dacb 100644 --- a/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/AES/AesContractTests.cs +++ b/src/Common/tests/System/Security/Cryptography/AlgorithmImplementations/AES/AesContractTests.cs @@ -59,12 +59,16 @@ public static void LegalKeySizes() } [Theory] - [InlineData(64)] // too small - [InlineData(129)] // in valid range but not valid increment - [InlineData(384)] // too large - [InlineData(536870928)] // number of bits overflows and wraps around to a valid size - public static void InvalidKeySizes(int invalidKeySize) + [InlineData(64, false)] // too small + [InlineData(129, false)] // in valid range but not valid increment + [InlineData(384, false)] // too large + // Skip on netfx because change is not ported https://github.com/dotnet/corefx/issues/18690 + [InlineData(536870928, true)] // number of bits overflows and wraps around to a valid size + public static void InvalidKeySizes(int invalidKeySize, bool skipOnNetfx) { + if (skipOnNetfx && PlatformDetection.IsFullFramework) + return; + using (Aes aes = AesFactory.Create()) { // Test KeySize property @@ -83,19 +87,23 @@ public static void InvalidKeySizes(int invalidKeySize) return; } Exception e = Record.Exception(() => aes.CreateEncryptor(key, iv)); - Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {e}"); + Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {(e?.ToString() ?? "null")}"); e = Record.Exception(() => aes.CreateDecryptor(key, iv)); - Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {e}"); + Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {(e?.ToString() ?? "null")}"); } } [Theory] - [InlineData(64)] // smaller than default BlockSize - [InlineData(129)] // larger than default BlockSize - [InlineData(536870928)] // number of bits overflows and wraps around to default BlockSize - public static void InvalidIVSizes(int invalidIvSize) + [InlineData(64, false)] // smaller than default BlockSize + [InlineData(129, false)] // larger than default BlockSize + // Skip on netfx because change is not ported https://github.com/dotnet/corefx/issues/18690 + [InlineData(536870928, true)] // number of bits overflows and wraps around to default BlockSize + public static void InvalidIVSizes(int invalidIvSize, bool skipOnNetfx) { + if (skipOnNetfx && PlatformDetection.IsFullFramework) + return; + using (Aes aes = AesFactory.Create()) { aes.GenerateKey(); @@ -109,11 +117,12 @@ public static void InvalidIVSizes(int invalidIvSize) { return; } + Exception e = Record.Exception(() => aes.CreateEncryptor(key, iv)); - Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {e}"); + Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {(e?.ToString() ?? "null")}"); e = Record.Exception(() => aes.CreateDecryptor(key, iv)); - Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {e}"); + Assert.True(e is ArgumentException || e is OutOfMemoryException, $"Got {(e?.ToString() ?? "null")}"); } } From e3114a8748ef9945b21ed0f11c72c0bc3f7f74e0 Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Mon, 24 Apr 2017 12:41:24 -0700 Subject: [PATCH 333/336] Don't run DebugView/DebuggerAttribute tests in aot. (#18840) * Don't run DebugView/DebuggerAttribute tests in aot. This is a big bucket of tests that inherently depend on private framework Reflection and will never work on .Net Native. The proper way to test these is by using the debugger expression evaluator, not Reflection. --- src/System.Linq/tests/Configurations.props | 3 +- .../tests/GroupByTests.DebuggerAttributes.cs | 58 ++++++++++++++++++ src/System.Linq/tests/GroupByTests.cs | 46 +------------- .../tests/System.Linq.Tests.csproj | 18 ++++-- .../tests/ToLookupTests.DebuggerAttributes.cs | 60 +++++++++++++++++++ src/System.Linq/tests/ToLookupTests.cs | 47 +-------------- 6 files changed, 136 insertions(+), 96 deletions(-) create mode 100644 src/System.Linq/tests/GroupByTests.DebuggerAttributes.cs create mode 100644 src/System.Linq/tests/ToLookupTests.DebuggerAttributes.cs diff --git a/src/System.Linq/tests/Configurations.props b/src/System.Linq/tests/Configurations.props index 8b803e0772f2..203992ff0e58 100644 --- a/src/System.Linq/tests/Configurations.props +++ b/src/System.Linq/tests/Configurations.props @@ -4,6 +4,7 @@ netcoreapp; netstandard; + uapaot; - \ No newline at end of file + diff --git a/src/System.Linq/tests/GroupByTests.DebuggerAttributes.cs b/src/System.Linq/tests/GroupByTests.DebuggerAttributes.cs new file mode 100644 index 000000000000..1f5614541f5d --- /dev/null +++ b/src/System.Linq/tests/GroupByTests.DebuggerAttributes.cs @@ -0,0 +1,58 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using Xunit; + +namespace System.Linq.Tests +{ + public partial class GroupByTests : EnumerableTests + { + [Theory] + [MemberData(nameof(DebuggerAttributesValid_Data))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Grouping doesn't have a Debugger proxy in the full .NET Framework. See https://github.com/dotnet/corefx/issues/14790.")] + public void DebuggerAttributesValid(IGrouping grouping, string keyString, TKey dummy1, TElement dummy2) + { + // The dummy parameters can be removed once https://github.com/dotnet/buildtools/pull/1300 is brought in. + Assert.Equal($"Key = {keyString}", DebuggerAttributes.ValidateDebuggerDisplayReferences(grouping)); + + object proxyObject = DebuggerAttributes.GetProxyObject(grouping); + + // Validate proxy fields + Assert.Empty(DebuggerAttributes.GetDebuggerVisibleFields(proxyObject.GetType())); + + // Validate proxy properties + IEnumerable properties = DebuggerAttributes.GetDebuggerVisibleProperties(proxyObject.GetType()); + Assert.Equal(2, properties.Count()); + + // Key + TKey key = (TKey)properties.Single(property => property.Name == "Key").GetValue(proxyObject); + Assert.Equal(grouping.Key, key); + + // Values + PropertyInfo valuesProperty = properties.Single(property => property.Name == "Values"); + Assert.Equal(DebuggerBrowsableState.RootHidden, DebuggerAttributes.GetDebuggerBrowsableState(valuesProperty)); + TElement[] values = (TElement[])valuesProperty.GetValue(proxyObject); + Assert.IsType(values); // Arrays can be covariant / of assignment-compatible types + Assert.Equal(grouping, values); + Assert.Same(values, valuesProperty.GetValue(proxyObject)); // The result should be cached, as Grouping is immutable. + } + + public static IEnumerable DebuggerAttributesValid_Data() + { + IEnumerable source = new[] { 1 }; + yield return new object[] { source.GroupBy(i => i).Single(), "1", 0, 0 }; + yield return new object[] { source.GroupBy(i => i.ToString(), i => i).Single(), @"""1""", string.Empty, 0 }; + yield return new object[] { source.GroupBy(i => TimeSpan.FromSeconds(i), i => i).Single(), "{00:00:01}", TimeSpan.Zero, 0 }; + + yield return new object[] { new string[] { null }.GroupBy(x => x).Single(), "null", string.Empty, string.Empty }; + // This test won't even work with the work-around because nullables lose their type once boxed, so xUnit sees an `int` and thinks + // we're trying to pass an IGrouping rather than an IGrouping. + // However, it should also be fixed once that PR is brought in, so leaving in this comment. + // yield return new object[] { new int?[] { null }.GroupBy(x => x).Single(), "null", new int?(0), new int?(0) }; + } + } +} diff --git a/src/System.Linq/tests/GroupByTests.cs b/src/System.Linq/tests/GroupByTests.cs index be12a60b0ed2..c8ffe4e87c75 100644 --- a/src/System.Linq/tests/GroupByTests.cs +++ b/src/System.Linq/tests/GroupByTests.cs @@ -9,7 +9,7 @@ namespace System.Linq.Tests { - public class GroupByTests : EnumerableTests + public partial class GroupByTests : EnumerableTests { public static void AssertGroupingCorrect(IEnumerable keys, IEnumerable elements, IEnumerable> grouping) { @@ -864,49 +864,5 @@ public static void GroupingKeyIsPublic() PropertyInfo key = grouptype.GetProperty("Key", BindingFlags.Instance | BindingFlags.Public); Assert.NotNull(key); } - - [Theory] - [MemberData(nameof(DebuggerAttributesValid_Data))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Grouping doesn't have a Debugger proxy in the full .NET Framework. See https://github.com/dotnet/corefx/issues/14790.")] - public void DebuggerAttributesValid(IGrouping grouping, string keyString, TKey dummy1, TElement dummy2) - { - // The dummy parameters can be removed once https://github.com/dotnet/buildtools/pull/1300 is brought in. - Assert.Equal($"Key = {keyString}", DebuggerAttributes.ValidateDebuggerDisplayReferences(grouping)); - - object proxyObject = DebuggerAttributes.GetProxyObject(grouping); - - // Validate proxy fields - Assert.Empty(DebuggerAttributes.GetDebuggerVisibleFields(proxyObject.GetType())); - - // Validate proxy properties - IEnumerable properties = DebuggerAttributes.GetDebuggerVisibleProperties(proxyObject.GetType()); - Assert.Equal(2, properties.Count()); - - // Key - TKey key = (TKey)properties.Single(property => property.Name == "Key").GetValue(proxyObject); - Assert.Equal(grouping.Key, key); - - // Values - PropertyInfo valuesProperty = properties.Single(property => property.Name == "Values"); - Assert.Equal(DebuggerBrowsableState.RootHidden, DebuggerAttributes.GetDebuggerBrowsableState(valuesProperty)); - TElement[] values = (TElement[])valuesProperty.GetValue(proxyObject); - Assert.IsType(values); // Arrays can be covariant / of assignment-compatible types - Assert.Equal(grouping, values); - Assert.Same(values, valuesProperty.GetValue(proxyObject)); // The result should be cached, as Grouping is immutable. - } - - public static IEnumerable DebuggerAttributesValid_Data() - { - IEnumerable source = new[] { 1 }; - yield return new object[] { source.GroupBy(i => i).Single(), "1", 0, 0 }; - yield return new object[] { source.GroupBy(i => i.ToString(), i => i).Single(), @"""1""", string.Empty, 0 }; - yield return new object[] { source.GroupBy(i => TimeSpan.FromSeconds(i), i => i).Single(), "{00:00:01}", TimeSpan.Zero, 0 }; - - yield return new object[] { new string[] { null }.GroupBy(x => x).Single(), "null", string.Empty, string.Empty }; - // This test won't even work with the work-around because nullables lose their type once boxed, so xUnit sees an `int` and thinks - // we're trying to pass an IGrouping rather than an IGrouping. - // However, it should also be fixed once that PR is brought in, so leaving in this comment. - // yield return new object[] { new int?[] { null }.GroupBy(x => x).Single(), "null", new int?(0), new int?(0) }; - } } } diff --git a/src/System.Linq/tests/System.Linq.Tests.csproj b/src/System.Linq/tests/System.Linq.Tests.csproj index 14a09fe500eb..ff1790ac3239 100644 --- a/src/System.Linq/tests/System.Linq.Tests.csproj +++ b/src/System.Linq/tests/System.Linq.Tests.csproj @@ -9,6 +9,8 @@ + + @@ -34,7 +36,6 @@ - @@ -79,9 +80,6 @@ Common\System\AssertExtensions.cs - - Common\System\Diagnostics\DebuggerAttributes.cs - Common\System\PlatformDetection.cs @@ -89,6 +87,18 @@ Common\System\Linq\SkipTakeData.cs + + + + + Common\System\Diagnostics\DebuggerAttributes.cs + + + + + + diff --git a/src/System.Linq/tests/ToLookupTests.DebuggerAttributes.cs b/src/System.Linq/tests/ToLookupTests.DebuggerAttributes.cs new file mode 100644 index 000000000000..896474becbfc --- /dev/null +++ b/src/System.Linq/tests/ToLookupTests.DebuggerAttributes.cs @@ -0,0 +1,60 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using Xunit; + +namespace System.Linq.Tests +{ + public partial class ToLookupTests : EnumerableTests + { + [Theory] + [MemberData(nameof(DebuggerAttributesValid_Data))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Lookup doesn't have a Debugger proxy in the full .NET framework. See https://github.com/dotnet/corefx/issues/14790.")] + public void DebuggerAttributesValid(ILookup lookup, TKey dummy1, TElement dummy2) + { + // The dummy parameters can be removed once https://github.com/dotnet/buildtools/pull/1300 is brought in. + Assert.Equal($"Count = {lookup.Count}", DebuggerAttributes.ValidateDebuggerDisplayReferences(lookup)); + + object proxyObject = DebuggerAttributes.GetProxyObject(lookup); + + // Validate proxy fields + Assert.Empty(DebuggerAttributes.GetDebuggerVisibleFields(proxyObject.GetType())); + + // Validate proxy properties + IEnumerable properties = DebuggerAttributes.GetDebuggerVisibleProperties(proxyObject.GetType()); + Assert.Equal(1, properties.Count()); + + // Groupings + PropertyInfo groupingsProperty = properties.Single(property => property.Name == "Groupings"); + Assert.Equal(DebuggerBrowsableState.RootHidden, DebuggerAttributes.GetDebuggerBrowsableState(groupingsProperty)); + var groupings = (IGrouping[])groupingsProperty.GetValue(proxyObject); + Assert.IsType[]>(groupings); // Arrays can be covariant / of assignment-compatible types + + Assert.All(groupings.Zip(lookup, (l, r) => Tuple.Create(l, r)), tuple => + { + Assert.Same(tuple.Item1, tuple.Item2); + }); + + Assert.Same(groupings, groupingsProperty.GetValue(proxyObject)); // The result should be cached, as Lookup is immutable. + } + + public static IEnumerable DebuggerAttributesValid_Data() + { + IEnumerable source = new[] { 1 }; + yield return new object[] { source.ToLookup(i => i), 0, 0 }; + yield return new object[] { source.ToLookup(i => i.ToString(), i => i), string.Empty, 0 }; + yield return new object[] { source.ToLookup(i => TimeSpan.FromSeconds(i), i => i), TimeSpan.Zero, 0 }; + + yield return new object[] { new string[] { null }.ToLookup(x => x), string.Empty, string.Empty }; + // This test won't even work with the work-around because nullables lose their type once boxed, so xUnit sees an `int` and thinks + // we're trying to pass an ILookup rather than an ILookup. + // However, it should also be fixed once that PR is brought in, so leaving in this comment. + // yield return new object[] { new int?[] { null }.ToLookup(x => x), new int?(0), new int?(0) }; + } + } +} diff --git a/src/System.Linq/tests/ToLookupTests.cs b/src/System.Linq/tests/ToLookupTests.cs index 9849ddbdf259..262dadf4a574 100644 --- a/src/System.Linq/tests/ToLookupTests.cs +++ b/src/System.Linq/tests/ToLookupTests.cs @@ -10,7 +10,7 @@ namespace System.Linq.Tests { - public class ToLookupTests : EnumerableTests + public partial class ToLookupTests : EnumerableTests { private static void AssertMatches(IEnumerable keys, IEnumerable elements, System.Linq.ILookup lookup) { @@ -290,51 +290,6 @@ public void ApplyResultSelectorForGroup(int enumType) Assert.Equal(expected, result); } - [Theory] - [MemberData(nameof(DebuggerAttributesValid_Data))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Lookup doesn't have a Debugger proxy in the full .NET framework. See https://github.com/dotnet/corefx/issues/14790.")] - public void DebuggerAttributesValid(ILookup lookup, TKey dummy1, TElement dummy2) - { - // The dummy parameters can be removed once https://github.com/dotnet/buildtools/pull/1300 is brought in. - Assert.Equal($"Count = {lookup.Count}", DebuggerAttributes.ValidateDebuggerDisplayReferences(lookup)); - - object proxyObject = DebuggerAttributes.GetProxyObject(lookup); - - // Validate proxy fields - Assert.Empty(DebuggerAttributes.GetDebuggerVisibleFields(proxyObject.GetType())); - - // Validate proxy properties - IEnumerable properties = DebuggerAttributes.GetDebuggerVisibleProperties(proxyObject.GetType()); - Assert.Equal(1, properties.Count()); - - // Groupings - PropertyInfo groupingsProperty = properties.Single(property => property.Name == "Groupings"); - Assert.Equal(DebuggerBrowsableState.RootHidden, DebuggerAttributes.GetDebuggerBrowsableState(groupingsProperty)); - var groupings = (IGrouping[])groupingsProperty.GetValue(proxyObject); - Assert.IsType[]>(groupings); // Arrays can be covariant / of assignment-compatible types - - Assert.All(groupings.Zip(lookup, (l, r) => Tuple.Create(l, r)), tuple => - { - Assert.Same(tuple.Item1, tuple.Item2); - }); - - Assert.Same(groupings, groupingsProperty.GetValue(proxyObject)); // The result should be cached, as Lookup is immutable. - } - - public static IEnumerable DebuggerAttributesValid_Data() - { - IEnumerable source = new[] { 1 }; - yield return new object[] { source.ToLookup(i => i), 0, 0 }; - yield return new object[] { source.ToLookup(i => i.ToString(), i => i), string.Empty, 0 }; - yield return new object[] { source.ToLookup(i => TimeSpan.FromSeconds(i), i => i), TimeSpan.Zero, 0 }; - - yield return new object[] { new string[] { null }.ToLookup(x => x), string.Empty, string.Empty }; - // This test won't even work with the work-around because nullables lose their type once boxed, so xUnit sees an `int` and thinks - // we're trying to pass an ILookup rather than an ILookup. - // However, it should also be fixed once that PR is brought in, so leaving in this comment. - // yield return new object[] { new int?[] { null }.ToLookup(x => x), new int?(0), new int?(0) }; - } - public class Membership { public int Id { get; set; } From b3a7416a0f55f42f391d9af3a89b3eb2c7d333a5 Mon Sep 17 00:00:00 2001 From: Omar Tawfik Date: Mon, 24 Apr 2017 12:53:54 -0700 Subject: [PATCH 334/336] Add type forwarders for newly added types in System.Runtime.CompilerServices (#18637) --- src/System.Runtime/ref/System.Runtime.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/System.Runtime/ref/System.Runtime.cs b/src/System.Runtime/ref/System.Runtime.cs index fdc4b5badb9e..eff86dbc8496 100644 --- a/src/System.Runtime/ref/System.Runtime.cs +++ b/src/System.Runtime/ref/System.Runtime.cs @@ -6488,7 +6488,16 @@ public enum LoadHint Default = 0, Sometimes = 2, } - + public static class RuntimeFeature + { + public static bool IsSupported(string feature) { throw null; } + } + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + [AttributeUsage(AttributeTargets.All, Inherited = false)] + public sealed class IsReadOnlyAttribute : Attribute + { + public IsReadOnlyAttribute() { } + } public sealed partial class RuntimeWrappedException : System.Exception { internal RuntimeWrappedException() { } From d21440a009e40814a575da27088e957d6b71810b Mon Sep 17 00:00:00 2001 From: Atsushi Kanamori Date: Mon, 24 Apr 2017 13:15:35 -0700 Subject: [PATCH 335/336] Fix System.Runtime.Numerics.Tests on UWPAOT (#18844) - Tests that attempt white-box testing by poking into framework internals should: - Degrade gracefully when other frameworks don't implement your internal types. - Not put the retrieval code in a class constructor. --- .../tests/BigInteger/BigIntTools.cs | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/System.Runtime.Numerics/tests/BigInteger/BigIntTools.cs b/src/System.Runtime.Numerics/tests/BigInteger/BigIntTools.cs index ef058aba8a72..40566353b709 100644 --- a/src/System.Runtime.Numerics/tests/BigInteger/BigIntTools.cs +++ b/src/System.Runtime.Numerics/tests/BigInteger/BigIntTools.cs @@ -35,15 +35,31 @@ public static string BuildRandomNumber(int maxdigits, int seed) } } - private static readonly TypeInfo s_internalCalculator = - typeof(BigInteger).GetTypeInfo() - .Assembly - .GetType("System.Numerics.BigIntegerCalculator") - .GetTypeInfo(); + private static TypeInfo InternalCalculator + { + get + { + if (s_lazyInternalCalculator == null) + { + Type t = typeof(BigInteger).Assembly.GetType("System.Numerics.BigIntegerCalculator"); + if (t != null) + { + s_lazyInternalCalculator = t.GetTypeInfo(); + } + } + return s_lazyInternalCalculator; + } + } + + private static volatile TypeInfo s_lazyInternalCalculator; public static void RunWithFakeThreshold(string name, int value, Action action) { - FieldInfo field = s_internalCalculator.GetDeclaredField(name); + TypeInfo internalCalculator = InternalCalculator; + if (internalCalculator == null) + return; // Internal frame types are not reflectable on AoT platforms. Skip the test. + + FieldInfo field = internalCalculator.GetDeclaredField(name); int lastValue = (int)field.GetValue(null); field.SetValue(null, value); try From e01425087e32323bf5d4abf06da4880ca741d4e5 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Thu, 13 Apr 2017 10:28:53 -0500 Subject: [PATCH 336/336] Add symbol publish (index/archive) build leg Remove unused variable PB_SymbolsBuildIdRoot --- .../DotNet-CoreFx-Trusted-Windows-NoTest.json | 46 +-- .../DotNet-CoreFx-Trusted-Windows.json | 46 +-- .../DotNet-Trusted-Publish-Symbols.json | 276 ++++++++++++++++++ buildpipeline/pipeline.json | 27 ++ 4 files changed, 307 insertions(+), 88 deletions(-) create mode 100644 buildpipeline/DotNet-Trusted-Publish-Symbols.json diff --git a/buildpipeline/DotNet-CoreFx-Trusted-Windows-NoTest.json b/buildpipeline/DotNet-CoreFx-Trusted-Windows-NoTest.json index 24e6284b1058..bd90bb93fab4 100644 --- a/buildpipeline/DotNet-CoreFx-Trusted-Windows-NoTest.json +++ b/buildpipeline/DotNet-CoreFx-Trusted-Windows-NoTest.json @@ -187,7 +187,7 @@ "enabled": true, "continueOnError": false, "alwaysRun": false, - "displayName": "Publish symbols path: \\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", + "displayName": "Index symbol sources", "timeoutInMinutes": 0, "task": { "id": "0675668a-7bba-4ccb-901d-5ad6554ca653", @@ -195,7 +195,7 @@ "definitionType": "task" }, "inputs": { - "SymbolsPath": "\\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", + "SymbolsPath": "", "SearchPattern": "corefx\\bin\\*$(PB_Platform).$(PB_ConfigurationGroup)\\**\\*.pdb", "SymbolsFolder": "", "SkipIndexing": "false", @@ -206,45 +206,6 @@ "SymbolsArtifactName": "Symbols_$(PB_ConfigurationGroup)" } }, - { - "enabled": true, - "continueOnError": false, - "alwaysRun": false, - "displayName": "Index symbols on http://symweb", - "timeoutInMinutes": 0, - "task": { - "id": "af503aa3-9d06-44b6-a549-d063a544a5c5", - "versionSpec": "1.*", - "definitionType": "task" - }, - "inputs": { - "symbolStore": "\\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", - "contacts": "jhendrix;mawilkie", - "project": "DDE" - } - }, - { - "enabled": true, - "continueOnError": false, - "alwaysRun": false, - "displayName": "Publish to Symbols to Artifact Services", - "timeoutInMinutes": 0, - "task": { - "id": "29827cd1-5c33-4ff0-a817-abd46970ffc4", - "versionSpec": "0.*", - "definitionType": "task" - }, - "inputs": { - "symbolServiceURI": "https://devdiv.artifacts.visualstudio.com/DefaultCollection", - "requestName": "$(system.teamProject)/$(Build.BuildNumber)/$(Build.BuildId)", - "sourcePath": "$(Build.SourcesDirectory)\\corefx\\bin", - "assemblyPath": "", - "toLowerCase": "true", - "detailedLog": "true", - "expirationInDays": "", - "usePat": "true" - } - }, { "enabled": true, "continueOnError": false, @@ -403,9 +364,6 @@ "PB_CleanAgent": { "value": "true" }, - "PB_SymbolsBuildIdRoot": { - "value": "DotNet-CoreFx-" - }, "PB_SyncArguments": { "value": "-p -- /p:ArchGroup=x64 /p:RuntimeOS=win10", "allowOverride": true diff --git a/buildpipeline/DotNet-CoreFx-Trusted-Windows.json b/buildpipeline/DotNet-CoreFx-Trusted-Windows.json index e4fa0749b350..ccb569b52a43 100644 --- a/buildpipeline/DotNet-CoreFx-Trusted-Windows.json +++ b/buildpipeline/DotNet-CoreFx-Trusted-Windows.json @@ -232,7 +232,7 @@ "enabled": true, "continueOnError": false, "alwaysRun": false, - "displayName": "Publish symbols path: \\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", + "displayName": "Index symbol sources", "timeoutInMinutes": 0, "task": { "id": "0675668a-7bba-4ccb-901d-5ad6554ca653", @@ -240,7 +240,7 @@ "definitionType": "task" }, "inputs": { - "SymbolsPath": "\\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", + "SymbolsPath": "", "SearchPattern": "corefx\\bin\\*$(PB_Platform).$(PB_ConfigurationGroup)\\**\\*.pdb", "SymbolsFolder": "", "SkipIndexing": "false", @@ -251,45 +251,6 @@ "SymbolsArtifactName": "Symbols_$(PB_ConfigurationGroup)" } }, - { - "enabled": true, - "continueOnError": false, - "alwaysRun": false, - "displayName": "Index symbols on http://symweb", - "timeoutInMinutes": 0, - "task": { - "id": "af503aa3-9d06-44b6-a549-d063a544a5c5", - "versionSpec": "1.*", - "definitionType": "task" - }, - "inputs": { - "symbolStore": "\\\\cpvsbuild\\drops\\DotNetCore\\$(PB_SymbolsBuildIdRoot)$(System.DefinitionId)\\$(Build.BuildNumber)\\symbols", - "contacts": "jhendrix;mawilkie", - "project": "DDE" - } - }, - { - "enabled": true, - "continueOnError": false, - "alwaysRun": false, - "displayName": "Publish to Symbols to Artifact Services", - "timeoutInMinutes": 0, - "task": { - "id": "29827cd1-5c33-4ff0-a817-abd46970ffc4", - "versionSpec": "0.*", - "definitionType": "task" - }, - "inputs": { - "symbolServiceURI": "https://devdiv.artifacts.visualstudio.com/DefaultCollection", - "requestName": "$(system.teamProject)/$(Build.BuildNumber)/$(Build.BuildId)", - "sourcePath": "$(Build.SourcesDirectory)\\corefx\\bin", - "assemblyPath": "", - "toLowerCase": "true", - "detailedLog": "true", - "expirationInDays": "", - "usePat": "true" - } - }, { "enabled": true, "continueOnError": false, @@ -457,9 +418,6 @@ "PB_CleanAgent": { "value": "true" }, - "PB_SymbolsBuildIdRoot": { - "value": "DotNet-CoreFx-" - }, "PB_SyncArguments": { "value": "-p -- /p:ArchGroup=x64 /p:RuntimeOS=win10", "allowOverride": true diff --git a/buildpipeline/DotNet-Trusted-Publish-Symbols.json b/buildpipeline/DotNet-Trusted-Publish-Symbols.json new file mode 100644 index 000000000000..2e9afaf3149f --- /dev/null +++ b/buildpipeline/DotNet-Trusted-Publish-Symbols.json @@ -0,0 +1,276 @@ +{ + "build": [ + { + "enabled": true, + "continueOnError": false, + "alwaysRun": false, + "displayName": "Set up pipeline-specific git repository", + "timeoutInMinutes": 0, + "task": { + "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1", + "versionSpec": "1.*", + "definitionType": "task" + }, + "inputs": { + "scriptType": "inlineScript", + "scriptName": "", + "arguments": "-gitUrl $(PB_VstsRepoGitUrl) -root $(Pipeline.SourcesDirectory)", + "workingFolder": "", + "inlineScript": "param($gitUrl, $root)\n\nif (Test-Path $root)\n{\n Remove-Item -Recurse -Force $root\n}\ngit clone --no-checkout $gitUrl $root 2>&1 | Write-Host\ncd $root\ngit checkout $env:SourceVersion 2>&1 | Write-Host\n\nWrite-Host (\"##vso[task.setvariable variable=Pipeline.SourcesDirectory;]$root\")", + "failOnStandardError": "true" + } + }, + { + "enabled": true, + "continueOnError": false, + "alwaysRun": false, + "displayName": "sync -ab", + "timeoutInMinutes": 0, + "task": { + "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1", + "versionSpec": "1.*", + "definitionType": "task" + }, + "inputs": { + "scriptType": "inlineScript", + "scriptName": "", + "arguments": "$(PB_CloudDropAccountName) $(CloudDropAccessToken) $(PB_Label)", + "workingFolder": "$(Pipeline.SourcesDirectory)", + "inlineScript": "param($account, $token, $container)\n.\\sync.cmd -ab -- /p:CloudDropAccountName=$account /p:CloudDropAccessToken=$token /p:ContainerName=$container", + "failOnStandardError": "false" + } + }, + { + "enabled": true, + "continueOnError": false, + "alwaysRun": false, + "displayName": "Extract symbol packages; if release branch, archive", + "timeoutInMinutes": 0, + "task": { + "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1", + "versionSpec": "1.*", + "definitionType": "task" + }, + "inputs": { + "scriptType": "inlineScript", + "scriptName": "", + "arguments": "-ConfigGroup $(PB_ConfigurationGroup) -SymPkgGlob $(PB_AzureContainerSymbolPackageGlob) -Branch $(SourceBranch)", + "workingFolder": "$(Pipeline.SourcesDirectory)", + "inlineScript": "param($ConfigGroup, $SymPkgGlob, $Branch)\nif ($ConfigGroup -ne \"Release\") { exit }\n$archive = $Branch.StartsWith(\"release/\")\n\n$target = \"UnzipSymbolPackagesForPublish\"\nif ($archive) { $target = \"SubmitSymbolsRequest\" }\n\n.\\build-managed.cmd -- `\n/t:$target `\n/p:SymbolPackagesToPublishGlob=$SymPkgGlob `\n/p:ArchiveSymbols=$archive `\n/v:D", + "failOnStandardError": "true" + } + }, + { + "enabled": true, + "continueOnError": false, + "alwaysRun": false, + "displayName": "Publish Symbols to Artifact Services", + "timeoutInMinutes": 0, + "task": { + "id": "29827cd1-5c33-4ff0-a817-abd46970ffc4", + "versionSpec": "0.*", + "definitionType": "task" + }, + "inputs": { + "symbolServiceURI": "https://microsoft.artifacts.visualstudio.com/DefaultCollection", + "requestName": "$(system.teamProject)/$(Build.BuildNumber)/$(Build.BuildId)", + "sourcePath": "$(Pipeline.SourcesDirectory)\\bin\\obj\\SymbolsRequest\\ExtractedPackages", + "assemblyPath": "", + "toLowerCase": "true", + "detailedLog": "true", + "expirationInDays": "1", + "usePat": "false" + } + } + ], + "options": [ + { + "enabled": false, + "definition": { + "id": "5bc3cfb7-6b54-4a4b-b5d2-a3905949f8a6" + }, + "inputs": { + "additionalFields": "{}" + } + }, + { + "enabled": false, + "definition": { + "id": "7c555368-ca64-4199-add6-9ebaf0b0137d" + }, + "inputs": { + "multipliers": "[]", + "parallel": "false", + "continueOnError": "true", + "additionalFields": "{}" + } + }, + { + "enabled": false, + "definition": { + "id": "a9db38f9-9fdc-478c-b0f9-464221e58316" + }, + "inputs": { + "workItemType": "234347", + "assignToRequestor": "true", + "additionalFields": "{}" + } + }, + { + "enabled": false, + "definition": { + "id": "57578776-4c22-4526-aeb0-86b6da17ee9c" + }, + "inputs": { + "additionalFields": "{}" + } + } + ], + "variables": { + "system.debug": { + "value": "false", + "allowOverride": true + }, + "PB_ConfigurationGroup": { + "value": "Debug", + "allowOverride": true + }, + "PB_CloudDropAccountName": { + "value": "dotnetbuildoutput", + "allowOverride": true + }, + "CloudDropAccessToken": { + "value": null, + "allowOverride": true, + "isSecret": true + }, + "OfficialBuildId": { + "value": "$(Build.BuildNumber)", + "allowOverride": true + }, + "PB_Label": { + "value": "$(Build.BuildNumber)", + "allowOverride": true + }, + "PB_BuildConfiguration": { + "value": "release" + }, + "PB_BuildPlatform": { + "value": "any cpu" + }, + "Pipeline.SourcesDirectory": { + "value": "$(Build.BinariesDirectory)\\pipelineRepository" + }, + "PB_VstsAccountName": { + "value": "dagood" + }, + "PB_VstsRepositoryName": { + "value": "DotNet-CoreFX-Trusted", + "allowOverride": true + }, + "PB_VstsRepoGitUrl": { + "value": "https://$(PB_VstsAccountName):$(VstsRepoPat)@devdiv.visualstudio.com/DevDiv/_git/$(PB_VstsRepositoryName)/" + }, + "VstsRepoPat": { + "value": null, + "isSecret": true + }, + "SourceVersion": { + "value": "master", + "allowOverride": true + }, + "SourceBranch": { + "value": "master", + "allowOverride": true + }, + "PB_AzureContainerSymbolPackageGlob": { + "value": "$(Pipeline.SourcesDirectory)\\packages\\AzureTransfer\\$(PB_ConfigurationGroup)\\symbols\\*.nupkg", + "allowOverride": true + }, + "PB_DotNetCoreShareDir": { + "value": "passed-by-pipebuild", + "allowOverride": true + }, + "SymbolsProject": { + "value": "CLR" + }, + "SymbolsStatusMail": { + "value": "dagood;mawilkie" + }, + "SymbolsUserName": { + "value": "dlab" + }, + "SymbolsRelease": { + "value": "rtm" + }, + "SymbolsProductGroup": { + "value": "Visual_Studio" + }, + "SymbolsProductName": { + "value": "dotnetcore" + }, + "SymbolPublishDestinationDir": { + "value": "$(PB_DotNetCoreShareDir)\\$(PB_VstsRepositoryName)\\$(PB_Label)\\" + } + }, + "retentionRules": [ + { + "branches": [ + "+refs/heads/*" + ], + "artifacts": [], + "artifactTypesToDelete": [ + "FilePath", + "SymbolStore" + ], + "daysToKeep": 10, + "minimumToKeep": 1, + "deleteBuildRecord": true, + "deleteTestResults": true + } + ], + "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)", + "jobAuthorizationScope": "projectCollection", + "jobTimeoutInMinutes": 180, + "jobCancelTimeoutInMinutes": 5, + "repository": { + "properties": { + "labelSources": "0", + "reportBuildStatus": "false", + "fetchDepth": "0", + "gitLfsSupport": "false", + "skipSyncSource": "false", + "cleanOptions": "0", + "labelSourcesFormat": "$(build.buildNumber)" + }, + "id": "0a2b2664-c1be-429c-9b40-8a24dee27a4a", + "type": "TfsGit", + "name": "DotNet-BuildPipeline", + "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-BuildPipeline", + "defaultBranch": "refs/heads/master", + "clean": "true", + "checkoutSubmodules": false + }, + "processParameters": {}, + "quality": "definition", + "queue": { + "id": 36, + "name": "DotNet-Build", + "pool": { + "id": 39, + "name": "DotNet-Build" + } + }, + "id": -1, + "name": "DotNet-Trusted-Publish-Symbols", + "path": "\\", + "type": "build", + "project": { + "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee", + "name": "DevDiv", + "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ", + "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee", + "state": "wellFormed", + "revision": 418097642 + } +} \ No newline at end of file diff --git a/buildpipeline/pipeline.json b/buildpipeline/pipeline.json index 3ce7e8520d8c..2d5ece9d075e 100644 --- a/buildpipeline/pipeline.json +++ b/buildpipeline/pipeline.json @@ -959,6 +959,33 @@ "Trusted-All-Debug-Linux", "Trusted-All-Debug-Linux-Crossbuild" ] + }, + { + "Name": "Publish Symbols - Release", + "Parameters": { + "TreatWarningsAsErrors": "false" + }, + "BuildParameters": { + "PB_ConfigurationGroup": "Release" + }, + "Definitions": [ + { + "Name": "DotNet-Trusted-Publish-Symbols", + "Parameters": { + }, + "ReportingParameters": { + "TaskName": "Symbol Publish", + "Type": "build/publish/", + "ConfigurationGroup": "Release - Publish Symbols" + } + } + ], + "DependsOn": [ + "Trusted-All-Release-Windows", + "Trusted-All-Release-OSX", + "Trusted-All-Release-Linux", + "Trusted-All-Release-Linux-Crossbuild" + ] } ] }